这个C语言求阶乘的程序,出错在什么地方呢?

#include <stdio.h>
float fact(int n);
int main()
{
int i;float a;
printf("输入需要求阶乘的数\n");
scanf("%d",i);
a=fact(i);
printf("%d !=%f\n",i,a);
return 0;
}
float fact(int n)
{
if (n==0) return 1;
else
{
return fact(n-1)*n;
}

}

改好了,改了两点:

1)int i=0; // 要初始化

2)scanf("%d",&i);  // i别忘了加地址符

#include <stdio.h>
float fact(int n);

int main()
{
 int i=0;
 float a; 
 printf("输入需要求阶乘的数\n"); 
 scanf("%d",&i);
 a=fact(i);
 printf("%d !=%f\n",i,a);
 return 0;
}
float fact(int n)
{
 if (n==0) return 1;
 else
 {
  return fact(n-1)*n;
 }
 
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-31
#define N 300

int main()
{
int a[N] = {0}, i, n, f = 1, m;
a[0] = 1;
scanf("%d", &m);
if(m < 0) m = 0;
if(m > 400) m = 400;
for(i = 1; i <= m; ++i)
{
for(n = 0; n < N; ++n) if(a[n]) a[n] *= i;
for(n = 0; n < N; ++n)
{
if(a[n] > 10000)
{
a[n + 1 ] += a[n] / 10000;
a[n ] %= 10000;
}
}
}

for(n = N - 1; n >= 0; --n)
{
if(f)
{
if(a[n])
{
f = 0;
printf("%d! = %d", m, a[n]);
}
continue;
}
printf("%04d", a[n]);
}
printf("\n");
return 0;
}追问

原来的程序有什么问题?