填空题 下列给定程序中,函数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));
}
【正确答案】
【答案解析】错误:int A[100];
正确:float A[100];
错误: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++)”。