我不能让我的 while 循环在我想要的时候停止

新手上路,请多包涵

编写一个 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 而不是终止。我究竟做错了什么?

谢谢!

原文由 Fate 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 250
1 个回答

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

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

代替:

 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 << " ";
}

原文由 R Sahu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏