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