改错题
1. 下列给定程序中,函数fun()的功能是:按递归公式求函数值。
fun(n)=10(n=1)
fun(n-1)+2(n>1)
例如,当给n输入3时,函数值为60;当给n输入6时,函数值为480。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序: #include<stdio.h>
//****found****
fun(int n);
{
int j;
//****found****
if(n=1)
j=15;
else
j=fun(n-1)*2;
return(j);
}
void main()
{
int n;
printf("Enter n:");
scanf("%d",&n);
printf("The result:% d\n\n",fun(n));
}
【正确答案】错误:fun(int n);
正确:fun(int n)
(2)错误:if(n=1)
正确:if(n==1)
【答案解析】 根据C语言的语法规则,函数定义之后是不加分号的。由整个程序看,函数fun()是函数定义,因此,“fun(int n);”应改为“fun(int n)”。表达式n=1表示的是将1赋给变量n,这显然是不对的。这里应该判断变量n是否等于1,因此,“if(n=1)”应改为“if(n==1)”。