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)
*
**
***
****
*****
動手試試看:寫一個程式輸出倒三角形(從寬到窄)。