7-50 近似求PI(15 分)

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

π2=1+1!3+2!3×5+3!3×5×7++i!3×5××(2×i+1)+ π 2 = 1 + 1 ! 3 + 2 ! 3 × 5 + 3 ! 3 × 5 × 7 + ⋯ + i ! 3 × 5 × ⋯ × ( 2 × i + 1 ) + ⋯

输入格式:

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

scanf("%le", &eps);

输出格式:

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

PI = 近似值

输入样例:

1E-5

输出样例:

PI = 3.14158

#include <stdio.h>

double factor(int n) {
    if (n == 0) {
        return 1.0;
    }
    else {
        double result = 1.0;
        for (int i = 2; i <= n; i++) {
            result *= i;
        }

        return result;
    }
}

int main(void) {
    double sum = 0.0, numerator = 1.0, denominator = 1.0, item, eps, result;

    scanf("%le", &eps);
    for (int i = 0;; i++) {
        numerator = factor(i);
        denominator *= 2 * i + 1;
        item = numerator / denominator;
        sum += item;
        if (item < eps) {
            break;
        }
    }
    result = 2 * sum;
    printf("PI = %.5f\n", result);

    return 0;
}
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐