C语言用for循环算1!+2!+3!+4!+5! 我的程序为什么不对?

2025-05-14 01:29:22
推荐回答(1个)
回答(1):

很明显s的值一直在变大,而不是你想要的求!1,!2,!3,!4,!5后再相加,每次计算的时候s的值都是在累乘的,所以最后的结果肯定会偏大。

#include 
int main()

int i,j,sum=0,s=1; 
for(i=1;i<=5;i++) 
{
s=1;  //每次循环前先让s的值为初始值
for(j=1;j<=i;j++) 
{
s=s*j;
}     //这个循环用来计算!n的值
sum=s+sum;  //再把!n的值累加起来
}
printf("%d\n",sum); 

return 0;
}

更简便的方法

#include 
int main()

int i,j,sum=0,s=1; 
for(i=1;i<=5;i++) 
{
s=s*i;   //每一次s再多乘一个i就可以了
sum=s+sum;
}
printf("%d\n",sum);  //最后正确结果是153
return 0;
}