C语言用for循环算1!+2!+3!+4!+5! 我的程序为什么不对?
main(){inti,j,sum=0,s=1;for(i=1;i<=5;i++){for(j=1;j<=i;j++){s=s*j;sum=s+sum;}}printf(...
main()
{int i,j,sum=0,s=1;
for(i=1;i<=5;i++)
{for(j=1;j<=i;j++)
{s=s*j;
sum=s+sum;}
}
printf("%d\n",sum);
} 展开
{int i,j,sum=0,s=1;
for(i=1;i<=5;i++)
{for(j=1;j<=i;j++)
{s=s*j;
sum=s+sum;}
}
printf("%d\n",sum);
} 展开
1个回答
展开全部
很明显s的值一直在变大,而不是你想要的求!1,!2,!3,!4,!5后再相加,每次计算的时候s的值都是在累乘的,所以最后的结果肯定会偏大。
#include <stdio.h>
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 <stdio.h>
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;
}
追问
s乘的次数不是由j决定的吗 i<=5, j 不也是运行5次,所以s最多不还是1*2*3*4*5的么
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询