C 阶乘出错

来源:百度知道 编辑:UC知道 时间:2024/06/06 00:46:52
烦请各位睇下以下程序哪里出了问题?
当计算8的阶乘时出现负值?

#include <stdio.h>

main()
{
int i,n;
long int x;
loop: printf("please input the n:");
scanf("%d",&n);
for(i=1,x=1;i<=n;i++)
x=x*i;
printf("%d\n",x);
goto loop;
return 0;
}

#include <stdio.h>
void jc(int a);
void main()
{
int a;
scanf("%d",&a);
jc(a);
}
void jc(int b)
{
int i,c;
c=b;
for(i=1;i<b;i++)
{
c*=i;

}
printf("%d",c);

}

你的x没有初始化就直接使用了,long int x=1;
还有结构化编程不要用goto,除非你是嵌入式才可以用