本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。

​2​​π​​=1+​3​​1!​​+​3×5​​2!​​+​3×5×7​​3!​​+⋯+​3×5×⋯×(2×i+1)​​i!​​+⋯
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int f,i;
float n,t,PI;
double eps;
scanf("%le", &eps);
t=1;
PI=0;
n=1.0;
f=1;
i=1;
for(i=1;;i++)
f*=i;
n*=2*i+1;
while (t>=eps){
PI=PI+t;
t=f/n;
}
PI=PI*2;
printf("PI=%.5f\n",PI);
}
为什么不对呢?

算法错误。对i的循环,对i没有任何约束,陷入死循环。

给出本题的程序:

#include <stdio.h>
int main()
{
double i,k=1,m=1,eps,PI=0;
scanf("%le",&eps);
for(i=0;k/m>=eps;i++)
{
k*=i==0?1:i;
m*=i*2+1;
PI+=k/m;
}
printf("PI=%lf",PI*2);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-16
#include <stdio.h>
#include<math.h>
int main ()
{
double a=1,b=3,i=1,j=3;
double eps,m=1,sum=0;
scanf ("%le",&eps);
while (m>=eps)
{
m=a/b;
sum=sum+m;
i=i+1;
j=j+2;
a=a*i;
b=b*j;
}

printf ("PI = %.5lf\n",(2*sum+2));
return 0;

}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网