大数阶乘
//http://blog.sina.com.cn/s/blog_80a11dd70100vaxv.html #include <stdio.h> void main() { int data[50]; //存储位数的数组 int digit; //数据位数变量 120为三位 int i,j,k,r; //循环计数变量 int N; //输入的值 for(i=1; i<40+1; i++) //初始化数组 data[i]=0; data[0]=1;//一二位为1,其他位为0 data[1]=1; digit=1; printf("Input n:"); scanf("%d",&N); //读取n值 for(i=1; i<N+1; i++) { for(j=1; j<digit+1; j++)//24*5=20*5+4*5 data[j]*=i; //对数组中的内容运算 for(j=1; j<digit+1; j++) { if(data[j] >10) {//进位 for(r=1; r<digit+1; r++) {//遍历整个数组 if(data[digit] >10) digit++; //当数组中的值大于10则位数加1 data[r+1]+=data[r] /10;//进位操作 data[r]=data[r]%10; } } } printf("%d!=", i ) ; for(k=digit; k>0; k--) //输出数组中的内容 printf("%d",data[k]); printf("\n"); } }