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
相关产品推荐
相关产品推荐

