2011-09-30 103 views
0

是否可以將C中的while循環中的數組大小遞減大於x--。例如,你可以在每次迭代時將數組的大小減少三分之一嗎?遞減c while循環

int n = 10; 

while (n < 0) 

// do something 

(round(n/3))-- // this doesn't work, but can this idea be expressed in C? 

謝謝你的幫助!

+0

你是指什麼*減量數組* *? – Pubby

+1

這是功課嗎? –

回答

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)。這兩種技術都很好,但你需要確保你知道你想要什麼,就這些。

0

代碼中沒有數組。如果你不想在每次迭代中獲得其三分之一的價值,那麼你可以做n /= 3;。請注意,由於n是積分,因此應用積分除法。

2

是的,可以向您的變量n加上或減去任何數字。

通常情況下,如果你想做一些可預測的次數,你可以使用for循環;當你不確定會發生多少次,而是你正在測試某種狀況時,你可以使用一個while循環。

最稀有的迴路是do/while循環,當你想在第一時間將while檢查時之前執行循環一次肯定時才使用。

例子:

// 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'); 
0

就像K-說假面舞會中有你的示例代碼沒有數組,但這裏是一個整型數組的例子。

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循環將永遠不會執行。在我的例子中,我改變了它。