改错题 1.  下列给定程序中,函数proc()的功能是求S的值。
    S=(22/(1*3))*(42/(3*5))*(62/(5*7))
    *...*(2n)2/((2n-1)*(2n+1))
    例如,当n为100时,函数的值应为1.566893。
    请改正程序中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdlib.h>
    #include<conio.h>
    #include<stdio.h>
    #include<math.h>
    //****found****
    proc(int n)
    {
    int n;float sum, w,p,q;
    n=1;
    sum=1.0;
    while(n<=n)
    {
    w=2.0*n;
    p=w-1.0;
    q=w+1.0;
    sum=sum*w*w/p/q;
    n++;
    }
    //****found****
    return sum
    }
    void main()
    {
    system("CLS");
    printf("%f\n",proc(100));
    }
【正确答案】(1)错误:proc(int n)
   正确:double proc(int k)
   (2)错误:return sum
   正确:return sum;
【答案解析】 由主函数中的函数调用及函数proc()中的return语句可知,函数proc()的返回值类型应为double型,因此,“proc(int k)”前面应加上double;根据C语言的语法规则,每一条语句都必须以分号结束,因此,语句“return s”后应加上分号。