C语言求1至n的阶乘和问题?

2025-04-30 03:57:17
推荐回答(2个)
回答1:

下面是我给你改好的代码
#include
int main()
{
int i,n;
double p=1,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
p*=i;
sum+=p;
}
printf("%lf\n",sum);
}

有几点你要注意一下,int是什么数据类型你应该知道,取值范围也知道吧,你输入33,你自己想象33的阶乘是多大的值,超出int范围肯定溢出啊,所以这里建议改为double型
还有你那个sum+=p,调到for循环里面,在外面的话只会执行一次,就是把p的最终值加上sum的初始值0,然后赋值给sum,这不就相当于直接把p的值赋给sum吗,所以我给你改成那样了,你自己看看吧

回答2:

私心想着好歹改改便可以给楼主交差,可一看程序,真真是不行滴~~,我只有给楼主多改了改,这次必定是极好的。至于如何防止溢出,尽量不要算那么大的数,应该就可以了吧,我碰到的溢出问题不多。程序如下,请笑纳~~~如果还有何疑问,请尽管问~~~

#include
int main()
{
int i,j;
int a[100],sum=0,n;
scanf("%d",&n);
for(i=0;i {
for(j=1;j<=i+1;j++)
{
if(j==1)
a[i]=1;
else
a[i]*=j;
}
}

for(i=0;i sum+=a[i];

printf("%d\n",sum);
return 0;
}