改错题
1. 下列给定程序中,函数proc()的功能是:根据整型形参n,计算下列公式的值。
A1=1,A2=1/(5+A1),A3=1/(5+A2),
…,An=1/(5+A(n-1))
例如,若n=10,则应输出“0.192582”。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
float proc(int n)
{
//****found****
int A[100];
A[1]=1;
int i;
//****found****
for(i=1;i<=n;i++)
A[i]=1.0/(5+A[i-1]);
return A[n];
}
void main()
{
int n;
system("CLS");
printf("\nPlease enter n:");
scanf("%d",&n);
printf("A%d=%1f\n",n,proc(n));
}
【正确答案】(1)错误:int A[100];
正确:float A[100];
(2)错误:for(i=1;i<=n;i++)
正确:for(i=2;i<=n;i++)
【答案解析】 根据主函数中的函数调用以及函数proc()的返回值类型,可知变量A为float类型。因此,“int A[100];”应改为“float A[100];”。在为变量A赋值时其已经被赋值为第一项的值,所以循环从第二项开始,因此,“for(i=1;i<=n;i++)”应改为“for(i=2;i<=n;i++)”。