1 //大数阶乘问题 模拟手算的过程 用数组存储每一位数 有进位s 2 #include<stdio.h> 3 int main() 4 { 5 6 int m,i,j; 7 while(~scanf("%d",&m)) 8 { 9 int f[20000]={0};//初始化为0 10 f[0]=1; 11 for( i=1;i<=m;i++) 12 { 13 int c,s=0; 14 for( j=0;j<20000;j++)// 不知道何时结束 有点耗时 每次都要到20000次运算 15 { 16 c=f[j]*i+s;//每次的f[0]会被更新1 2 6 ... 17 f[j]=c%10;//每一位都存进f数组 从低位到高位 18 s=c/10;//进位数 19 } 20 } 21 for( i=19999;i>=0;i--) 22 if(f[i]!=0)//删除前导0 23 break; 24 //printf("i=%d\n",i); 25 for(j=i;j>=0;j--) 26 printf("%d",f[j]); 27 printf("\n"); 28 } 29 return 0; 30 }