用C++编程计算π

用公式:π=4 – 4/3 + 4/5 – 4/7 + 4/9 -4/11 + … …编程计算π的值,要求分别输出取前1项,2项。。。。。1000项时,π的近似值。用for,while,do..while循环都行。能附上程序说明更好了,谢谢!
一定得用这个公式计算哦。

#include<iostream>
#include<conio.h>
using namespace std;

void main()
{
double dPI;//π
int iFenMu;//分母
int iFenZi;//分子
int iCount;//计数
int iSign;//记录正负号
//初始化各变量
iFenZi = 4;
iFenMu = 1;
iSign = 1;
dPI = 0;
for(iCount=1;iCount<=1000;iCount++)//用for语句实现
{
//公式π=4 – 4/3 + 4/5 – 4/7 + 4/9 -4/11 + … …
dPI += ((iSign)*(((double)iFenZi)/((double)iFenMu)));//π的累加,相当于dPI=dPI+(((iSign)*(((double)iFenZi)/((double)iFenMu))));
cout<<"PI["<<iCount<<"]="<<dPI<<" ";//输出第iCount项的值
if(iCount%4==0)
{
cout<<endl;
}
iFenMu+=2;//分母增加2
iSign=-iSign;//正负号交替变化
}
cout<<"Press any key to continue"<<endl;
getch();
iFenZi = 4;
iFenMu = 1;
iSign = 1;
dPI = 0;
iCount =1;
while(iCount<=1000)//用while语句实现
{
dPI += ((iSign)*(((double)iFenZi)/((double)iFenMu)));
cout<<"PI["<<iCount<<"]="<<dPI<<" ";
if(iCount%4==0)
{
cout<<endl;
}
iFenMu+=2;
iSign=-iSign;
iCount++;
}
cout<<"Press any key to continue"<<endl;
getch();
iFenZi = 4;
iFenMu = 1;
iSign = 1;
dPI = 0;
iCount =1;
do//用do while语句实现
{
dPI += ((iSign)*(((double)iFenZi)/((double)iFenMu)));
cout<<"PI["<<iCount<<"]="<<dPI<<" ";
if(iCount%4==0)
{
cout<<endl;
}
iFenMu+=2;
iSign=-iSign;
iCount++;
}while(iCount!=1001);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-27
#include<stdio.h>
#include <math.h>
#include <stdlib.h>

double pi(int n)
{
if (n==1) {printf("第1次PI近似值是4\n");return 4;}
else
{
long double a=pi(n-1)+pow(-1.0f,n-1)*4/(2*n-1);
printf("第%d次PI近似值是%lf\n",n,a);return a;
}
}
int main()
{
pi(1000);
system("pause");
return 1;
}
已经可运行。但是由于窗口太小的缘故,只能显示从700到1000的近似,其他被覆盖掉了。
一些讲解:
pow是幂函数,以前一项为底后一项为幂。
为了保证精度,使用了long double型。
使用递归实现了求pi的值。
第2个回答  推荐于2018-03-20
#include<cstdio>

int main()
{
int down = 1; //分母
int sign = 1; //符号
double pi = 0;
for (int i = 1; i <= 1000; ++i)
{
pi += 4.0 * sign / down;
down += 2; //每次分母+2
sign = - sign; //每次符号取反
printf("First %d terms , Pi = %.6lf\n", i , pi);
}
return 0;
}本回答被提问者和网友采纳
第3个回答  2010-03-27
#include<iostream>
using namespace std;

void main()
{
float π=0;
int t=1,x=1;
while(t<1000)
{ π=π+4x/t; //公式 X 第一次是正的 第二次就是负的了...
cout<<π<<","; //输出 每算一次的 π 都输出的
t=t+2; // 这个应该能看懂吧?
x=-1; //和上面的X正负相反的
}

}
第4个回答  2010-03-27
#include <iostream>
using namespace std;

int main()
{
float tt=0;
int j=1;
int n;
cout<<"请输入你要计算tt前n项和的 n 值:"<<endl;

cin>>n;
float i;

for(i=1.00;i<=n*2-1;i=i+2)
{
tt=tt+4/i*j;

j=-j;

}

cout<<"tt的前"<<n<<"项和为:"<<tt<<endl;

}

相关了解……

你可能感兴趣的内容

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