#include <stdio.h> double fun(int m) { double fac, t=0.0; int i=1, j; for(i=1;i<=m;i++) { fac=1.0; /************found************/ for(j=1; j<=m; j++) fac=fac*j; /************found************/ t+=1.0/fac; } return t; } int main(void) { int m; scanf("%d", &m); printf("%12.10lf \n",fun(m)); return 0; } 哪里错了
时间: 2023-07-07 12:46:29 浏览: 108
在程序中计算阶乘的循环中,循环变量应该是从1到i,而不是从1到m。因为每次计算的是i的阶乘,而不是m的阶乘。修改后的程序如下:
```c
#include <stdio.h>
double fun(int m) {
double fac, t=0.0;
int i, j;
for(i=1;i<=m;i++) {
fac=1.0;
for(j=1; j<=i; j++) {
fac=fac*j;
}
t+=1.0/fac;
}
return t;
}
int main(void) {
int m;
scanf("%d", &m);
printf("%12.10lf \n",fun(m));
return 0;
}
```
修改后的程序中,内部循环变量`j`从1到i,计算i的阶乘。同时,外部循环变量`i`也需要在循环之前初始化。
相关问题
#include <stdio.h> int main() { double t
#include <stdio.h> 是C语言中的一个预处理指令,它告诉编译器在编译过程中要包含stdio.h头文件。stdio.h是标准输入输出库的头文件,其中包含了一些常用的输入输出函数的声明。
int main() 是C语言程序的入口函数,程序从这里开始执行。在这个函数中,你可以编写你的程序逻辑。
double t 是一个变量的声明,它的类型是double,表示它可以存储双精度浮点数。这个变量的名字是t。
C语言中#include <stdlib.h> #include <conio.h> #include <stdio.h> double fun(int m) {double t=1.0; int i; for(i=2;i<=m;i++) t+=1.0/i; return i; } void main() ( int m; system("CLS"); printf("\nPlease enter linteger number:"); scanf("%d",&m); printf("\nThe resultis %1f\n",fun(m)));
这段代码中有一个语法错误,函数fun的返回值类型应该是double,但是代码中返回的是整型变量i,应该改为返回变量t。另外,代码中的“;”符号也需要修改,应该改为英文的分号。
正确的代码如下所示:
```c
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
double fun(int m) {
double t = 1.0;
int i;
for(i = 2; i <= m; i++) {
t += 1.0 / i;
}
return t;
}
void main() {
int m;
system("CLS");
printf("\nPlease enter integer number:");
scanf("%d", &m);
printf("\nThe result is %1f\n", fun(m));
}
```
这段代码的功能是计算从2到m的分数和,其中m是用户输入的整数。函数fun的实现中使用了循环语句for来计算分数和,最后返回分数和的值。主函数main中调用函数fun,并输出计算结果。