c语言 整型数的表示范围,求高手检查错误。编写一个循环程序,输入 N 值,输出 N 的阶乘。

#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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-23
if(n>19)printf("N is too big!\n",s);
最后一个S是什么追问

我懂了,都怪年少太无知,,,,我忘了{}。并且s无用,加上了结果没算我错,谢谢

第2个回答  2012-03-23
计算阶乘很容易溢出吧,最好用比int表示范围大的类型。像VC中的__int64,DEV-C中的long long

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网