改错题
1. 下列给定程序中函数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)错误: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;
}