You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中该do-while循环为何无法正常运行?

井字棋符号选择代码的问题修复

你的代码有两个关键问题导致循环无法正常工作:

1. 循环条件逻辑错误

原循环条件(symbol != 'X') || (symbol != 'O')永远为真——不管输入的是X还是O,总有一个条件成立(比如输入X时,symbol != 'O'为真;输入O时,symbol != 'X'为真),导致循环永远不会终止。

正确的条件应该用逻辑与&&,表示既不是X也不是O时才继续循环:

while ((symbol != 'X') && (symbol != 'O'));

2. 输入缓冲区残留的换行符问题

使用scanf("%c", &symbol)时,用户输入字符后按下的回车符会留在输入缓冲区中,下一次循环时scanf会直接读取这个回车符,导致程序重复输出提示而不等待新输入。

解决方法是在%c前加一个空格,让scanf自动跳过所有空白字符(包括回车、空格):

scanf(" %c", &symbol);

修正后的完整代码

char symbol;

do
{
    printf("Choose Symbol X/O: ");
    scanf(" %c", &symbol);
} while ((symbol != 'X') && (symbol != 'O'));

内容的提问来源于stack exchange,提问作者Dimitris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:05:14