请编写函数fun,其功能是根据以下公式求π的值为什么我的运行不对

2025年03月21日 15:07
有1个网友回答
网友(1):

其中你的代码中有一句代码错了!

t=t*(i/(i+2));
应该改成:

 t=t*((double)i/(2*i+1));

这句有两个地方错

  1. 首先分母写错了不是(i+2),应该是(2*i+1)

  2. 再次需要把整型强制转化成 double型

 

代码改成下面就可以了:(说明:因为无NONO()函数,且缺少# include ,而且我是在VC++6下测试,所以在代码中加了 # include 并且把main()函数写成 int main(), 且在main()函数中增加了return 0;)

# include 
double  fun ( double  eps)
{int i;
double s=1.0,t=1.0;
for(i=0;t>=eps;i++)
if(i!=0)
{
 t=t*((double)i/(2*i+1));//这句有两个地方错,首先分母写错了,再次需要把整型强制转化成 double型
 s=s+t;
}
else s=1;
return 2*s;
}
int main()
{
 double  x;
    printf("Input eps:") ;
    scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x));
    return 0;
}

运行结果: