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

为何do-while循环无法终止?输入n/N后循环仍持续运行

问题分析与解决

哦,这个逻辑坑我之前也踩过!你的问题出在do-while循环的条件判断逻辑上,咱们来一步步拆解:

原循环条件是:

while(adminSubChoice!='n' || adminSubChoice !='N');

这个条件永远会返回true,因为一个字符不可能同时等于'n'和'N':

  • 当你输入'n'时,adminSubChoice!='N'是成立的,所以整个||(逻辑或)的结果还是true,循环停不下来;
  • 当你输入'N'时,adminSubChoice!='n'是成立的,同样整个条件结果为true,循环继续运行;
  • 输入其他字符时,两个判断都成立,当然也会继续循环。

修正方案

你需要把逻辑或||改成逻辑与&&,表示当输入既不是'n'也不是'N'的时候,才继续循环:

do{
    cout<<"\nEnter Student ID: ";
    cin>>studentId;
    cout<<"\nEnter Student Name: ";
    cin>>studentName;
    cout<<"\nEnter Student Password: ";
    cin>>studentPassword;
    cout<<"\nAdd another account? y/n ";
    cin>>adminSubChoice;
} while(adminSubChoice != 'n' && adminSubChoice != 'N');

更简洁的写法(可选)

你可以用tolower()函数把输入的字符统一转成小写,这样只需要判断一次,代码更清晰:

#include <cctype> // 需要包含这个头文件来使用tolower()

do{
    // 原有输入代码...
    cin>>adminSubChoice;
} while(tolower(adminSubChoice) != 'n');

这样不管用户输入大写N还是小写n,都会被转成小写,只要不等于'n'就继续循环,逻辑更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:57:40