其中你的代码中有一句代码错了!
t=t*(i/(i+2));
应该改成:
t=t*((double)i/(2*i+1));
这句有两个地方错
首先分母写错了不是(i+2),应该是(2*i+1)
再次需要把整型强制转化成 double型
代码改成下面就可以了:(说明:因为无NONO()函数,且缺少# include
# 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;
}
运行结果: