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

C++作业代码死循环求助:输入任何值循环都无法终止

问题分析:死循环的do-while条件错误

嘿,这个问题我太熟悉了——你的循环陷入死循环完全是因为while条件里的逻辑运算符用错啦!

咱们来拆解一下你写的条件:

while (choice != 'c' || choice != 'n');

这个逻辑或(||)的问题在于:无论choice是什么值,这个条件永远为真。

举个例子:

  • 如果用户输入'c',choice != 'c'是假,但choice != 'n'是真,逻辑或只要有一个为真,整体就为真,循环继续;
  • 如果用户输入'n',choice != 'n'是假,但choice != 'c'是真,条件还是为真,循环停不下来;
  • 输入其他字符的话,两个判断都是真,条件自然也为真。

正确的逻辑应该是:当输入的字符既不是'c'也不是'n'时,才继续循环,这时候要用逻辑与(&&):

修正后的代码如下:

#include <iostream> 
using namespace std; 

int main() {
    char choice; 
    do { 
        cout << "Type 'c' for characters or type 'n' for numbers: "; 
        cin >> choice; 
    } while (choice != 'c' && choice != 'n');
    
    // 后续逻辑可以写在这里
    return 0;
}

这样一来,只有当用户输入的不是'c'并且不是'n'的时候,循环才会继续;一旦输入了正确的字符,条件就会变为假,循环正常退出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:47:31