int main() { int i = 0; char c; while (1) { c = '\0'; while (c != 13 && c!=27) { c = getchar(); printf("%c\n", c); } if (c == 65) { break; } i++; printf("The NO is %d\n", i); } printf("The end"); return 0; }哪里错了
时间: 2023-11-08 22:03:55 浏览: 77
在这个程序中,当你输入回车键(13)或者ESC键(27)时,程序会输出这个字符并继续等待输入。这个过程会一直重复,直到你输入'A'为止才会跳出循环。然而,在输入'A'之前,程序会输出当前的编号i和"The NO is i"这个字符串。因此,如果你输入回车或ESC键时,会出现一些奇怪的输出。
为了解决这个问题,你可以在循环开始时检查c的值是否为回车键或ESC键,如果是的话,就跳过输出i和"The NO is i"这个字符串的步骤,直接回到循环开始。修改后的程序如下所示:
``` c
int main() {
int i = 0;
char c;
while (1) {
c = '\0';
while (c != 13 && c!=27) {
c = getchar();
if (c == 13 || c == 27) {
continue;
}
printf("%c\n", c);
}
if (c == 'A') {
break;
}
i++;
printf("The NO is %d\n", i);
}
printf("The end");
return 0;
}
```
这个程序可以正确地输出编号i和"The NO is i"这个字符串,而不会在输入回车或ESC键时输出。
阅读全文