改错题 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++)”。