虽然循环不检查或条件
While loop not checking or condition
我正在做 c++ 练习。我面临的一个问题如下...
编写一个程序,继续要求用户输入 5以外的任何数字,直到用户输入数字 5。然后告诉用户"嘿!你不应该输入5!"然后退出程序。
★ 修改程序,以便在 10 次迭代后,如果用户仍未输入 5,将告诉用户"哇,你比我更有耐心,你赢了"并退出。
#include <iostream>
using namespace std;
int main()
{
int userNum;
int numTimes = 0;
do
{
cout << "Please enter a number: ";
cin >> userNum;
numTimes++;
}while ((numTimes != 10) || (userNum != 5));
{
if (numTimes == 10)
{
cout << "Wow, you're more patient than I am, you win.n";
}
else
{
cout << "Hey! you weren't supposed to enter 5!n";
}
}
}
我似乎无法让 while 循环的 or 条件正常工作。
你以一种
令人困惑的方式这样做,我的目标是表现力:
#include <iostream>
int main() {
int userNum;
int numTimes = 0;
while (true) {
std::cout << "Please enter a number: ";
std::cin >> userNum;
if (userNum == 5) {
std::cout << "Hey! you weren't supposed to enter 5!n";
break;
}
++numTimes;
if (numTimes == 10) {
std::cout << "Wow, you're more patient than I am, you win.n";
break;
}
}
}
break
允许您方便地退出循环。不过,请不要"滥用"这一点来使事情过于复杂或完成奇怪的技巧。没有人喜欢意大利面条代码。
请注意您不应该use namespace std;
.还要尝试在var++
上使用++var
var++
因为会不必要地复制对象。
Please enter a number: 5 Hey! you weren't supposed to enter 5!
Please enter a number: 12 Please enter a number: 45 Please enter a number: 12 Please enter a number: 0 Please enter a number: 9 Please enter a number: 1 Please enter a number: 2 Please enter a number: 3 Please enter a number: 4 Please enter a number: 1 Wow, you're more patient than I am, you win.
在这里更改它
while ((numTimes != 10) || (userNum != 5));
对此
while ((numTimes != 10) && (userNum != 5));
因为您希望它一旦一个条件变false
就停止。你现在用||
的方式,它只有在两个条件同时为真时才停止,所以如果第 10 个数字是5
.如果只输入一个5
,或者刚刚达到 10,它不会停止。如果在 10 个数字之后输入5
,它甚至不会停止。
请记住,即使只有a
和b
中的一个是真的,a || b
也是true
。但是既然条件这样令人困惑,为什么不这样拆分逻辑呢?
int main()
{
int userNum;
for (int numTimes = 0; numTimes < 10; numTimes++){
std::cout << "Please enter a number: ";
std::cin >> userNum;
if (userNum == 5) {
std::cout << "Hey! you weren't supposed to enter 5!n";
return 0;
}
}
std::cout << "Wow, you're more patient than I am, you win.n";
}
问题出在您的状况上。您的循环将继续,直到不再满足条件。
while ((numTimes != 10) || (userNum != 5));
强制循环继续,直到两个条件都为 false。如果你的 numTimes == 10,那么 userNum 仍将<5
while ((numTimes < 10) and (userNum != 5));
是正确的条件
相关文章:
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 条件不起作用,谁能解释为什么会这样?
- 为什么编译器不检查被覆盖函数的存储类?
- 条件不变的 if 语句会减慢我的C++代码吗?
- 协议缓冲区ParseFromString不检查消息结尾
- 虽然循环不检查或条件
- 有没有办法有条件地检查窗口是否正在使用滚动条
- 为什么C++字符串迭代器不检查错误?
- 使用 auto 时不检查数组边界
- 如何使用条件来检查类型名 T 是否是 C++ 中浮点类型的整数类型
- 是否可以在 std::optional 中放置一个实例,而不检查/破坏前一个实例?
- Dijkstra算法条件不正确
- C++循环多个条件不一致
- 当条件不满足时,必须返回输入
- std::vector::shrink_to_fit() 不检查分配器相等性
- 如果条件不起作用,怎么来
- 为什么我们总是检查输入是否失败而不检查输出
- 虽然循环不检查条件,如果没有语句
- 缩短条件以检查x是否不是四个数字中的任何一个
- C++ - 返回循环开始而不检查条件