判斷

判斷敘述 (Decision Statements)

判斷敘述(或稱為控制流程敘述條件敘述)是程式設計中不可或缺的一部分。它們允許程式根據布林值來決定要執行哪一段程式碼,從而實現程式的分支邏輯。

在 C++ 中,主要的判斷敘述有三種:

  1. if 敘述
  2. if...else 敘述
  3. 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線上家教

留言

這個網誌中的熱門文章

目錄

資料型態

Code::Blocks