改错题 1.  下列给定程序中,函数proc()的功能是:根据整型参数m,计算如下公式的值:
    y=1/(100100)+1/(200200)+1/(300300)+...+1/(mm)
    例如,若m=4000,则应输出0.000162。
    请修改程序中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdlib.h>
    #include<coriio.h>
    #include<stdio.h>
    //****found****
    proc(int m)
    {
    double y=0,d;
    int i;
    //****found****
    for(i=100,i<=m,i+=100)
    {
    d=(double)i*(double)i;
    y+=1.0/d;
    }
    return(y);
    }
    void main()
    { int n=4000;
    system("CLS");
    printf("\nThe result is%1f\n",pmc(n));
    }
【正确答案】(1)错误:proc(int m)
   正确:double proc(int m)
   (2)错误:for(i=100,i<=m,1+=100)
   正确:for(i=100;1<=m;1+=100)
【答案解析】 由主函数中的函数调用和函数proc()的返回值可知,函数proc()的返回值类型为double型,因此,“proc(int m)”应改为“double proc(int m)”;根据C语言的语法规则,for循环的3个条件之间由分号间隔,因此,“for(i=100,i<=m,1+=100)”应改为“for(i=100;i<=m;1+=100)”。