4.2 while 迴圈
while 迴圈最直觀——「只要條件成立,就一直做某件事」。它特別適合那些「不知道要重複幾次」的場景,比如「讀取輸入直到遇到 0」。
while 迴圈的結構:
while (條件式) {
程式碼區塊
}
執行流程:
- 檢查
條件式是否為 true - 如果是,執行
程式碼區塊,然後回到步驟 1 - 如果否,跳過迴圈,繼續執行後面的程式
執行流程圖:
┌─────────────────┐
│ while 開始 │
└────────┬────────┘
│
↓
┌────────────┐
│ 檢查條件式 │
└────┬───────┘
│
true │ false
│ ↓
│ ┌─────────────┐
│ │ while 結束 │
│ └─────────────┘
↓
┌──────────────┐
│ 執行程式碼區塊│
└──────┬───────┘
│
└─────────→(回到條件判斷)
¶範例程式碼
範例 1:細菌繁殖問題的完整解法
#include<iostream>
using namespace std;
int main() {
long long A, B, C; // A: 初始細菌數,B: 分裂倍數,C: 目標數
cin >> A >> B >> C; // 讀入三個參數
int day = 0; // 紀錄天數
long long num = A; // 紀錄目前的細菌數量
// 只要細菌數還少於 C,就繼續分裂
while (num < C) {
num *= B; // 細菌數量乘以 B(分裂)
day += 1; // 天數加 1
}
cout << day << " " << num << "\n"; // 輸出天數和最終細菌數
return 0;
}
執行結果:(假設輸入為 1 2 100)
6 64
解釋:初始 1 隻細菌,每天分裂成 2 倍。第 1 天 2 隻,第 2 天 4 隻,…,第 6 天 64 隻(已超過 100 的一半,但題目要求超過 100,所以答案是 64)。
範例 2:印出 1 到 10 的所有數字
#include<iostream>
using namespace std;
int main() {
int i = 1; // 初始化計數器
while (i <= 10) { // 條件:i 不超過 10
cout << i << "\n"; // 輸出 i
i += 1; // i 加 1
}
return 0;
}
執行結果:
1
2
3
4
5
6
7
8
9
10
動手試試看:把第 5 行的 i <= 10 改成 i < 10,看看輸出有什麼變化。為什麼會差 1?