解题思路:
把问题转化为,求前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 人评分
请问楼主是怎么加上最后一项的,我的需要后补一次循环步骤 #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 i=1; int sign=-1; double sum=0; double t=1; sum+=1; while(fabs(t)>=1E-6){ i=i+2; t=1.0/i; //printf("%f\n",t); sum+=t*sign; sign=-sign; } printf("%.6f\n",sum*4); return 0; } 为什么我这个答案是3.141595大佬们能找一下错误吗谢谢啦
初生羊犊 2019-04-25 00:07:48 |
#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; }
初生羊犊 2019-04-25 00:08:59 |
我的哪里错了?也是3.141595
smile浅笑 2019-08-25 11:27:59 |
因为最后一项小于1E-6,退出循环了,在循环结束后加一步sum=sum-t就可以了
POW(-1,i)用的太好了。
Manchester 2018-01-02 19:02:39 |
么么哒☺
初生羊犊 2019-04-25 00:10:50 |
#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; }
初生羊犊 2019-04-25 00:12:11 |
我的哪里错了?为什么是3.141595?麻烦帮看一下,谢谢!
C语言训练-求素数问题 (C语言代码)浏览:773 |
【绝对值排序】 (C语言代码)浏览:832 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:686 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:901 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:910 |
Minesweeper (C语言描述,蓝桥杯)浏览:1177 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1968 |
DNA (C语言代码)浏览:798 |
演讲大赛评分 (C语言代码)浏览:1697 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:494 |