作业帮 > 综合 > 作业

C语言.求PI的近似值

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/05 16:43:28
C语言.求PI的近似值

#include
using namespace std;
int main()
{
long float x=1.0,a1=1.0,a2=1,P;
a1=((++x)/(x-1))*((x)/(++x));
for(;;)
{
a2=a1*((x+1)/x)*((++x)/(++x));
if((a2-a1)>(0.00001))
a1=a2;
else
break;
}
P=(2*a1);
cout
公式为Pi=1-1/2+1/4-1/6+1/8+……+1/n,C语言代码如下:
#include<stdio.h>
void main()
{
int i,j=1;
double pi=0;
for(i=1;i<1e8;i=i+2) /*这里的精度自己取*/
 {
\x09pi=pi+j*(1.0/i);
\x09j=-j;
 }
pi=pi*4;
printf("%lf\n",pi);
}

再问: 看清题目了吗?
再答: 哦,我改一下,你等等……
再问: 我写了一个,但是不知道为什么不对。
再答: 你到底是C还是C++?错误是a1的值没变。我的想法是只计算前2n项,然后对另一个求前2n+2项的PI赋值,这样可以让它滞后1步,本来这种出口循环应该写do的,但计算结果不对,所以我改了半天 #include int main(void) { double n=1.0,pi1=0.0,pi=1.0; do { pi1=pi; pi=pi*((2.0*n)/(2.0*n-1.0))*((2.0*n)/(2.0*n+1.0)); n++; }while(2.0*(pi-pi1)>1e-5); printf("%lf\n",2*pi); return 0; } C++的: #include int main(void) { double n=1.0,pi1=0.0,pi=1.0; do { pi1=pi; pi=pi*((2.0*n)/(2.0*n-1.0))*((2.0*n)/(2.0*n+1.0)); n++; }while(2.0*(pi-pi1)>1e-5); cout