有了while函数的新问题。听起来很简单,我仍然无法绕过它。
就像我上一个程序一样,在正确和错误的消息之后,这个程序意外关闭。 我希望在输入数字后循环,以便程序不会停止。 感谢您的帮助,如果有的话。
#include <iostream>
using namespace std;
int main()
{
int X = 0; //setting the first variable
int num; //setting the second
while (X == 0) //this should happen whenever X is equal to 0
{
cout << "Type a number bigger than 3. "; //output
X++; //This should increase X, so that the next while function can happen
}
while (X == 1) //again, since I increased x by one, (0+1=1 obviously) this should happen
{
cin >> num; //standard input
if (num > 3) //if function: if num is bigger than three, then this should happen
{
cout << "Correct! Try again!" <<endl; //output
X--; //Here I'm decreasing x by one, since it was 1 before, now it becomes 0. This should make the "while (X == 0)" part happen again, so that another number bigger than three can be entered
}
if (num <= 3) //if function: if num is lesser than or equal to 3, this should happen
{
cout << "Wrong! Try again!" <<endl; //output
X--; //This is supposed to work like the "X--;" before, repeating the code from "while (X==0)"
}
}
}
答案 0 :(得分:5)
现在它变为0.这应该使“while(X == 0)”部分再次发生
不。虽然循环在程序执行期间的任何时候都不会神奇地生效。您只能在从上面的代码到达时输入while循环。程序通常从上到下执行。
如果你想继续循环,你需要围绕整个程序循环。你现在拥有的那些while
应该是if
s。
答案 1 :(得分:1)
将两个while
循环合并为一个while(true)
。
将之前的每个while
主体置于if
状态,其中包含旧版while
中的子句。
while(true) {
if (X==0) {
// the X==0- case
} else if (X==1) {
// the X==1 case
}
}
要结束循环,请执行break;
。
您必须将C ++程序视为一系列指令,如配方。 while
只是意味着一个循环:你检查条件。如果是,你运行身体。运行正文后,再次检查仅条件,如果为true则运行正文。只要while
({}
后面的X
封闭代码的主体的开头或结尾处的条件为假,就结束循环并继续下一个循环。
第一个循环运行,完成,然后第二个循环在代码中运行。一旦第一个循环退出,您就不会因为条件成立而返回到它。
了解流量控制是&#34; hard&#34;学习编程的步骤,所以如果你觉得这很棘手就可以了。
除了让代码工作之外,您可以对代码进行许多改进 - 实际上,根本不需要X
。但宝贝步骤!一旦你开始工作,你就可以思考&#34;我怎样才能删除变量{{1}}?&#34;。
在对您的程序进行如此根本性的更改之前,您应该让它正常工作,并保存它的副本,以便您可以“返回”#34;到最后一个工作版本。
答案 2 :(得分:0)
您希望将所有代码包装在其自己的while
循环中:
while (true /* or something */)
{
while (X == 0) //this should happen whenever X is equal to 0
{
// ...
}
答案 3 :(得分:0)
至少将第二个while循环放在第一个循环中,以使其按预期工作。否则你的程序没有理由再回去。
然而,这不是一个好的设计。