/*------------------------------------------------------ 【程序改错】 -------------------------------------------------------- 题目:函数fun的功能是:求1到20的阶乘的和。 请改正程序中的错误,使它能得出正确的结果。 -------------------------------------------------------- 注意:不可以增加或删除程序行,也不可以更改程序的结构。 ------------------------------------------------------*/ fun() { int n,j; float s=0.0,t=1.0; for(n=1;n<=20;n++) { /**********ERROR**********/ s=1; for(j=1;j<=n;j++) /**********ERROR**********/ t=t*n; /**********ERROR**********/ s+t=s; } /**********ERROR**********/ printf("jiecheng=%f\n",s) } main() { fun(); }
时间: 2023-07-05 13:24:37 浏览: 82
改正后的程序如下:
```c
#include <stdio.h>
void fun() {
int n, j;
float s = 0.0, t = 1.0;
for (n = 1; n <= 20; n++) {
t = 1.0;
for (j = 1; j <= n; j++)
t = t * j;
s = s + t;
}
printf("jiecheng=%f\n", s);
}
int main() {
fun();
return 0;
}
```
程序中的错误已被修正,主要涉及以下几个方面:
1. 变量 `s` 的初始值应该为 0.0,而不是 1。
2. 在计算阶乘时,应该用变量 `t` 乘上循环变量 `j`,而不是乘上循环变量 `n`。
3. 在每次计算完一个阶乘后,应该将其加到变量 `s` 中。
另外,程序中的函数声明缺失返回类型,应该修改为 `void fun()`。
阅读全文