首页 > 解决方案 > 如何让我的代码工作?循环在不应该这样做时以某种方式终止

问题描述

我最近开始使用 cs50,我正在处理问题集 1,我的代码有问题,我无法弄清楚哪里出了问题。问题是提示一个介于 1 和 8(含)之间的数字。如果您不输入 1 到 8(含)之间的数字,它应该再次提示。

$ ./mario
Height: -1
Height: 0
Height: 42
Height: 50
Height: 4

我曾尝试使用 do while 循环,但如果输入错误的数字或正确的数字,循环将终止。

int main(void) {

    int n;
    do {

        printf("Height: ");
        n = scanf("%d", &n);

    }while(n < 1 || n > 8);
}

它应该像下面这样工作。

$ ./mario
Height: -1
Height: 0
Height: 42
Height: 50
Height: 4
Stored: 4

但这是我在 CLion 中运行它时给出的信息。

C:\Users\acer\CLionProjects\untitled5\cmake-build-debug\hello.exe
Height:11
Process finished with exit code 0

标签: ccs50

解决方案


您不需要将 scan 的返回值分配给变量。

如果要从客户端扫描变量“n”,只需:

scanf("%d", &n);

代替

n = scanf("%d", &n);

关注此链接可以帮助您了解更多 https://computer.howstuffworks.com/c7.htm


推荐阅读