溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中switch語句怎么使用

發布時間:2022-07-27 09:23:17 來源:億速云 閱讀:211 作者:iii 欄目:開發技術

C語言中switch語句怎么使用

在C語言中,switch語句是一種多分支選擇結構,用于根據變量的值執行不同的代碼塊。相比于使用多個if-else語句,switch語句在處理多個條件分支時更加簡潔和高效。本文將詳細介紹switch語句的語法、使用方法、注意事項以及一些常見的應用場景。

1. switch語句的基本語法

switch語句的基本語法如下:

switch (expression) {
    case constant1:
        // 當expression的值等于constant1時執行的代碼
        break;
    case constant2:
        // 當expression的值等于constant2時執行的代碼
        break;
    // 可以有任意數量的case語句
    default:
        // 當expression的值不匹配任何case時執行的代碼
        break;
}

1.1 expression

expression是一個表達式,通常是一個整數或字符類型的變量或常量。switch語句會根據expression的值來決定執行哪個case分支。

1.2 case語句

每個case語句后面跟著一個常量值(constant1, constant2, …),當expression的值與某個case后面的常量值相等時,程序會執行該case語句后的代碼塊。

1.3 break語句

break語句用于終止switch語句的執行。如果沒有break語句,程序會繼續執行后續的case語句,直到遇到breakswitch語句結束。這種現象稱為“貫穿”(fall-through)。

1.4 default語句

default語句是可選的,當expression的值不匹配任何case語句時,程序會執行default語句后的代碼塊。default語句通常放在switch語句的最后,但也可以放在其他位置。

2. switch語句的使用示例

2.1 基本示例

以下是一個簡單的switch語句示例,根據用戶輸入的數字輸出對應的星期幾:

#include <stdio.h>

int main() {
    int day;
    printf("請輸入一個數字(1-7):");
    scanf("%d", &day);

    switch (day) {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期日\n");
            break;
        default:
            printf("輸入的數字無效,請輸入1-7之間的數字。\n");
            break;
    }

    return 0;
}

在這個示例中,程序會根據用戶輸入的數字輸出對應的星期幾。如果輸入的數字不在1到7之間,程序會輸出提示信息。

2.2 break語句的作用

break語句在switch語句中非常重要,它用于防止“貫穿”現象的發生。以下是一個沒有使用break語句的示例:

#include <stdio.h>

int main() {
    int day = 2;

    switch (day) {
        case 1:
            printf("星期一\n");
        case 2:
            printf("星期二\n");
        case 3:
            printf("星期三\n");
        case 4:
            printf("星期四\n");
        case 5:
            printf("星期五\n");
        case 6:
            printf("星期六\n");
        case 7:
            printf("星期日\n");
        default:
            printf("輸入的數字無效,請輸入1-7之間的數字。\n");
    }

    return 0;
}

在這個示例中,由于沒有使用break語句,程序會從匹配的case語句開始,一直執行到switch語句結束。輸出結果如下:

星期二
星期三
星期四
星期五
星期六
星期日
輸入的數字無效,請輸入1-7之間的數字。

為了避免這種情況,通常在每個case語句后都要加上break語句。

2.3 default語句的使用

default語句用于處理expression的值不匹配任何case語句的情況。以下是一個使用default語句的示例:

#include <stdio.h>

int main() {
    char grade = 'B';

    switch (grade) {
        case 'A':
            printf("優秀\n");
            break;
        case 'B':
            printf("良好\n");
            break;
        case 'C':
            printf("中等\n");
            break;
        case 'D':
            printf("及格\n");
            break;
        case 'F':
            printf("不及格\n");
            break;
        default:
            printf("無效的成績\n");
            break;
    }

    return 0;
}

在這個示例中,如果grade的值不是A、B、C、DF,程序會輸出“無效的成績”。

3. switch語句的注意事項

3.1 expression的類型

switch語句中的expression必須是整數類型(如int、char等)或枚舉類型。浮點數、字符串等類型不能用于switch語句。

3.2 case常量的唯一性

每個case語句后的常量值必須是唯一的,不能有重復。否則,編譯器會報錯。

3.3 case常量的類型

case語句后的常量值必須與expression的類型兼容。例如,如果expressionint類型,case語句后的常量值也必須是int類型。

3.4 default語句的位置

default語句可以放在switch語句的任何位置,但通常放在最后。如果default語句放在中間或開頭,程序仍然會按照順序執行。

3.5 switch語句的嵌套

switch語句可以嵌套使用,即在case語句中再使用switch語句。以下是一個嵌套switch語句的示例:

#include <stdio.h>

int main() {
    int outer = 1;
    int inner = 2;

    switch (outer) {
        case 1:
            printf("外層switch的case 1\n");
            switch (inner) {
                case 1:
                    printf("內層switch的case 1\n");
                    break;
                case 2:
                    printf("內層switch的case 2\n");
                    break;
                default:
                    printf("內層switch的default\n");
                    break;
            }
            break;
        case 2:
            printf("外層switch的case 2\n");
            break;
        default:
            printf("外層switch的default\n");
            break;
    }

    return 0;
}

在這個示例中,外層switch語句根據outer的值選擇執行內層switch語句。

4. switch語句的常見應用場景

4.1 菜單選擇

switch語句常用于實現菜單選擇功能。以下是一個簡單的菜單選擇示例:

#include <stdio.h>

int main() {
    int choice;

    printf("請選擇操作:\n");
    printf("1. 添加記錄\n");
    printf("2. 刪除記錄\n");
    printf("3. 修改記錄\n");
    printf("4. 查詢記錄\n");
    printf("請輸入選項:");
    scanf("%d", &choice);

    switch (choice) {
        case 1:
            printf("執行添加記錄操作\n");
            break;
        case 2:
            printf("執行刪除記錄操作\n");
            break;
        case 3:
            printf("執行修改記錄操作\n");
            break;
        case 4:
            printf("執行查詢記錄操作\n");
            break;
        default:
            printf("無效的選項\n");
            break;
    }

    return 0;
}

在這個示例中,程序根據用戶輸入的選項執行相應的操作。

4.2 狀態機

switch語句常用于實現狀態機。以下是一個簡單的狀態機示例:

#include <stdio.h>

typedef enum {
    STATE_IDLE,
    STATE_RUNNING,
    STATE_PAUSED,
    STATE_STOPPED
} State;

int main() {
    State current_state = STATE_IDLE;
    int input;

    while (1) {
        printf("當前狀態:");
        switch (current_state) {
            case STATE_IDLE:
                printf("空閑\n");
                break;
            case STATE_RUNNING:
                printf("運行中\n");
                break;
            case STATE_PAUSED:
                printf("暫停\n");
                break;
            case STATE_STOPPED:
                printf("停止\n");
                break;
        }

        printf("請輸入操作(1: 開始, 2: 暫停, 3: 停止, 4: 退出):");
        scanf("%d", &input);

        switch (input) {
            case 1:
                if (current_state == STATE_IDLE || current_state == STATE_PAUSED) {
                    current_state = STATE_RUNNING;
                } else {
                    printf("無效操作\n");
                }
                break;
            case 2:
                if (current_state == STATE_RUNNING) {
                    current_state = STATE_PAUSED;
                } else {
                    printf("無效操作\n");
                }
                break;
            case 3:
                if (current_state == STATE_RUNNING || current_state == STATE_PAUSED) {
                    current_state = STATE_STOPPED;
                } else {
                    printf("無效操作\n");
                }
                break;
            case 4:
                printf("退出程序\n");
                return 0;
            default:
                printf("無效操作\n");
                break;
        }
    }

    return 0;
}

在這個示例中,程序根據當前狀態和用戶輸入的操作來更新狀態。

5. 總結

switch語句是C語言中一種非常實用的多分支選擇結構,適用于處理多個條件分支的情況。通過合理使用switch語句,可以使代碼更加簡潔和高效。在使用switch語句時,需要注意expression的類型、case常量的唯一性、break語句的使用以及default語句的位置等問題。掌握switch語句的使用方法,可以幫助我們更好地編寫C語言程序。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女