求解:长整数的阶乘运算,程序代码看不懂,哪位大神帮帮忙啊、、、、、、
#include <stdio.h>#define N 10000
int main()
{
int a[N]={1};
char d[4]={0};
int i,j,t,e,f=1,m=0;
int l=0;
int k=0;
int n;
char ch='N';
printf("n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=0;j<=l;j++)
{
a[j]=a[j]*i+k;
k=a[j]/10000;
a[j]=a[j]%10000;
}
if(k)
{
l++;
a[j]=k;
k=0;
}
}
t=a[l];
while(t)
{
d[m]=t%10;
t/=10;
m++;
}
e=4*l+m-1;
if(e>30)
{
printf("%d!=%d.",n,d[m-1]);
for(i=m-2;i>=0;i--)
{
printf("%d",d[i]);
}
for(i=0;i<8;i++)
{ printf("%04d",a[l-1-i]);
}
printf("E+%d\n",e);
printf("输出精确值?(Y/N)");
getchar();
ch=getchar();
if(ch!='y'&&ch!='Y')
f=0;
}
if(f)
{
i=l;
printf("%d!=%d",n,a[i--]);
for(;i>=0;i--)
{
printf("%04d",a[i]);
}
}
printf("\n");
return 0;
}