最佳答案
完整的程序:
#include
#include
#define MAX 40000
int fac[MAX]= {1};
int add[MAX]= {0};
int top=1;
void calculate(int n);
void print();
int main()
{
int n=50;
calculate(n);
printf("%d!=",n);
print();
return 0;
}
//计算N的阶乘
void calculate(int n)
{
int i,j;
if (n<=0)
{
exit(1);
}
for (i=1; i<=n; i++)
{
int m=top;
for (j=0; j
{
int tmp=fac[j]*i;
if (j==0)
{
fac[0]=tmp%10;
add[0]=tmp/10;
}
else
{
fac[j]=(tmp+add[j-1])%10;
add[j]=(tmp+add[j-1])/10;
}
while (add[top-1]>0)
{
top++;
int tmp=fac[top-1];
fac[top-1]=(tmp+add[top-2])%10;
add[top-1]=(tmp+add[top-2])/10;
}
}
}
}
//打印输出结果
void print()
{
int i;
for(i=top-1; i>=0; i--)
printf("%d",fac[i]);
printf("\n");
}
最佳答案由网友 whoami1978 提供