解题思路:

注意事项:

参考代码:

/*

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分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论