c - 如何让我的代码工作?循环在不应该这样做时以某种方式终止
问题描述
我最近开始使用 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
解决方案
您不需要将 scan 的返回值分配给变量。
如果要从客户端扫描变量“n”,只需:
scanf("%d", &n);
代替
n = scanf("%d", &n);
关注此链接可以帮助您了解更多 https://computer.howstuffworks.com/c7.htm
推荐阅读
- go - 将外部错误映射到 golang 中的域错误
- c# - 使用表达式树构建动态查询
- r - 使用testthat时的R源文件位置问题
- laravel-nova - 未找到列:1054:使用 nova-repeatable-fields 时 MySQL 中“字段列表”中的未知列“员工”
- google-api - Google 登录用户更改了侦听器
- javascript - 如何在页面加载期间从函数更新对象值
- mysql - 根据时间戳删除超过 24 小时或 1 天的记录
- sql - 将不在聚合函数中的列保留在 group by 语句中
- neo4j - 多重关系的递归查询 Neo4j
- codenameone - 在表格布局中使用两个 textArea 会产生奇怪的行为 - cn1