【c语言】 1-1/2+1/3...+1/99-1/100求近似值

【c语言】 1-1/2+1/3...+1/99-1/100求近似值

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7626683
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言求1-1/2+1/3-1/4+...+1/99-1/100
  • 除此之外, 这篇博客: (C语言)计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值(基础笔试题)中的 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    这个题的解法我们可以将其分为两个部分然后求和,即sum=sum1+sum2;
    其中sum1用来表示奇数项
    sum2用来表示偶数项
    注意:因为都是分数,所以对sum,sum1和sum2定义的时候应该定为float型。
    代码为:

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int i, j;
    	float sum = 0;
    	float sum1 = 0;
    	float sum2 = 0;
    	for (i = 1; i < 100; i += 2)
    		sum1 = sum1 + 1.0 / i;
    	for (j = 2; j <= 100; j +=2)
    		sum2 = sum2 - 1.0 / j;
    	sum = sum1 + sum2;
    	printf("%f\n", sum);
    	system("pause");
    	return 0;
    }
    

    输出结果为:
    在这里插入图片描述

  • 以下回答来自chatgpt:

    解决方案:

    根据参考资料中的代码段落0和段落3,我们可以使用以下的代码来计算 1-1/2+1/3...+1/99-1/100 的近似值:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        int i;
        double n = 0.00;
        for(i = 1; i <= 100; i++)
        {
            if(i % 2 == 1)
            {
                // 奇数位加和
                n += 1.0 / i;
            }
            else
            {
                // 偶数位减和
                n -= 1.0 / i;
            }
        }
        printf("n = %lf\n",n);
    
        return 0;
    }
    

    代码解释:

    • 第3行:包含了必要的stdio.hmath.h头文件。
    • 第6行:定义一个按照 double 类型存储的变量 n,其初始值为0.00。
    • 第7行:开始 for 循环,遍历1到100。
    • 第9行:如果当前循环的计数器 i 为奇数,则执行下面的操作。
    • 第10行:将 1/i 的值加到变量 n 上。
    • 第12行:如果当前循环的计数器 i 为偶数,则执行下面的操作。
    • 第13行:将 1/i 的值减去变量 n。
    • 第16行:输出最终计算得出的 n 的值。
    • 第18行:结束程序,并返回0。

    以上代码输出的结果为:

    n = 0.688172
    

    因此,1-1/2+1/3...+1/99-1/100 的近似值为 0.688172。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
#include <stdio.h>

int main() {
    int i;
    double result = 0.0;

    for (i = 1; i <= 100; i++) {
        if (i % 2 == 0) {
            result -= 1.0 / i;
        } else {
            result += 1.0 / i;
        }
    }

    printf("近似值为: %lf", result);

    return 0;
}