c语言 阶乘和 1到20的 用while循环没问题 for就不行了,哪里有问题

#include<stdio.h>
#include<math.h>
void main()
{
int s=0,n,a=1;

for (n=1;n<=20;n++)
a=a*n;
s=s+a;
printf("%d\n",s);

}

第1个回答  2012-11-06
for (n=1;n<=20;n++)
{
a=a*n;
s=s+a;
}
这样你再试试,for语句的控制范围是for语句的后面的第一个分号,你原来的那个s=s+a不再循环体内,它计算的是循环之后的最后一次的值
第2个回答  2020-04-20
求和吗,所以s=s+a也得在循环里面,应该改成这样:
for
(n=1;n<=20;n++)
{
a=a*n;
s=s+a;
}
20的阶乘,用int型变量存储应该早就溢出了吧。
第3个回答  2012-11-06
求和吗,所以s=s+a也得在循环里面,应该改成这样:
for (n=1;n<=20;n++)
{
a=a*n;
s=s+a;
}
20的阶乘,用int型变量存储应该早就溢出了吧。本回答被提问者和网友采纳
第4个回答  2012-11-07
你这也不是阶乘啊
第5个回答  2012-11-06
回答都对