大整数N的阶乘求解!为什么结果又错误
程序代码:/* 大整数的阶乘计算 */
#include "stdio.h"
void caculate(int n);
int num[2000]={0}; //计算结果不超过5000位,用数组存储每一位数字
void main()
{
int n;
printf("Please input n:\n");
scanf("%d",&n);
caculate(n);
}
void caculate(int n)
{
int total=0,remainder=0,i,j,flag;
j=n-1; //从数组最后一位开始存储
num[j]=1;
for(i=2;i<=n;i++)
{
while(j>0)
{
total=i*num[j]+remainder;
remainder=0;
if(total>=10)
{
num[j]=total%10;
remainder=total/10;
}
else
num[j]=total;
j--;
}
j=n-1;
remainder=0;
total=0;
}
for(i=0;i<n;i++)
{
if(num[i]!=0||flag==1)
{
printf("%d",num[i]);
flag=1;
}
}
printf("\n");
}后来发现我的程序有问题,计算25以后阶乘都有错误,不知道为何?而且错误都是漏掉了正确输出结果开头的一些数字,请大家指导!









