鱼C论坛

 找回密码
 立即注册
查看: 1704|回复: 4

[已解决]求助,while语句

[复制链接]
发表于 2023-3-17 13:32:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
计算1-1/3+1/5-1/7+......1/n的值,其中1/n大于等于十的负六次方
最佳答案
2023-3-17 13:34:36
以下是使用while语句计算1-1/3+1/5-1/7+......1/n的值,其中1/n大于等于十的负六次方的C语言代码:
#include <stdio.h>

int main() {
    int n = 1;
    double sum = 1.0;
    double term = 1.0;

    while (term >= 1e-6) {
        n += 2;
        term = 1.0 / n;
        if (n / 2 % 2 == 0) {
            term = -term;
        }
        sum += term;
    }

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

    return 0;
}
在这个代码中,我们使用一个while循环来计算所需的总和。我们初始化变量n为1,这样我们可以从第二项开始计算,因为第一项的值已经在sum中初始化为1.0。变量sum保存当前的总和,而变量term用于计算每个新的项。

在while循环内部,我们首先增加n的值,这样我们可以计算下一个项的值。我们使用变量term计算当前项的值,然后根据项的奇偶性来决定是否将其加入总和。最后,我们将项的值加入总和中。

我们继续循环,直到最后一项的值小于1e-6,即1/n小于等于1e-6。在这一点上,我们退出while循环,并输出计算出的总和。

请注意,我们使用了浮点数来计算总和和每个项的值,这是因为1/n的值可能是一个小数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-17 13:34:36 | 显示全部楼层    本楼为最佳答案   
以下是使用while语句计算1-1/3+1/5-1/7+......1/n的值,其中1/n大于等于十的负六次方的C语言代码:
#include <stdio.h>

int main() {
    int n = 1;
    double sum = 1.0;
    double term = 1.0;

    while (term >= 1e-6) {
        n += 2;
        term = 1.0 / n;
        if (n / 2 % 2 == 0) {
            term = -term;
        }
        sum += term;
    }

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

    return 0;
}
在这个代码中,我们使用一个while循环来计算所需的总和。我们初始化变量n为1,这样我们可以从第二项开始计算,因为第一项的值已经在sum中初始化为1.0。变量sum保存当前的总和,而变量term用于计算每个新的项。

在while循环内部,我们首先增加n的值,这样我们可以计算下一个项的值。我们使用变量term计算当前项的值,然后根据项的奇偶性来决定是否将其加入总和。最后,我们将项的值加入总和中。

我们继续循环,直到最后一项的值小于1e-6,即1/n小于等于1e-6。在这一点上,我们退出while循环,并输出计算出的总和。

请注意,我们使用了浮点数来计算总和和每个项的值,这是因为1/n的值可能是一个小数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-17 14:24:52 | 显示全部楼层
isdkz 发表于 2023-3-17 13:34
以下是使用while语句计算1-1/3+1/5-1/7+......1/n的值,其中1/n大于等于十的负六次方的C语言代码:

不好意思,有个问题就是,这道题老师给的答案是0.79,好像不太一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-17 14:29:54 | 显示全部楼层
乔治爱啃脚趾 发表于 2023-3-17 14:24
不好意思,有个问题就是,这道题老师给的答案是0.79,好像不太一样

之前的代码有一些问题,我重新写了一个:
#include <stdio.h>

int main() {
    int n = 1;
    double sum = 0.0;
    double sign = 1.0;
    double term;

    while (1.0/n >= 1e-6) {  // 1/n >= 10^-6
        term = sign * (1.0 / n);
        sum += term;
        sign = -sign;  // 每次改变符号
        n += 2;  // 递增分母
    }

    printf("1 - 1/3 + 1/5 - 1/7 + ... = %lf\n", sum);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-17 14:54:48 | 显示全部楼层
isdkz 发表于 2023-3-17 14:29
之前的代码有一些问题,我重新写了一个:

这个我理解了,但我还是有点不明白上一个代码错哪了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 21:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表