4.3 for 迴圈
for 迴圈特別適合「知道要重複幾次」的場景。它把「初始化、條件判斷、每次迴圈後的更新」都寫在一行裡,讓程式碼更緊湊、更不容易出錯。
for 迴圈的結構:
for (初始化; 條件式; 更新運算式) {
程式碼區塊
}
三個部分的意義:
- 初始化:迴圈開始前執行一次,通常宣告計數器
- 條件式:每次迴圈開始前都檢查,為 false 時停止
- 更新運算式:每次迴圈結束後執行,通常是計數器加 1
執行流程:
- 執行初始化(只一次)
- 檢查條件式
- 如果為 true,執行程式碼區塊,然後執行更新運算式,回到步驟 2
- 如果為 false,跳出迴圈
¶範例程式碼
範例 1:印出九九乘法表
#include<iostream>
using namespace std;
int main() {
// 外層迴圈:控制乘數(1 到 9)
for (int i = 1; i <= 9; i++) {
// 內層迴圈:控制被乘數(1 到 9)
for (int j = 1; j <= 9; j++) {
cout << i << " x " << j << " = " << i * j << " ";
}
cout << "\n"; // 每一行結束後換行
}
return 0;
}
執行結果:(前三行)
1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 ...
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 ...
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 ...
範例 2:計算一個數字的位數和
#include<iostream>
using namespace std;
int main() {
int x;
cin >> x; // 讀入一個整數
int answer = 0; // 用來累加位數
// 從 x 本身開始,每次除以 10,直到變成 0
for (int now = x; now != 0; now /= 10) {
answer += now % 10; // 加上最低位的數字
}
cout << answer << "\n";
return 0;
}
執行結果:(假設輸入為 12345)
15
解釋:1 + 2 + 3 + 4 + 5 = 15
動手試試看:寫一個程式計算 1 + 2 + 3 + ... + 100 的結果,用 for 迴圈累加。
¶迴圈的排版
延續 1.5 與 3.5 的排版習慣,while 和 for 迴圈也要排得層次分明。重點一樣是縮排和大括號的位置;另外 for 的括號裡有三段,也有一套好讀的寫法:
// ✓ 好的排版
for (int i = 0; i < n; i++) {
sum += i;
}
// ✗ 不好的排版:擠成一團、沒縮排
for(int i=0;i<n;i++){sum+=i;}
| 規則 | ✓ 好的做法 | ✗ 不好的做法 | 為什麼 |
|---|---|---|---|
| 關鍵字後空一格 | for (...)、while (...) |
for(...)、while(...) |
for/while 是關鍵字,和 ( 空一格,跟函式呼叫區別開 |
| 左大括號接行尾 | for (...) { |
{ 另起一行 |
{ 放在同一行行尾,省一行、更緊湊 |
| 迴圈體縮排一層 | { } 裡的語句往右縮 2~4 格 |
頂著最左邊寫 | 一眼看出「這些是迴圈裡重複做的事」 |
| 三段分號後空格 | for (int i = 0; i < n; i++) |
for (int i=0;i<n;i++) |
初始化/條件/更新三段用 ; 隔開更清楚 |