改错题 1.  下列给定程序中,proc()函数的功能是:根据形参n,计算下列公式的值。
    t=1-1/2+1/3-1/4+…+(-1)(n+1)/n
    例如,若输入6,则应输出“0.616667”。
    请修改程序中的错误,使它能得到正确结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdlib.h>
    #include<conio.h>
    #include<stdio.h>
    //****found****
    int proc(int n)
    {
    double t=1.0,j=1.0;
    int i;
    //****found****
    for(i=1;i<n;i++)
    {j=-1*j;t+=j/i;}
    return t;
    }
    void main()
    {
    int n;
    system("CLS");
    printf("\nPlease enter 1 integer number:");
    scanf("%d",&n);
    printf("\nThe result is%1f\n",proc(13));}
【正确答案】(1)错误:int proc(int n)
   正确:double proc(int n)
   (2)错误:for(i=1;i<n;i++)
   正确:for(i=2;i<=n;i++)
【答案解析】 由主函数中的函数调用以及函数proc()中返回值的类型可知,函数proc()的返回值类型为double型。因此,“int proc(int n)”应改为“double proc(int n)”。由题目给出的表达武可知,循环的最大值应该取到n,因此,“for(i=1;i<n;i++)”应改为“for(i=2;i<=n;i++)”。