如题所述
刚写的,测试过了
==========================
#include <iostream>
#include<iomanip>
int main()
{
int i = 1; //分母,每次循环+2
int flag = 1; //符号,每次循环变号
double tmp; //存储每次的那一位,tmp = 1.0/i
double sum = 0.0; //存储和,循环结束后 sum = PI/4
do
{
tmp = 1.0/i; //计算每一位
sum = sum + flag * tmp; //求和得到pi/4
i = i + 2; //分母+2
flag = -flag; //作为符号,迭代一次后变号
}
while(tmp>0.00000001); //判断最后一位绝对值,以决定是否退出循环
std::cout.precision(8);//设置输出小数位数 8位
std::cout << "pi = " << sum * 4 << std::endl;
return 0;
}
=======运行结果========
pi = 3.1415927
==========================
#include <iostream>
#include<iomanip>
int main()
{
int i = 1; //分母,每次循环+2
int flag = 1; //符号,每次循环变号
double tmp; //存储每次的那一位,tmp = 1.0/i
double sum = 0.0; //存储和,循环结束后 sum = PI/4
do
{
tmp = 1.0/i; //计算每一位
sum = sum + flag * tmp; //求和得到pi/4
i = i + 2; //分母+2
flag = -flag; //作为符号,迭代一次后变号
}
while(tmp>0.00000001); //判断最后一位绝对值,以决定是否退出循环
std::cout.precision(8);//设置输出小数位数 8位
std::cout << "pi = " << sum * 4 << std::endl;
return 0;
}
=======运行结果========
pi = 3.1415927
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-10-31
这个程序就可以了,i<1000000后面的这个数字可以你自己改的,改得越大就越接近,不过运行时间会增加
#include<stdio.h>
void main()
{
double pi=0.0,i=1.0,j=1.0;
for(;i<1000000;i+=2,j=-j)
pi+=1/(i*j);
pi=pi*4;
printf("pi=%lf",pi);
}
#include<stdio.h>
void main()
{
double pi=0.0,i=1.0,j=1.0;
for(;i<1000000;i+=2,j=-j)
pi+=1/(i*j);
pi=pi*4;
printf("pi=%lf",pi);
}