把开关放在do..while里面
Putting a switch inside of do...while
所以我有一个do…while语句,除非用户输入四个内容中的一个,否则它应该重复。这四件事有一个中断,它们将控制while的变量设置为true,其中默认值为false。如果用户没有输入四个答案中的一个,变量将保持为false,这将使do…同时重新开始。事实并非如此。
#include <string>
#include <iostream>
using namespace std;
int main()
{
int q5_answer = 1;
int q5_answerU;
int total_score;
bool q5_valid = false;
//Question_5:
do
{
cout << "Question 5 (#1 is correct)" <<endl;
cout << "1.) Answer 1" <<endl;
cout << "2.) Answer 2" <<endl;
cout << "3.) Answer 3" <<endl;
cout << "4.) Answer 4" <<endl;
cin >> q5_answerU;
switch (q5_answerU)
{
case 1:
cout << "Correct!" <<endl;
q5_valid = true;
(total_score = total_score + 1);
break;
case 2:
cout << "Incorrect" <<endl;
q5_valid = true;
break;
case 3:
cout << "Incorrect" <<endl;
q5_valid = true;
break;
case 4:
cout << "Incorrect" <<endl;
q5_valid = true;
break;
default:
cout << "Invalid answer" <<endl;
}
} while (q5_valid = false);
}
while
内部的条件是一个"意外"赋值,而不是比较。它需要读取while (q5_valid == false)
或更惯用的while (!q5_valid)
。
这不是布尔表达式:
q5_valid = false
它将变量q5_valid设置为false
,并返回false
。替换为:
!q5_valid
或
q5_valid == false
它们是一样的。前者更便于阅读。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- while循环中while循环的时间复杂度是多少
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 擦除while循环中迭代的元素
- 为什么我不能在 while 循环中创建线程?
- 退出简单while循环时出现问题
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 嵌套While循环不起作用(C++问题)
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 使用 GMP 的 while 循环出现问题
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 为什么在 while 循环中返回表达式不起作用
- 如何使用 do while 循环确定最高值和最低值
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- 把开关放在do..while里面