我无法在我想要的时候让我的 while 循环停止

I can't make my while loop stop when I want

本文关键字:我的 while 循环 我想要      更新时间:2023-10-16

编写一个 while 循环,打印userNum除以 2(整数除法),直到达到 1。每个数字后面跟一个空格。userNum = 20 的示例输出:20 10 5 2 1

    #include <iostream> 
    using namespace std;
    
    int main() 
    {    
       int userNum = 0;
    
       userNum = 20;    
       cout << userNum << " ";
       while (userNum > 1)    
       {
          userNum = userNum/2;
          cout << userNum << " ";    
       }    
       cout << endl;
    
       return 0; 
    }

正确划分,直到我到达 0,在那里它给我 0 而不是终止。我做错了什么?

谢谢!

您发布的代码的行为与您期望的一样。

我建议稍微更改代码作为良好做法。

而不是:

cout << userNum << " ";
while (userNum > 0)    
{
   userNum = userNum/2;
   cout << userNum << " ";    
}    

用:

while (userNum > 1)    
{
   cout << userNum << " ";    
   userNum = userNum/2;
}    

一般原则是:

while ( <conditional> )
{
   // Use the data
   // Change the data as the last operation in the loop.
}

for循环为这些提供了自然的占位符。

for ( <initialize data>; <conditional>; <update data for next iteration> )
{
   // Use the data
} 

如果您要切换到使用我推荐的for循环,您的代码将是:

for ( userNum = 20; userNum > 0; userNum /= 2 )
{
   cout << userNum << " ";
}

我尝试了所有这些选项,但它们都不适用于其他测试,因此我进行了一些修改。这非常适合 zybook。

#include <iostream>
using namespace std;
    
int main() {
    int userNum = 0;
    
    userNum = 40;
    
    cin>>userNum;
    while(userNum>1)
    {
       userNum=userNum/2;
       cout<<userNum<<" ";   
    }
    cout << endl;
    
    return 0;
}

http://ideone.com/SvU8z3

#include <iostream> 
using namespace std;
int main() 
{    
   int userNum = 20;
   while (userNum > 0)    
   {
      cout << userNum << " ";    
      userNum = userNum/2;
   }    
   cout << endl;
   return 0;
}
#include <iostream>
    
using namespace std;
    
int main() {       
    int userNum;
    cin >> userNum;
    
    while (userNum >= 4) {   
        userNum /= 4;   
        cout<<userNum<<" ";
    }
    
    cout << endl;
    
   return 0;
}