【发布时间】:2016-05-18 22:49:25
【问题描述】:
在这个循环中,x 增加了太多次。
int x = 0;
while (x < 10)
{
x = x + 3;
}
cout << x;
这个输出是 12,而我希望它是 9。一般来说,在给定约束(在本例中为 10)的情况下,我将如何找到序列的最后一个值(在本例中为 9)。
【问题讨论】:
-
可能在生成下一个值之前保存每个值,然后当/如果下一个违反约束时,使用存储的值?
在这个循环中,x 增加了太多次。
int x = 0;
while (x < 10)
{
x = x + 3;
}
cout << x;
这个输出是 12,而我希望它是 9。一般来说,在给定约束(在本例中为 10)的情况下,我将如何找到序列的最后一个值(在本例中为 9)。
【问题讨论】:
例如:
int last = 0;
for (int x = 0; x < 10; x+=3)
{
last = x;
}
cout << last;
或:
int x = 0;
while (x < 10)
{
x = x + 3;
}
cout << x - 3;
或:
int x = 0;
int last = 0;
while (x < 10)
{
last = x;
x = x + 3;
}
cout << last;
或:
int x = 0;
while (x + 3 < 10)
{
x = x + 3;
}
cout << x;
【讨论】:
使用您的代码,您可以尝试:
int x = 0;
while (x+3 < 10)
{
x = x + 3;
}
cout << x;
【讨论】:
如果您想查看最后一个值,最好将其减少与增加它相同的量。
int x = 0;
while (x + 3 < 10)
{
x = x + 3;
}
x = x -3;
另一种方法是在循环内使用 break 语句,并带有您想要离开的合适条件。
【讨论】: