在C語言中,switch
語句是一種多分支選擇結構,用于根據變量的值執行不同的代碼塊。相比于使用多個if-else
語句,switch
語句在處理多個條件分支時更加簡潔和高效。本文將詳細介紹switch
語句的語法、使用方法、注意事項以及一些常見的應用場景。
switch
語句的基本語法switch
語句的基本語法如下:
switch (expression) {
case constant1:
// 當expression的值等于constant1時執行的代碼
break;
case constant2:
// 當expression的值等于constant2時執行的代碼
break;
// 可以有任意數量的case語句
default:
// 當expression的值不匹配任何case時執行的代碼
break;
}
expression
expression
是一個表達式,通常是一個整數或字符類型的變量或常量。switch
語句會根據expression
的值來決定執行哪個case
分支。
case
語句每個case
語句后面跟著一個常量值(constant1
, constant2
, …),當expression
的值與某個case
后面的常量值相等時,程序會執行該case
語句后的代碼塊。
break
語句break
語句用于終止switch
語句的執行。如果沒有break
語句,程序會繼續執行后續的case
語句,直到遇到break
或switch
語句結束。這種現象稱為“貫穿”(fall-through)。
default
語句default
語句是可選的,當expression
的值不匹配任何case
語句時,程序會執行default
語句后的代碼塊。default
語句通常放在switch
語句的最后,但也可以放在其他位置。
switch
語句的使用示例以下是一個簡單的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之間,程序會輸出提示信息。
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
語句。
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
、D
或F
,程序會輸出“無效的成績”。
switch
語句的注意事項expression
的類型switch
語句中的expression
必須是整數類型(如int
、char
等)或枚舉類型。浮點數、字符串等類型不能用于switch
語句。
case
常量的唯一性每個case
語句后的常量值必須是唯一的,不能有重復。否則,編譯器會報錯。
case
常量的類型case
語句后的常量值必須與expression
的類型兼容。例如,如果expression
是int
類型,case
語句后的常量值也必須是int
類型。
default
語句的位置default
語句可以放在switch
語句的任何位置,但通常放在最后。如果default
語句放在中間或開頭,程序仍然會按照順序執行。
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
語句。
switch
語句的常見應用場景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;
}
在這個示例中,程序根據用戶輸入的選項執行相應的操作。
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;
}
在這個示例中,程序根據當前狀態和用戶輸入的操作來更新狀態。
switch
語句是C語言中一種非常實用的多分支選擇結構,適用于處理多個條件分支的情況。通過合理使用switch
語句,可以使代碼更加簡潔和高效。在使用switch
語句時,需要注意expression
的類型、case
常量的唯一性、break
語句的使用以及default
語句的位置等問題。掌握switch
語句的使用方法,可以幫助我們更好地編寫C語言程序。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。