改錯題
給定程序MODI1.C中函數(shù) fun 的功能是:用下面的公式求π的近似值,直到最后一項的絕對值小于指定的數(shù)(參數(shù)num )為止:
π 1 1 1
┄┄≈1 - ┄┄ + ┄┄ - ┄┄ + ...
4 3 5 7
例如, 程序運(yùn)行后, 輸入0.0001, 則程序輸出3.1414。
請改正程序中的錯誤,使它能輸出正確的結(jié)果。
注意:不要改動 main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#include
float fun ( float num )
{ int s ;
float n, t, pi ;
t = 1 ; pi = 0 ; n = 1 ; s = 1 ;
while(t >= num)
{
pi = pi + t ;
n = n + 2 ;
s = -s ;
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) ;
}
解題思路:
第一處:要判斷t的最后一項絕對小于指定的數(shù),由于t是實數(shù),那么應(yīng)改為while(fabs(t)>=num)。
第二處:t是s除以n的值,而不是取余數(shù),所以應(yīng)改t=s/n;。