问题 问答题

下列给定程序中,函数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 oreturn 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);

答案

参考答案:去掉switch(q);中的分号
(2)case 1;case 2;return 1;

解析:
本题关键字有:switch语句。其一般形式如下:
switch(表达式){
case常量表达式1:语句1;
case常量表达式2:语句2;
case常量表达式n:语句n;
defaulf:语句n+1;
}
其中switch(表达式)后不带有“;”,case语句常量后是“:”。
[微分析]
(1)C语言中,switch语句之后没有分号。
(2)case语句常量后是冒号。

单项选择题
多项选择题