写一个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而不是终止。我做错了什么?
谢谢!
答案 0 :(得分:2)
您发布的代码的行为就像您期望的那样。
我建议稍微改变一下代码作为一种良好的做法。
而不是:
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 << " ";
}
答案 1 :(得分:0)
#include <iostream>
using namespace std;
int main()
{
int userNum = 20;
while (userNum > 0)
{
cout << userNum << " ";
userNum = userNum/2;
}
cout << endl;
return 0;
}
答案 2 :(得分:0)
我尝试了所有这些选项,但没有一个与其他测试一起使用,因此我做了一些修改。这适用于zybooks。
#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;
}