在c中循环减少

时间:2011-09-30 00:44:44

标签: c while-loop

是否可以将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?

感谢您的帮助!

4 个答案:

答案 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循环。我在我的例子中改变了它。