改错题 1.  下列给定程序中,函数proc()的功能是:用递归算法计算Fibonacci数列中第n项的值。从第一项起,Fibonacci数列为1,1,2,3,5,8,13,21,…。
    例如,若给n输入8,该项的Fibonacci数列值为21。
    请修改程序中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include <stdio.h>
    long proc(int g)
    {
    //****found****
    switch(g);
    {
    case 0: return 0;
    //***found****
    case 1; case 2: return 1;
    }
    return(proc(g-1)+proc(g-2));
    }
    void main()
    {
    long fib; int n;
    printf("Input n:");scanf("%d",&n);
    printf("n=%d<n",n);
    fib=proc(n);
    printf("fib=%d<n<n",fib);
    }
【正确答案】(1)错误:switch(g);
   正确:switch(g)
   (2)错误:case 1; case 2: return 1;
   正确:case 1: return 1; case2: return 1;
【答案解析】 由C语言的语法规则可知,switch语句后面是没有分号的,因此,“switch(g);”要把后面的分号去掉;在C语言中,case语句后面是冒号而不是分号,因此,“case 1; case 2:return 1;”应改为“case 1: return 1; case2: return 1;”。