改错题 1.  下列给定程序中,函数proc()的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。
    π/4≈1-1/3+1/5-1/7+…
    例如,程序运行后,输入0.0001,则程序输出3.1414。
    请修改程序中的错误,使它能得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
    #include<stdlib.h>
    #include<math.h>
    #include<stdio.h>
    float proc(float nllm)
    {
    int s;
    float n,t,pi;
    t=1;pi=0;n=1;s=1;
    //****found****
    while(t>=num)
    {
    pi=pi+t;
    n=n+2;
    s=-s;
    //****found****
    t=s%n;
    }
    pi=pi*4;
    return pi;
    }
    void main()
    {
    float n1,n2;
    system("CLS");
    printf("Enter a float number:");
    scanf("%f",&n1);
    n2=proc(n1);
    printf("%6.4f\n",n2);
    }
【正确答案】(1)错误:while(t>=num)
   正确:while(fabs(t)>=num)
   (2)错误:t=s%n;
   正确:t=s/n;
【答案解析】 按照题目的要求,直到最后一项的绝对值小于指定的数(参数num)为止,取绝对值函数为fabs。因此,“while(t>=num)”应改为“while(fabs(t)>=num)”;变量t表示的是变量s与变量n相除的结果,而不是取模。因此,“t=s%n;”应改为“t=s/n;”。