【PTA】近似求PI

7-50 近似求PI(15 分)

本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。

​2 ​ ​π ​​=1+ ​3 ​ ​1! ​​+ ​3×5 ​ ​2! ​​+ ​3×5×7 ​ ​3! ​​+⋯+ ​3×5×⋯×(2×i+1) ​ ​i! ​​+⋯​2 ​π ​​=1+ ​3 ​ ​1! ​​+ ​3×5 ​ ​2! ​​+ ​3×5×7 ​ ​3! ​​+⋯+ ​3×5×⋯×(2×i+1) ​ ​i! ​​+⋯{\color{Green} }\pi /2=1+1!/3+2!/(3*5)+3!/(3*5*7)+.........i!/(3*5*7*.....*(2*i+1))

输入格式:

输入在一行中给出精度eps,可以使用以下语句来读输入:

scanf("%le", &eps)

输出格式:

在一行内,按照以下格式输出π的近似值(保留小数点后5位):

PI = 近似值

输入样例:

1E-5

输出样例:

PI = 3.14158

 思路:

最开始写的时候把每一项都割裂来看了,单独算的分子,分母。发现有个测试点过不了,就去网下找了下,参考网上的重新写的。看来还是看做整体来写比较简单。

代码:

#include <stdio.h>
int main()
{
    double eps;
    scanf("%le", &eps);
    double sum=1;
    double temp=1;
    for(int i=1;temp>eps;i++)
	{
        temp = temp*i/(2*i+1);
        sum += temp;
    }
    printf("PI = %.5f\n", 2*sum);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/jiangxiaoshan123/article/details/81637490