C语言环境编程,输入N,求1到N的阶乘之和。TC环境,

题目如题,以下是我编的,提示无错,但输入N后,就一直无限循环。求解。
#include<stdio.h>
int main()
{
long long int a,b,s,n;
a=1;
b=1;
s=0;
printf("n=");
scanf("%d",&n);
while(a<=n)
{
s=s+b;
a=++a;
b=b*a;
}
printf("s=%d\n",s);
return 0;
}


因为定义的是long long类型的n,但是格式化输入的时候却用的int的格式%d, 所以修改scanf语句为:
scanf("%lld", &n);//注意格式中增加了两个l,变为%lld,程序可以运行了

同样,输出格式也要修改为:
printf("s=%lld\n",s);

但要注意的是阶乘的数很大,n,a都只能取很小的数,才能保证b,s不超范围.

望采纳,顺便赞一个,谢谢
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-28
除了楼上发现的之外,
a=++a;错误,这句话翻译过来就是这样a=(a=a+1),没这么做过不知道跑出来到底是不是a=a+1;
再就是程序并不复杂,调试起来很快就能得到结果
换成++a或者a=a+1;
相似回答