我无法理解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怎么办?
答案 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++;
}
希望有帮助!