原题链接:C语言训练-求PI*
解题思路:
把问题转化为,求前N(每个N为公式中的分数)个数的和,直到fabs(N)<1E-6结束;
用while循环控制,PI/4=+1/1 -1/3 +1/5 -1/7 +1/9 ........
定义浮点型变量denominator表示分母,分子的变化pow(-1,i) i从0开始,逐次加1;
分母和PI定义为浮点型,若分母为整型,输出结果为4.000000;
参考代码:
c++:
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
int main()
{
double PI = 0, denominator = 1;;
int i = 0;
while ( 1 / denominator >= 1E-6 )
{
PI += (pow( -1, i ) / denominator);
denominator += 2;
i++;
}
cout << fixed << setprecision( 6 ) << PI * 4;
return(0);
}c:
#include <stdio.h>
#include <math.h>
int main()
{
double PI = 0, denominator = 1;;
int i = 0;
while ( 1 / denominator >= 1E-6 )
{
PI += (pow( -1, i ) / denominator);
denominator += 2;
i++;
}
printf( "%.6f", PI * 4 );
return(0);
}别忘点赞哦-.-
0.0分
7 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
请问楼主是怎么加上最后一项的,我的需要后补一次循环步骤 #include<stdio.h> #include<math.h> int main() { int i=0; double p,q=0,k; do { i++; p=pow(-1,i-1)/(2*i-1); q=q+p; if(p<0) { p=0-p; } } while(p>=pow(10,-6)); i++;//这里增加了一次。 p=pow(-1,i-1)/(2*i-1); q=q+p; printf("%.6f",q*4); return 0; }#include<stdio.h> #include<math.h> int main() { int n=0; double i,pi,sum=0; while(fabs(i)>=pow(10,-6)) { i=pow(-1,n)/(2*n+1); sum=sum+i; n++; } pi=sum*4; printf("%.6lf\n",pi); return 0; } 我的为什么是3.141595?麻烦大佬帮我看一下,谢谢!@一叶知秋 #include<stdio.h> #include<math.h> int main() { int n=0; double i,pi,sum=0; while(fabs(i)>=pow(10,-6)) { i=pow(-1,n)/(2*n+1); sum=sum+i; n++; } pi=sum*4; printf("%.6lf\n",pi); return 0; }