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