这里的关键是要有一个变量能存储下n!和整个的和,普通int型和long int型变量范围都很小,所以建议用double型变量。
你的程序虽然提示
输入数据到变量n,但没有调用输入语句输入,应当:
printf("input a number:"); scanf("%d",&n);
你用sum变量保存累加和,这是正确的,但每项的
阶乘值没有变量来保存是个问题,要知道阶乘也是一个累乘的结果,而i*i并不是n的阶乘而是n的平方。当前项等于前边相乘以当前的i值,这个累乘变量的起始值为1。
建议:
int i,n;
double sum,m;
...
sum=0; m=1; //变量m计算当前项即阶乘值
for ( i=1;i<=n;i++ ) { m*=i; s+=m; }
printf("sum=%.0lf\n",sum);
但请注意,仍有n过大无法计算的问题存在。