#include <stdio.h>
int main()
{
char ra[10000]={0};
ra[0]='1';
int n;
int j;
int t;
int l;
printf("请输入一个数:");
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
for(l=0;ra[l];l++);
for(j=l-1;j>=0;j--)
{
t=(ra[j]-'0')*i;
ra[j]=t%10+'0';
t=t/10;
for(int jf=1;t;jf++)
{
if(ra[j+jf]==0)
{
ra[j+jf]='0';
}
ra[j+jf]=ra[j+jf]+t%10;
t=t/10;
if(ra[j+jf]>'9')
{
ra[j+jf]-=10;
t++;
}
}
}
}
for(l=0;ra[l];l++);
printf("%d的阶乘有%d位\n",n,l);
for(t=1,l=l-1;l>=0;l--,t++)
{
printf("%c",ra[l]);
if(t%50==0)
printf("\n");
}
printf("\n");
return 0;
}
请输入一个数:100
100的阶乘有158位
93326215443944152681699238856266700490715968264381
62146859296389521759999322991560894146397615651828
62536979208272237582511852109168640000000000000000
00000000
请按任意键继续. . .
追问第三、第四个for循环有什么用啊?请解释一下。
追答ra是个字符数组,要把字符转换成对应的数字才能计算