解题思路:
注意事项:
参考代码:
/*
pi的计算公式:
pi/4=1-1/3+1/5-1/7+...
1) 控制每一项的正负:
方法一: k=1;k*=-1;
方法二: k=0;pow(-1,k);
2) 控制每一项是一个小数
方法一:分子为小数 double k=1;double k=0;
方法二:分母为小数 double i=1;
注:除法运算结果为小数,分子和分母中必然一个为浮点型数据
3) 保留6为小数:
方法一:printf("%lf",4*res);
方法二:printf("%f",4*res);
方法三:cout <<fixed <<4*res; //加上头文件#include<iomanip>
方法四:cout <<setioflags(ios::fixed) <<4*res;
4) 本题结果:3.141591
实际pi值:3.14159265...
*/
#include<iostream>
#include<cmath> //pow()函数所处头文件
#include<iomanip> //fixed所处头文件
using namespace std;
int main()
{
double res=0,k=1;
int i=1;
while(1.0/i>=1e-6)
{
res+=k/i;
k*=-1;
i+=2;
}
//printf("%lf\n",4*res); //输出结果:3.141591
printf("%f\n",4*res);
//cout <<4*res <<endl; //输出结果,只有5位小数
//cout <<setiosflags(ios::fixed) <<4*res <<endl; //输入结果,六位小数
//cout <<fixed <<setprecision(6) <<4*res <<endl; //输入结果,六位小数
return 0;
}
//int main()
//{
// double res=0;
// int k=1;
// for(int i=1;1.0/i>=1e-6;i+=2)
// {
// res+=k*1.0/i;
// k*=-1;
// }
// printf("%lf\n",4*res);
// return 0;
//}
//int main()
//{
// double res=0,i;
// int j=0;
// for(i=1;1/i>=1e-6/*fabs(1/i)>=pow(10,-6)*/;i+=2,j++)
// {
// res+=pow(-1,j)/i;
// }
// printf("%.6lf\n",4*res);
// return 0;
//}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:1175 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:596 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:643 |
不容易系列 (C语言代码)浏览:702 |
简单的a+b (C语言代码)浏览:600 |
程序员的表白 (C语言代码)浏览:706 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:368 |
WU-陶陶摘苹果2 (C++代码)浏览:1018 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:710 |
蛇行矩阵 (C语言代码)浏览:606 |