#include<stdio.h>
int main()
{
int s,n,i;
s=1;
scanf("%d",&n);
if(n>19)printf("N is too big!\n",s);
else
for(i=n;i>1;i--)
s=s*i;
printf("%d\n",s);
return 0;
}
求检错,为什么计算20时,结果会多个1
没有错,注意看你的for循环 printf("%d\n",s);并不在你的循环体内,所以当输入20时会执行
printf("N is too big!\n",s);
printf("%d\n",s); 这时的s=1;所以会出现你说的多1. 你加上大括号就好了。看着也方便
#include<stdio.h>
int main()
{
int s,n,i;
s=1;
scanf("%d",&n);
if(n>19)printf("N is too big!\n",s);
else {
for(i=n;i>1;i--)
s=s*i;
printf("%d\n",s);
}
return 0;
}
printf("N is too big!\n",s);
printf("%d\n",s); 这时的s=1;所以会出现你说的多1. 你加上大括号就好了。看着也方便
#include<stdio.h>
int main()
{
int s,n,i;
s=1;
scanf("%d",&n);
if(n>19)printf("N is too big!\n",s);
else {
for(i=n;i>1;i--)
s=s*i;
printf("%d\n",s);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-03-23
if(n>19)printf("N is too big!\n",s);
最后一个S是什么追问
最后一个S是什么追问
我懂了,都怪年少太无知,,,,我忘了{}。并且s无用,加上了结果没算我错,谢谢
第2个回答 2012-03-23
计算阶乘很容易溢出吧,最好用比int表示范围大的类型。像VC中的__int64,DEV-C中的long long