判斷
判斷敘述 (Decision Statements)
判斷敘述(或稱為控制流程敘述、條件敘述)是程式設計中不可或缺的一部分。它們允許程式根據布林值來決定要執行哪一段程式碼,從而實現程式的分支邏輯。
在 C++ 中,主要的判斷敘述有三種:
if敘述if...else敘述switch敘述
1. if 敘述 (The if Statement)
if 敘述是最基本的判斷結構,它只在值為(true,即非零)時執行特定的程式碼區塊。
語法 (Syntax)
if (布林值) {
// 值為 true(非0) 時執行的程式碼區塊
}
// 接著執行 if 敘述後的程式碼
範例:判斷數字是否為正數
#include <iostream>
using namespace std;
int main() {
int number;
cin>>number;
if (number > 0) {
cout << "這個數字是正數。" << endl;
}
cout << "程式執行結束。" << endl;
return 0;
}
// 輸入:
// 10
// 輸出:
// 這個數字是正數。
// 程式執行結束。
2. if...else 敘述 (The if...else Statement)
if...else 敘述提供了二選一的執行路徑。如果 if 的值為 true(非0),則執行 if 區塊;如果值為 false(0),則執行 else 區塊。
語法 (Syntax)
if (布林值) {
// 值為 true(非0) 時執行的程式碼區塊
} else {
// 值為 false(0) 時執行的程式碼區塊
}
範例:判斷數字的奇偶性
#include <iostream>
using namespace std;
int main() {
int number;
cin>>number;
if (number % 2 == 0) {
cout << "這個數字是偶數。" << endl;
} else {
cout << "這個數字是奇數。" << endl;
}
return 0;
}
// 輸入:
// 7
// 輸出:
// 這個數字是奇數。
巢狀 if...else if...else 結構
當需要進行多重判斷時,可以使用 else if 來串接多個條件,並用一個最終的 else 作為所有條件都不滿足時的預設處理。
語法 (Syntax)
if (值一) {
// 值一為 true
} else if (值二) {
// 值一為 false,但值二為 true
} else if (值三) {
// 值一、二為false,但值三為 true
} else {
// 所有值皆為 false
}
範例:依據分數給予評級
#include <iostream>
using namespace std;
int main() {
int score;
cin>>score;
if (score >= 90) {
cout << "評級: A" << endl;
} else if (score >= 80) {
cout << "評級: B" << endl;
} else if (score >= 70) {
cout << "評級: C" << endl;
} else {
cout << "評級: D" << endl;
}
return 0;
}
// 輸入:
// 85
// 輸出:
// 評級: B
3. switch 敘述 (The switch Statement)
switch 敘述用來將一個變數的值與多個固定的常數值進行等值比較。它在處理特定情況時通常比多個 if...else if 結構更簡潔。
語法 (Syntax)
switch (表達式) {
case 常數值一:
// 當表達式的值等於常數值一時執行的程式碼
break; // 必須使用 break 離開 switch 區塊
case 常數值二:
case 常數值三: // 也可以合併多個 case
// 當表達式的值等於常數值二或三時執行的程式碼
break;
default:
// 當表達式的值不等於任何一個 case 時執行的程式碼 (default 是可選的)
}
注意: break 關鍵字極為重要。如果省略,程式會繼續執行下一個 case 區塊的程式碼(**fall-through**)。
範例:根據星期幾顯示名稱
#include <iostream>
using namespace std;
int main() {
int dayOfWeek; // 假設 1=一, 2=二, 3=三...
cin>>dayOfWeek;
switch (dayOfWeek) {
case 1:
cout << "今天是星期一" << endl;
break;
case 2:
cout << "今天是星期二" << endl;
break;
case 3:
cout << "今天是星期三" << endl;
break;
case 4:
cout << "今天是星期四" << endl;
break;
case 5:
cout << "今天是星期五" << endl;
break;
case 6:
case 7:
cout << "今天是休假日" << endl;
break;
default:
cout << "輸入的數字不正確" << endl;
}
return 0;
}
// 輸入:
// 3
// 輸出:
// 今天是星期三
總結與應用時機
| 判斷敘述 | 適用時機 | 備註 |
|---|---|---|
if |
條件成立時才需要執行某段程式碼。 | 最單純的條件判斷。 |
if...else |
條件成立與不成立,分別有兩組不同的程式碼要執行。 | 實現二選一邏輯。 |
if...else if...else |
需要根據多個範圍性或複雜條件進行判斷。 | 處理多重條件、範圍判斷的最佳選擇。 |
switch |
需要將一個變數的值與多個固定的常數值進行等值比較。 | 結構清晰,且在大量 case 比較時效率通常較高,但僅限於等值比較。 |
返回課程目錄
許老師APCS線上家教


留言
張貼留言