题目:求1!+2!+3!+...+10!

时间:2022-12-18 12:59:06

答案:

#include<stdio.h>
int main()
{
int i,z,sum;
z=1;
sum=0;
for(i=1;i<=10i++)
{
z=z*i;
sum=sum+z;
}
printf("%d",sum);
return 0;
}

题目:求1!+2!+3!+...+10!

1.对于n的阶乘由于上一篇文章已经对其进行描述便不再重复

2.这里我们只需要将每次求得的阶乘保留下,进行下一次的加法,所以,只需要我们用“sum=sum+z”储存起来后循环

此时 z和sum的值对于即将进行的时候 都没被清空

也就是说 如果进行到最后第二次循环,z就是9的阶乘,是在8的阶乘基础上直接乘的9;sum就是在前面的1-8的阶乘所相加的基础上直接加的9的阶乘

错误示范:

#include<stdio.h>
int main()
{
int i,n,z,sum;
z=1;
sum=0;
for(n=1;n<=10;n++)
{
for(i=1;i<=n;i++)
{
z=z*i;
}
sum=sum+i;
}
printf("%d",sum);
return 0;
}

错误原因:

“z=z*i”时,z没有进行重置值,如计算2!,z便固定在了2的值,导致计算3!时,直接将z的2多乘了给了3!,导致结果多乘了2

解决办法:1.去掉i=1;2.在“z=z*i”前面加上“z=1”