使用cin后停止while循环

时间:2019-02-12 04:48:04

标签: c++

我无法理解while循环的逻辑。检查了许多网站,但找不到正确的答案。

我尝试在cin之后使用while循环,它显示了无限的输出。还尝试使用if {break;},但它只显示了一个输出。这是代码。

cout << "How many chambers did you find? Enter a positive number: ";
cin >> chambers;

while (chambers ){
    chambers = chambers + 1;
    boxes = (rand() % 100) + 1;
    cout << "In chamber number " << chambers << " you found " << boxes << " boxes of gold!" << endl;
}

如果输入6的输出应该是:

In chamber number 1 you found 8 boxes of gold!
In chamber number 2 you found 50 boxes of gold!
In chamber number 3 you found 74 boxes of gold!
In chamber number 4 you found 59 boxes of gold!
In chamber number 5 you found 31 boxes of gold!
In chamber number 6 you found 73 boxes of gold!

如果输入为6,如何停止在6?如果我输入100怎么办?

3 个答案:

答案 0 :(得分:0)

您没有正确使用循环控制变量chambers

在while循环中,0 is false!=0 is true。因此,while(chambers)对于chambers以外的所有0值都是正确的。这就是无限循环的原因。

您可以声明另一个变量来控制循环。

示例代码为

cout << "How many chambers did you find? Enter a positive number: ";
cin >> chambers;

int i = 1
while (i<=chambers ){
    boxes = (rand() % 100) + 1;
    cout << "In chamber number " << i << " you found "
    << boxes << " boxes of gold!" << endl;
    i++;

}

这里i将用于控制循环并给出预期结果。

答案 1 :(得分:0)

在while循环中,如果参数为+ 0,-0或NaN,则结果为false;否则,结果为false。否则结果为true。 您要输入一个正数,然后在循环中将其递增一,这将导致无限输出

cout << "How many chambers did you find? Enter a positive number: ";
cin >> chambers;
c = 0;
while (chambers ){
      chambers = chambers - 1;
      boxes = (rand() % 100) + 1;
      cout << "In chamber number " << ++c << " you found "<< boxes << " boxes of gold!" << endl;
}

答案 2 :(得分:0)

程序中的chambers是循环的极限。 您需要另一个变量来跟踪循环执行的次数。

这是一个例子:

int i = 0;
while ( i < chambers )
{
    // your code...
    i++;
}

希望有帮助!