迴圈
迴圈敘述
迴圈敘述是程式設計中的核心概念之一,它允許程式重複執行特定的程式碼區塊,直到滿足某個終止條件為止。
在 C++ 中,主要的迴圈敘述有四種:while、do...while、for 和範圍基礎(Range based) for 迴圈。
1. while 迴圈 (The while Loop)
while 迴圈在進入迴圈之前先檢查條件。只要值為真 (true(非0)),迴圈就會一直執行。
語法 (Syntax)
while (條件運算式) {
// 條件為真時重複執行的程式碼區塊
// 必須在這裡包含改變條件的敘述,避免無限迴圈
}
範例:從 1 加到 5
#include <iostream>
using namespace std;
int main() {
int count = 1;
int sum = 0;
while (count <= 5) { // 條件:count 小於或等於 5
sum = sum + count;
count = count + 1; // 更新 count
}
cout << "總和為: " << sum << endl; // 輸出: 總和為: 15
return 0;
}
2. do...while 迴圈 (The do...while Loop)
do...while 迴圈的條件檢查是在迴圈本體執行之後才進行。
語法 (Syntax)
do {
// 程式碼區塊
} while (條件運算式); // 這裡需要分號 (;)
重點: 程式碼區塊至少會被執行一次。
範例:至少輸入一次密碼
#include <iostream>
#include <string>
using namespace std;
int main() {
string password;
string correct_password = "123";
do {
cout << "請輸入密碼: ";
cin >> password;
} while (password != correct_password); // 檢查密碼是否正確
cout << "密碼正確,登入成功!" << endl;
return 0;
}
3. for 迴圈 (The for Loop)
for 迴圈適用於以計數器為條件時。
語法 (Syntax)
for (初始化表達式; 條件運算式; 更新表達式) {
// 迴圈本體程式碼
}
範例:印出 0 到 9
#include <iostream>
using namespace std;
int main() {
// 初始化 (int i = 0); 條件 (i < 10); 更新 (i++)
for (int i = 0; i < 10; i++) {
cout << i << " ";
}
// 輸出: 0 1 2 3 4 5 6 7 8 9
cout << endl;
return 0;
}
4. 範圍基礎 for 迴圈 (Range-based for Loop)
專門用來迭代容器(如陣列、向量等)中的所有元素。
語法 (Syntax)
for (型別 變數名 : 容器/範圍) {
// 變數名 會依次取得容器中的每一個元素的值
}
範例:迭代陣列中的所有元素
#include <iostream>
using namespace std;
int main() {
int numbers[] = {10, 20, 30, 40, 50};
// value 會依次取得 numbers 中的每個元素
for (int value : numbers) {
cout << value << " ";
}
// 輸出: 10 20 30 40 50
cout << endl;
return 0;
}
迴圈控制敘述 (Loop Control Statements)
A. break
作用: 立即終止整個迴圈的執行,跳到迴圈結束後的第一行。
範例:找到數字 30 即停止
#include <iostream>
using namespace std;
int main() {
int numbers[] = {10, 20, 30, 40, 50};
for (int num : numbers) {
if (num == 30) {
cout << "找到 30,停止搜尋。" << endl;
break; // 立即跳出 for 迴圈
}
cout << "目前檢查到: " << num << endl;
}
cout << "迴圈結束。" << endl;
return 0;
}
B. continue
作用: 立即跳過本次迴圈中尚未執行的剩餘程式碼,並進入下一次迭代。
範例:跳過偶數 (只印出奇數)
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 5; i++) {
if (i % 2 == 0) {
continue; // i 是偶數時,跳過下面的 cout 敘述
}
cout << i << " ";
}
// 輸出: 1 3 5
cout << endl;
return 0;
}
總結與應用時機
| 迴圈類型 | 判斷時機 | 適用時機 |
|---|---|---|
for 迴圈 |
每次迭代前檢查條件 | 知道重複的次數(如計數 10 次)、或處理陣列/容器時。 |
while 迴圈 |
每次迭代前檢查條件 | 迴圈次數未知,但由某個條件(如檔案尚未讀完、使用者未輸入 "Q")控制。 |
do...while 迴圈 |
每次迭代後檢查條件 | 程式碼區塊必須執行至少一次,再根據結果決定是否繼續。 |
範圍基礎 for |
自動迭代 | 需要遍歷整個容器或集合中的所有元素,不關心索引/計數器。 |
返回課程目錄
許老師APCS線上家教


留言
張貼留言