很明显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;
}