问答题
下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1,1,2,3,5,8,13,21。…例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stctio.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)去掉分号 (2)case 1:case 2:retum 1;
【答案解析】解析:本题考查:switch语句。其一般形式如下: switch(表达式){ case常量表达式1:语句l; case常量表达式2:语句2; case常量表达式n:语句n; default:语句n+1; } 其中switch(表达式)后不应该带有“;”,同时case语句常量后应该是“:”。 C语言中,switch语句之后不能有分号,并且case语句常量后应用的是冒号。