1 #include<stdio.h>
2 #include<malloc.h>
3 #define MAXN 1000
4
5 void pnext(int a[],int k)
6 {
7 int *b,m=a[0],i,j,r,carry;
8 b=(int *) malloc(sizeof(int)* (m+1));
9 for(i=1;i<=m;i++) b[i]=a[i];
10 for(j=1;j<k;j++)
11 {
12 for(carry=0,i=1;i<=m;i++)
13
14 {
15 r=(i<=a[0]? a[i]+b[i]:a[i])+carry;
16 a[i]=r%10;
17 carry=r/10;
18 }
19 if(carry) a[++m]=carry;
20 }
21 free(b);
22 a[0]=m;
23 }
24
25 void write(int *a,int k)
26 {
27 int i;
28 printf("%4d!=",k);
29 for(i=a[0];i>0;i--)
30 printf(" %d",a[i]);
31 printf("\n\n");
32
33 }
34
35 void main()
36 {
37
38 int a[MAXN],n,k;
39 printf("please enter a number n\n");
40 scanf("%d",&n);
41 a[0]=1;
42 a[1]=1;
43 write(a,1);
44 for(k=2;k<=n;k++)
45 {
46 pnext(a,k);
47 write(a,k);
48 getchar();
49 }
50
51 }