友友可以帮忙看一下求阶乘和吗
#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;
} isdkz 发表于 2023-3-13 19:10
这段代码存在一些问题。
首先,在计算阶乘时,应该在每个内层循环之前将变量mult重置为1,以计算新的阶 ...
#include<stdio.h>
//编写程序算出1!+2!+3!+…+10!的和 (3! 表示 1*2*3)
int main(){
int mult=1;//阶乘的结果;
int sum=0;//总式和;
int i=10;//数的阶乘
int j;//几个数
for(j=1;j<=i;j++){
mult*=j;//i阶乘
sum+=mult;//阶乘和
}
printf("阶乘和为%d",sum);
return 0;
}
//谢谢宝子了,啊啊啊啊啊啊啊,今天写了好久,简直爱死你了{:5_108:},看了一下突然有个灵感,这个好像也可以,{:5_101:}
页:
[1]