當前位置:才華齋>計算機>C語言>

C語言迴圈結構的巢狀

C語言 閱讀(1.04W)

C語言中,if-else、while、do-while、for 都可以相互巢狀。所謂巢狀(Nest),就是一條語句裡面還有另一條語句,例如 for 裡面還有 for,while 裡面還有 while,或者 for 裡面有 while,while 裡面有 if-else,這都是允許的。

C語言迴圈結構的巢狀
C語言迴圈結構的巢狀

示例1:for 巢狀執行的流程。

#include

int main()

{

int i, j;

for(i=1; i<=4; i++){ //外層for迴圈

for(j=1; j<=4; j++){ //內層for迴圈

printf("i=%d, j=%d", i, j);

}

printf("");

}

return 0;

}

執行結果:

i=1, j=1

i=1, j=2

i=1, j=3

i=1, j=4

i=2, j=1

i=2, j=2

i=2, j=3

i=2, j=4

i=3, j=1

i=3, j=2

i=3, j=3

i=3, j=4

i=4, j=1

i=4, j=2

i=4, j=3

i=4, j=4

本例是一個簡單的 for 迴圈巢狀,外層迴圈和內層迴圈交叉執行,外層 for 每執行一次,內層 for 就

要執行四次。

在C語言中,程式碼是順序、同步執行的.,當前程式碼必須執行完畢後才能執行後面的程式碼。這就意味

著,外層 for 每次迴圈時,都必須等待內層 for 迴圈完畢(也就是迴圈4次)才能進行下次迴圈。雖

然 i 是變數,但是對於內層 for 來說,每次迴圈時它的值都是固定的。

示例2:輸出一個4×4的整數矩陣。

#include

int main()

{

int i, j;

for(i=1; i<=4; i++){ //外層for迴圈

for(j=1; j<=4; j++){ //內層for迴圈

printf("%-4d", i*j);

}

printf("");

}

return 0;

}

執行結果:

外層 for 第一次迴圈時,i為1,內層 for 要輸出四次 1*j 的值,也就是第一行資料;內層 for 迴圈結

束後執行 printf(""),輸出換行符;接著執行外層 for 的 i++ 語句。此時外層 for 的第一次迴圈才算

結束。

外層 for 第二次迴圈時,i為2,內層 for 要輸出四次 2*j 的值,也就是第二行的資料;接下來執行

printf("") 和 i++,外層 for 的第二次迴圈才算結束。外層 for 第三次、第四次迴圈以此類推。

可以看到,內層 for 每迴圈一次輸出一個數據,而外層 for 每迴圈一次輸出一行行資料。

示例3:輸出九乘法表。

#include

int main(){

int i, j, n;

for(i=1; i<=9; i++){ //外層for迴圈

for(j=1; j<=i; j++){ //內層for迴圈

printf("%d*%d=%-2d ", i, j, i*j);

}

printf("");

}

return 0;

}

和示例2一樣,內層 for 每迴圈一次輸出一條資料,外層 for 每迴圈一次輸出一行資料。

需要注意的是,內層 for 的結束條件是 j<=i 。外層 for 每迴圈一次,i 的值就會變化,所以每次開始

內層 for 迴圈時,結束條件是不一樣的。具體如下:當 i=1 時,內層 for 的結束條件為 j<=1,只能迴圈一次,輸出第一行。

當 i=2 時,內層 for 的結束條件是 j<=2,迴圈兩次,輸出第二行。

當 i=3 時,內層 for 的結束條件是 j<=3,迴圈三次,輸出第三行。

當 i=4、5、6... 時,以此類推。