填空题
下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为1、1、2、3、5、8、13、21、…
例如,若给n输入7,则该项的斐波拉契数值为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)去掉分号 (2)case1:case2:return1;
【答案解析】[解析] 本题考查:switch语句,其一般形式如下:
switch(表达式){
case常量表达式1:语句1;
case常量表达式2:语句2;
[*]
case常量表达式n:语句n;
default:语句n+1;
}
其中switch(表达式)后不应该带有“;”,同时case语句常量后应该是“:”。
C语言中,switch语句之后不能有分号,并且case语句常量后应用的是冒号。