【问题标题】:smaller numbers than a given r小于给定 r 的数字
【发布时间】:2021-11-01 22:31:23
【问题描述】:

代码在r 小于1(例如:0.99)时才起作用,但如果r = 1 没有出现:

#include <stdio.h>
#include <stdlib.h>

int main() {
    int nr = 2;
    float x1 = 0, x2 = 0, nextTerm = 0, r;

    scanf("%f", &r);

    while (nextTerm < r) {
        nextTerm = (1 + x2 + x1 * x1) / 3;
        x1 = x2;
        x2 = nextTerm;
        nr++;
    }
    printf("%d", nr);

    return 0;
}

代码在r 小于1(例如:0.99)时起作用,但如果r = 1 什么都没有出现

【问题讨论】:

  • 欢迎来到 SO!代码到底应该做什么?你期待什么输出?感谢您的澄清。
  • 你调试和检查变量内容了吗?
  • 如果什么也没有出现,说明你进入了无限循环。尝试在循环内打印 nextTerm 值。
  • 尝试每次通过循环打印nextTerm的值以查看序列。

标签: c string numbers


【解决方案1】:

当您设置一个大于或等于 1 的数字时,您正在循环验证小于 1 的数字的除法,您基本上是在将一个小于 1 的数字除以一个更大的数字(3,在 (1 + x2 + x1 * x1) / 3; 中) ,所以你永远不会得到一个大于 1 的数字来停止循环。因为无论你在提示符中输入什么,如果 x1 和 x2 的值小于 3,你将永远不会得到大于 1 的数字。

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2015-01-01
    • 2013-09-09
    相关资源
    最近更新 更多