解题思路:
把问题转化为,求前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);
}

别忘点赞哦-.-

点赞(21)
 

0.0分

7 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 15 条评论

初生羊犊 5年前 回复TA
@冲冲 #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; }
冲冲 5年前 回复TA
#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大佬们能找一下错误吗谢谢啦
浅枫 5年前 回复TA
大佬啊。数学不好的我硬是想了一晚上都没有想出怎么下手!!
Manchester 7年前 回复TA
@一叶知秋 么么哒☺
一叶知秋 7年前 回复TA
POW(-1,i)用的太好了。