gpt4 book ai didi

c - 为什么不输入数字会死循环?

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:41 25 4
gpt4 key购买 nike

当我输入字母 'q' 作为 grade 时,它会无限运行。

#include <stdio.h>
#include <stdbool.h>

int main(void) {
int grade;
bool flag = true;

while (flag) {
puts("-----------------------------"); // comment
printf("What's your grade out of 10? ");
scanf(" %d", &grade);

switch (grade) {
case 10:
case 9:
case 8:
case 7:
case 6:
printf("Pass\n");
break;
case 5:
printf("Fail\n");
break;
case 4:
printf("Fail\n");
break;
case 3:
printf("Fail\n");
break;
case 2:
printf("Fail\n");
break;
case 1:
printf("Fail\n");
break;
case 0:
printf("Fail\n");
break;
default:
printf("Illegal Grade\n");
flag = false;
break;
}
}
return 0;
}

最佳答案

scanf(" %d",&grade);

它扫描字符串中的int。 “q”不是 int。当您输入“q”时,变量 grade 的值保持不变。您必须检查 scanf 的返回值以验证填充占位符的数量。

if (scanf(" %d",&grade) != 1) {
printf("Illegal Grade\n");
exit(1); // or break
}

其他部分没问题。

关于c - 为什么不输入数字会死循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50560114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com