一个关于C语言的入门题,

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:50:30
计算一个数的阶乘为什么这个不行呀?
错在哪呀?
#include<stdio.h>
main()
{
int i,i1,sum=1;
i1=getchar();
for(i=1;i<=i1;i++)sum=sum*i;
printf("%d\n",sum);
getch();
}
还有这个为什么8以上的就不行了呀?
main()
{
int i,i1,sum=1;
scanf("%d",&c1);
for(i=1;i<=i1;i++)sum=sum*i;
printf("%d\n",sum);
getch();
}
谢谢各位哥哥了
我刚学没人教我,问题很弱智,别笑我

你把i1=getchar();改为scanf("%d",&i1);或i1=(int)getchar();
把getch(); 去掉
第二个问题:
c1没有定义,8以上不行可能数大于2的8次方-1了,你可以把sum定义为long
比如long sum=1;

getchar()是用来得到一个字符的,不是数字,如果按数字理解就是对应的ASCII码,一般大于8的,而8后面的阶乘很大,非常大,用long都不能扩大多少

1)getchar();=>scanf("%d",&i1);
2)int=>long long (C++的)
int i,i1,sum=1;=>int i,i1,sum=1,c1;