解析:  题目的意思不太清楚,网上也差不到解析,不过看题目的架势好像是要求斐波那契数列。所以就把以前的代码贴上了。

    由于很重要,我又贴了一遍。

 1 #include <stdio.h>
 2 #include <string.h>
 3 static void large_add(void);
 4 static void initialize(void);
 5 #define N 300
 6 static char *p2;
 7 static char s1[N], s2[N],temp[N];
 8 static char *p1;
 9 static char fei[55][N];
10 int main()
11 {
12     int a, i;
13     initialize();
14     strcpy(fei[0],"0");
15     strcpy(fei[1],"1");
16     strcpy(fei[2],"1");
17     for(i = 3; i < 55; i++){
18         large_add();
19         strcpy(fei[i],p1);
20     }
21     while(scanf("%d", &a) == 1 && a){
22         a++;
23         printf("%s\n",fei[a]);
24     }
25     return 0;
26 }
27 /*计算字符串s1 + s2*/
28 static void large_add(void)
29 {
30     /*默认p1与p2均指向要相加的正确的位置*/
31     int i, t, t2;
32     int l1 = strlen(p1) - 1;
33     int l2 = strlen(p2) - 1;
34     char *p = p1 - 1;
35     strcpy(temp,p1);
36     t2 = l1 - l2;
37     *p = '0';
38     l1++;  
39     t = l1 - l2;         
40     for(i = l1; i - t >= 0; i--)
41         p[i] += p2[i - t] - '0';
42     /*相加与进位要分割开来*/
43     for(i = l1; i > 0; i--){
44         if(p[i] > '9'){
45             p[i] -= 10;
46             p[i-1]++;
47         }
48     }
49     if(*p == '0')
50         p++;
51     p1 = p;
52     p2 -= t2;        /*p2的空间顶多比原来的p1小一位*/
53     strcpy(p2,temp);
54 }
55 /*初始化字符串*/
56 static void initialize(void)
57 {
58     /*令s1值为1,s2值为1*/
59     s1[N-2] = '1';
60     s2[N-2] = '1';
61     s1[N-1] = '\0';
62     s2[N-1] = '\0';
63     p1 = &s1[N-2];
64     p2 = &s2[N-2];
65 }