0%

使用C语言计算圆周率

文章时效性提示

本文发布于 403 天前,部分信息可能已经改变,请注意甄别。

根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
π2=1+13+2!3×5+3!3×5×7++n!3×5×7××(2n+1)+

输入格式:

输入在一行中给出小于1的阈值。

输出格式:

在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。

输入样例:

1
0.01

输出样例:

1
3.132157

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
double factorial(int n);//计算阶乘
int main()
{
    float threshold = 0;//阈值
    float input = 0;//输入
    float sum = 0;//结果
    float numerator = 0;//分子
    float denominator = 1;//分母
    scanf("%f",&input);
    int i = 1;
    do {
        int x = 1;
        int j = 1;//计算分母循环用
        for (j = 1; j<=i;j++)//计算分母
        {
            denominator = denominator * x;
            x = x + 2;
        }
        numerator = factorial(i-1);//计算分子
        threshold = numerator/denominator;//计算阈值(当前的最后一项)
        sum = sum + threshold;//计算和
        i++;
        denominator = 1;
    } while (threshold > input);
    sum = sum * 2;
    printf("%.6f",sum);
}
double factorial(int n)//计算阶乘
{
    double result = 1;
    int i = 0;
    for (i = 1; i <= n; i++)
    {
        result = result * i;
    }
    return result;
}