写出2的所有权力不超过给定数量

时间:2014-11-12 13:47:14

标签: c++

这是代码。

int n,power=2;
cin>>n;
cout<<power<<endl;
while(power<n){
power=power*2;
cout<<power<<endl;
}

例如,如果我写了20,输出应为“2 4 8 16”。相反,它写信给我“2 4 8 16 32”我应该在这段代码中改变什么?感谢。

4 个答案:

答案 0 :(得分:2)

您想要更改排序,请在检查后增加值:

while(power<n){
cout<<power<<endl;
power=power*2;
}

您可能还想删除第一个cout以删除重复项。

答案 1 :(得分:2)

使用for循环的力量:

for (int power = 1; power < n; power = power * 2) {
    cout << power << endl;
}

答案 2 :(得分:1)

在增加值并打印之前执行测试!因此,即使是超出限制的第一个值也会被打印出来。简单地用这种方式重写:

int n, power = 2;
cin >> n;
while(power < n) {
    cout << power << endl;
    power *= 2;
}

答案 3 :(得分:0)

您可以将条件更改为

while (power*2 < n)

或在修改值

之前打印
cout << power << endl;
power *= 2;