用格里高利公式求给定精度的PI值(while循环)

本题要求编写程序,计算序列部分和 4∗(1−1/3+1/5−1/7+...) ,直到最后一项的绝对值小于给定精度eps

输入格式:

输入在一行中给出一个正实数eps

输出格式:

在一行中按照“Pi = pi”的格式输出部分和的值pi,精确到小数点后四位。题目保证输入数据和计算结果均不超过双精度范围。

输入样例1:

0.0001

输出样例1:

Pi = 3.1418

输入样例2:

0.2

输出样例2:

Pi = 2.8952

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

C程序如下:

#include 

int main(void)
{
    double eps;
    scanf("%lf", &eps);
    int n = 1;//n表示这是第几项
    double x = 1;//计算每一次加的数
    double a = 1.0, sum = 1;//a将作为分母参与计算,sum用于求前n项的和
    while(fabs(x) >= eps)//fabs()函数用于求绝对值
    {//次循环将从第二项开始计算
        n++;//项数加一
        a *= -1;//没做一次运算,运算符号将会改变
        x = a * 1 / (2 * i - 1);//计算第n项的值
        sum += x;//计算前n项的和
    }
    printf("Pi = %.4lf", 4 * sum);
    return 0;
}

你可能感兴趣的:(算法,c语言)