用C++编程计算π

用公式:π=4–4/3+4/5–4/7+4/9-4/11+……编程计算π的值,要求分别输出取前1项,2项。。。。。1000项时,π的近似值。用for,while,do..... 用公式:π=4 – 4/3 + 4/5 – 4/7 + 4/9 -4/11 + … …编程计算π的值,要求分别输出取前1项,2项。。。。。1000项时,π的近似值。用for,while,do..while循环都行。能附上程序说明更好了,谢谢!
一定得用这个公式计算哦。
展开
 我来答
SSHHFF凤
2010-03-27 · TA获得超过1692个赞
知道小有建树答主
回答量:799
采纳率:83%
帮助的人:386万
展开全部
#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);

}
xxpxxxxp
2010-03-27 · TA获得超过836个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:405万
展开全部
#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的值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mxz297
推荐于2018-03-20 · 超过17用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:51.8万
展开全部
#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;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友52aeb54
2010-03-27 · TA获得超过2996个赞
知道小有建树答主
回答量:1261
采纳率:0%
帮助的人:1247万
展开全部
#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正负相反的
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9463fa8
2010-03-27 · TA获得超过164个赞
知道小有建树答主
回答量:257
采纳率:100%
帮助的人:135万
展开全部
#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;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式