是否可以将C中while循环中的数组大小减去x--
以上。例如,您可以在每次迭代时将数组减少三分之一的数组吗?
int n = 10;
while (n < 0)
// do something
(round(n/3))-- // this doesn't work, but can this idea be expressed in C?
感谢您的帮助!
答案 0 :(得分:2)
您可以使用任何表达式:
int n = 10;
while (n > 0) // Note change compared with original!
{
// Do something
n = round(n/3.0) - 1; // Note assignment and floating point
}
请注意,您只能减少变量,而不是表达式。
您还可以使用for
循环:
for (int n = 10; n > 0; n = round(n/3.0) - 1)
{
// Do something
}
在这种情况下,无论你是否使用浮点舍入,n
的值序列都是相同的(n = 10, 2
),所以你可以这样写:
n = n / 3 - 1;
你会看到相同的结果。对于其他上限,序列将发生变化(n = 11, 3
)。这两种技术都很好,但你需要确定你知道你想要什么,就是这样。
答案 1 :(得分:2)
是的,可以在变量n
中添加或减去任何数字。
通常,如果你想做一些非常可预测的事情,你会使用for
循环;当你不确定某事会发生多少次,而你正在测试某种条件时,你会使用while
循环。
最稀有的循环是一个do
/ while
循环,仅在第一次while
检查发生之前要执行一次循环时使用。 / p>
示例:
// do something ten times
for (i = 0; i < 10; ++i)
do_something();
// do something as long as user holds down button
while (button_is_pressed())
do_something();
// play a game, then find out if user wants to play again
do
{
char answer;
play_game();
printf("Do you want to play again? Answer 'y' to play again, anything else to exit. ");
answer = getchar();
} while (answer == 'y' || answer == 'Y');
答案 2 :(得分:0)
您的代码中没有数组。如果你不想n
在每次迭代中获得其价值的三分之一,你可以n /= 3;
。请注意,由于n
是完整的,因此应用积分除法。
答案 3 :(得分:0)
就像K-Ballo说你的示例代码中没有数组,但这是一个带整数数组的例子。
int n = 10;
int array[10];
int result;
// Fill up the array with some values
for (i=0;i<n;i++)
array[i] = i+n;
while(n > 0)
{
// Do something with array
n -= sizeof(array)/3;
}
但是在你给出的示例代码中要小心,while循环正在检查n是否小于零。由于n初始化为10,因此永远不会执行while循环。我在我的例子中改变了它。