#include <iostream>
using namespace std;
int main()
{
int num=1;
while(num<10000)
{
num=num*3;
cout<<num<<",";
}
}
最后的输出是19683,但应该是6561。我应该如何更改条件?
发布于 2017-11-25 21:23:46
在num
为6561
的情况下,条件num < 10000
仍然满足,因此再次进入循环。
写...
int num=1;
do
{
cout<<num<<",";
num=num*3;
}
while(num<10000);
这样,一旦num
超过10000
,就会离开循环,并且对于这样的值,将不再执行cout
。注意,cout
和num*=3
已被切换,因此此循环还输出1
(与您的相反)。但我认为它也应该打印1
,这就是为什么我敢稍微更改语义:-)。否则,您将不得不像int num = 3
一样初始化num
。
发布于 2017-11-25 21:22:53
使用do-while
块:
#include <iostream>
int main() {
int num = 1;
do {
std::cout << num << " ";
} while ((num *= 3) < 10000);
return 0;
}
它将打印:
1 3 9 27 81 243 729 2187 6561
Live。
发布于 2017-11-25 21:45:03
利用可以使用赋值结果的事实:
#include <iostream>
int main()
{
int num = 1;
while((num *= 3) < 10000)
{
std::cout << num << '\n';
}
}
打印:
3
9
27
81
243
729
2187
6561
https://stackoverflow.com/questions/47490567
复制相似问题