|
10鱼币
#include<stdio.h>
//编写程序算出1!+2!+3!+…+10!的和 (3! 表示 1*2*3)
int main(){
int mult=1;//阶乘的结果;
int sum=0;//总式和;
int i;//数的阶乘
int j;//几个数
for(i=1;i<=10;i++){//i=1,j=1-10,如i<=3
for(j=1;j<=i;j++){
mult*=j;//i阶乘,如3!
sum+=mult;
}
}
printf("阶乘和为%d",sum);
return 0;
}
这段代码存在一些问题。
首先,在计算阶乘时,应该在每个内层循环之前将变量mult重置为1,以计算新的阶乘值。
否则,多次循环乘以旧的mult值,得到的结果将不是正确的阶乘值。
所以,应该将mult=1放在内层循环前面。
其次,在计算总和时,应该将每个阶乘值加到总和sum中,而不是将整个求阶乘过程的中间值加到总和中。
因此,应该将sum+=mult放在外层循环中。
下面是修改后的代码:
#include<stdio.h>
int main(){
int mult;//阶乘的结果;
int sum=0;//总式和;
int i;//数的阶乘
int j;//几个数
for(i=1;i<=10;i++){//i=1,j=1-10,如i<=3
mult=1;
for(j=1;j<=i;j++){
mult*=j;//i阶乘,如3!
}
sum+=mult;
}
printf("阶乘和为%d",sum);
return 0;
}
|
最佳答案
查看完整内容
这段代码存在一些问题。
首先,在计算阶乘时,应该在每个内层循环之前将变量mult重置为1,以计算新的阶乘值。
否则,多次循环乘以旧的mult值,得到的结果将不是正确的阶乘值。
所以,应该将mult=1放在内层循环前面。
其次,在计算总和时,应该将每个阶乘值加到总和sum中,而不是将整个求阶乘过程的中间值加到总和中。
因此,应该将sum+=mult放在外层循环中。
下面是修改后的代码:
|