给定程序MODll.C中函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止: π/4=1-1/3+1/5-1/7^ 例如,程序运行后,输入0.0001,则程序输出3.1414。 请改正程序

admin2013-03-29  39

问题  给定程序MODll.C中函数fun的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:
   π/4=1-1/3+1/5-1/7^
    例如,程序运行后,输入0.0001,则程序输出3.1414。
    请改正程序中的错误,使它能输出正确的结果。
    注意:不要改动smain函数,不得增行或删行,也不得更改程序的结构!
#include
#include
float fun(float num)
{  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;
}
main()
{  float n1,n2;
    printf("Enter a float number:");
    Scanf("%f",&n1);
    n2=fun(n1);
    printf("%6.4f\n",n2);
}

选项

答案(1)while(fabs(t)>=num) (2)t=s/n;

解析 (1)题干中要求进行循环的条件是绝对值小于某范围,可以调用C语言提供的取绝对值函数fabs对t取绝对值。所以将“while(t>=num)"改为“while(fabs(t)>=num)"。
    (2)表达式s%n中,n是浮点型,而%运算符只能用于整数运算,且要进行的是除法运算而不是求余运算。所以,第二个标识下“t=s%n;"应该改为“t=s/n;"。
转载请注明原文地址:https://jikaoti.com/ti/bIn0FFFM
0

最新回复(0)