4.6 巢狀迴圈

有些問題涉及「二維結構」(如棋盤、矩陣)。一個迴圈搞不定,需要多層迴圈來遍歷。

迴圈可以放在迴圈裡面。每次外層迴圈執行一次,內層迴圈就會完整執行一遍。

範例程式碼

範例 1:九九乘法表(已在 4.3 出現過,這裡深入解釋)

#include<iostream>
using namespace std;
int main() {
    for (int i = 1; i <= 9; i++) {      // 外層:控制行(乘數)
        for (int j = 1; j <= 9; j++) {  // 內層:控制列(被乘數)
            cout << i << "x" << j << "=" << (i*j) << "  ";
        }
        cout << "\n";                  // 一行結束後換行
    }

    return 0;
}

執行邏輯:

  • i = 1 時,j 從 1 迴圈到 9(輸出第一行)
  • i = 2 時,j 從 1 迴圈到 9(輸出第二行)
  • ...
  • i = 9 時,j 從 1 迴圈到 9(輸出第九行)

執行結果:

1x1=1  1x2=2  1x3=3  ... 1x9=9
2x1=2  2x2=4  2x3=6  ... 2x9=18
...
9x1=9  9x2=18 9x3=27 ... 9x9=81

範例 2:印出直角三角形

#include<iostream>
using namespace std;
int main() {
    int n;
    cin >> n;           // 讀入三角形的高

    for (int i = 1; i <= n; i++) {      // 外層:控制行數
        for (int j = 1; j <= i; j++) {  // 內層:控制每行的星號數
            cout << "*";
        }
        cout << "\n";
    }

    return 0;
}

執行結果:(假設輸入為 5

*
**
***
****
*****

動手試試看:寫一個程式輸出倒三角形(從寬到窄)。