#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 09:46:29 浏览: 161
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
在程序中计算阶乘的循环中,循环变量应该是从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`也需要在循环之前初始化。
阅读全文