CS50 - 人口 - 而“小于”接受相等值

cs50 - population - while 'less than' accepts an equal value

提问人:detour 提问时间:9/20/2023 更新时间:9/20/2023 访问量:50

问:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    // TODO: Prompt for start size
    int n;
    do
    {
        n = get_int("Positive Interger Greater Than 9: ");

    }
    while (n < 9);

    // TODO: Prompt for end size
    int x;
    do
    {
        x = get_int("Positive Int. Greater Than Start: ");
    }
    while (x < n);

    // TODO: Calculate number of years until we reach threshold
    int y = 0;
    do
    {
        n = n + (n / 3) - (n / 4);
        y++;
    }
    while (n < x);

    // TODO: Print number of years
    printf("Years: %i\n", y);
}

这就是我所拥有的,其他一切似乎都有效 但是当我尝试在开始提示中输入时,“9” 程序接受该输入,即使 9 < 9 是错误的陈述,因此应该再次提示,对吧?

我在这里错过了什么?

下一个提示也会发生同样的事情,其中输入必须小于原始输入 (n) 当我输入相同的值时,程序会接受它,而不是提示我进行新的输入

我尝试将其更改为 n < 10,但我只是觉得这似乎不是正确的解决方案,是吗?

特别是考虑到第二部分,我必须使它比前一个 int 少

C while 循环 CS50

评论

0赞 Fe2O3 9/20/2023
"所以应该再次提示,对吧?错。条件为 false,因此特定循环终止并且不会继续(再次询问您)。你把的想法弄得一团糟。(不要更改第二个条件。如果您从 9 只骆驼开始,目标是拥有 9 只骆驼,则所需的年数 # 为 0
1赞 Serge Ballesta 9/20/2023
犯 错。。。 如果语句为 true,则继续迭代,并在语句为 false 时立即退出循环。你在这里有什么问题?do ...while ... ;
1赞 detour 9/20/2023
@SergeBallesta我想这只是一个初学者的错误,我并没有过多地考虑它如何归结为真与假,
2赞 detour 9/20/2023
谢谢你们俩的帮助,阅读你的评论真的帮了大忙
1赞 nielsen 9/20/2023
如果您希望用户输入大于 9 的整数,只要输入的整数不大于 9,您就希望继续询问,即 或者,等价或等价。使用对您最有意义的变体。while(!(n>9));while(n <= 9);while(n < 10);

答:

0赞 chux - Reinstate Monica #1

考虑像注释的要求一样进行编码:

// do {
//   n = get_int("Positive Interger Greater Than 9: ");
// } while (n < 9);

do {
  n = get_int("Positive Integer Greater Than 9: ");
} while (!(n > 9));  // Repeat if n > 9 not satisfied.

(提示:还要运行拼写检查器。

评论

0赞 Zakk 9/20/2023
整数,所以它必须是 。!(n < 0) && !(n > 9)
0赞 chux - Reinstate Monica 9/20/2023
@Zakk 由于数字必须> 9,因此要求它是正数是多余的。提示可以是 。"Integer Greater Than 9: "
0赞 Zakk 9/20/2023
如果 OP 必须明确告诉用户他做错了什么,那么他必须进行该检查。否则你是对的。