//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");
}
}