提问人:Mars 提问时间:9/8/2023 最后编辑:Remy LebeauMars 更新时间:9/8/2023 访问量:73
如何在不填充所有 cin 变量的情况下打破循环?
How to break a loop without fill all cin variables?
问:
如果有人进入终端,我需要一个声明来打破外部循环。但是,除非有人满足语句的所有变量,或者在新行中输入另一个字符,否则它不会中断。switch
while
'q'
cin
我的代码目前如下:
#include <iostream>
#include <cmath>
int main () {
bool run = true;
while (run == true) {
int a, b;
char function;
std::cout << "Enter the expression: ";
std::cin >> function >> a >> b;
if (function == 'q') {
run = false;
break;
}
switch (function) {
case '+':
std::cout << a << " + " << b << " = " << a + b << std::endl;
break;
case '-':
std::cout << a << " - " << b << " = " << a - b << std::endl;
break;
case '*':
std::cout << a << " * " << b << " = " << a * b << std::endl;
break;
case '/':
std::cout << a << " / " << b << " = " << a / b << std::endl;
break;
default:
std::cout << "That is not a valid operator!\n";
break;
}
}
return 0;
}
很遗憾,我不被允许使用 .goto
我有几种打破循环的方法。包括但不限于;使用 OR 作为循环条件,重新排列变量声明,并直接中断循环。int
bool
答:
1赞
Ted Lyngmo
9/8/2023
#1
而不是
std::cin >> function >> a >> b;
if (function == 'q') {
run = false;
break;
}
您可以将提取从上到下拆分为不同的步骤cin
if (not(std::cin >> function) || // 1.
function == 'q' || // 2.
not(std::cin >> a >> b)) // 3.
{
break;
}
- 检查 extracing to 是否失败。如果没有,请检查 2。
function
- 检查提取到的内容是否是 .如果不是,请检查 3。
function
q
- 检查两个操作数的提取是否失败。
如果满足任何条件,它将使逻辑 OR 链短路并退出循环,这意味着您可以通过键入 来退出循环。true
break
qReturn
1赞
463035818_is_not_an_ai
9/8/2023
#2
在验证输入的情况下,您可以简单地先检查,然后再继续其余的:function
function
std::cin >> function;
if (function == 'q') break;
std::cin >> a >> b;
通常,从嵌套结构到的简单方法是 .例如,要从交换机内部跳出循环,您可以执行以下操作。而不是break
return
while
int main() {
// ...
while(condition) {
//...
switch(function) {
// ...
default:
break; // want to break out of the while
执行此操作:
void foo(char function, int a,int b) {
while(condition) {
//...
switch(function) {
// ...
default:
return; // breaks out of the while
}
}
int main() {
// ...
foo(function,a,b);
}
下一个:从排序的链表中删除重复项
评论
function
std::cin >> function >> a >> b;
std::cin >> function;
goto
goto
goto
goto
break
switch