当前位置:首页C语言 > 正文

c语言题目:读入1个正实数eps,计算并输出1-1/3+1/5-1/7+--,直到最后一项的绝对值小于eps(即发现所求出的项绝对值小于eps后,还加一次)

作者:野牛程序员:2023-11-03 10:18:10C语言阅读 3047

c语言题目:读入1个正实数eps,计算并输出1-1/3+1/5-1/7+--,直到最后一项的绝对值小于eps(即发现所求出的项绝对值小于eps后,还加一次)。输出保留6位小数。例:输入 0.0001输出 0.785448输入 0.1输出 0.744012


代码如下:

#include <stdio.h>
#include <math.h>

int main() {
    int temp, flag;
    double eps, item, sum;
    int n=1;
    temp=0;

    scanf("%lf", &eps);

    flag = 1;
    sum = 0;
    item = 1.0;

    while (fabs(item) >= eps) {

        temp=1+(n-1)*2;
        printf("%d\\n", temp);
        item = flag*1.0/temp;
        sum += item;
        flag = -flag;
        n=n+1;

    }

    printf("%.6f\\n", sum);

    return 0;
}



实现的算法是一个数学上常见的算法,用于计算π的近似值。它是著名的莱布尼茨级数(Leibniz series)或莱布尼茨公式,用于估算π/4。

莱布尼茨级数的公式为:

π/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...

这个级数是一个交替级数,每一项的正负号交替出现,而分母部分是递增的奇数。通过累加足够多的项,可以逼近π/4,然后将结果乘以4以获得π的估算值。

在这段代码中,它使用了一个 while 循环来计算这个级数的和,直到最后一项的绝对值小于用户指定的精度 eps 为止。这个算法是数值逼近的一种方法,用于估算π的近似值,精度越高(eps 越小),计算的项数就需要越多,以获得更精确的估算值。



野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击