C 語言中的 Switch 語句:初學者指南
你好,未來的編程者們!今天,我們將深入探討 C 語言中最有用的控制結構之一:switch 語句。如果你是新手,別擔心;我會一步一步地引導你,就像我這些年來對無數學生所做的一樣。所以,拿起你喜歡的飲料,讓我們一起踏上這次編程冒險吧!
什麼是 Switch-Case 語句?
想像你在一個冰淇淋店,需要選擇一種口味。你有香草、巧克力、草莓和薄荷。每個選擇都會導致你的蛋筒裡有不同的冰淇淋。這正是編程中的 switch 語句的工作原理!
Switch 語句是一種控制流程語句,它允許您基於變量或表達式的值來執行不同的代碼塊。它就像多個 if-else 語句的更優雅、更高效的版本。
Switch-Case 語句的語法
讓我們看看 switch 語句的基本結構:
switch (expression) {
case constant1:
// 當 expression 等於 constant1 時要執行的代碼
break;
case constant2:
// 當 expression 等於 constant2 時要執行的代碼
break;
...
default:
// 當 expression 不匹配任何常量時要執行的代碼
}
別擔心這個看起來有點令人生畏。我們會一點一滴地解析它。
關鍵組成部分:
-
switch
:這個關鍵字啟動 switch 語句。 -
expression
:這是正在被評估的值。 -
case
:每個 case 代表表達式可能的值。 -
break
:這個關鍵字結束每個 case 塊。 -
default
:這是一個可選的塊,當沒有 case 匹配時會執行。
Switch-Case 語句如何工作
現在,讓我們看看它在實際中是如何工作的。想像我們正在創建一個簡單的程序,根據學生的成績給出不同的信息:
#include <stdio.h>
int main() {
char grade = 'B';
switch(grade) {
case 'A':
printf("Excellent!\n");
break;
case 'B':
printf("Well done!\n");
break;
case 'C':
printf("Good job!\n");
break;
case 'D':
printf("You passed.\n");
break;
case 'F':
printf("Better luck next time.\n");
break;
default:
printf("Invalid grade\n");
}
return 0;
}
在這個例子中:
- 我們有一個變量
grade
被設置為 'B'。 - switch 語句評估
grade
。 - 它會檢查每個 case 直到找到匹配(在這個例子中是 'B')。
- 當找到匹配時,它會執行該 case 中的代碼("Well done!")。
- 然後
break
語句會退出 switch 塊。
如果 grade
沒有匹配任何 case,則 default
塊會運行。
Switch-Case 語句的流程圖
為了直觀地了解 switch 語句是如何工作的,我們來看看一個流程圖:
+-------------+
| 開始 |
+-------------+
|
v
+-------------------+
| 評估表達式 |
+-------------------+
|
v
+----------------------+
| 與 case 1 比較 |
+----------------------+
|
v
+-------------+
| 匹配? |
+-------------+
是 | | 否
| |
v v
+-----------------+ +----------------------+
| 執行 case 1 | | 與 case 2 比較 |
+-----------------+ +----------------------+
| |
v v
+-----------+ +-------------+
| Break | | 匹配? |
+-----------+ +-------------+
| 是 | | 否
| | |
| v v
| +-----------------+ +------------+
| | 執行 case 2 | | ... |
| +-----------------+ +------------+
| |
| v
| +-----------+
| | Break |
| +-----------+
| |
v v
+-----------+ +-----------+
| 結束 | <------| Default |
+-----------+ +-----------+
這個流程圖展示了 switch 語句如何評估每個 case 並執行匹配的代碼塊。
使用 Switch-Case 語句的規則
為了有效地使用 switch 語句,請記住以下規則:
規則 | 描述 |
---|---|
表達式類型 | Switch 表達式必須是整數類型(int、char 等)或列舉類型。 |
Case 常量 | Case 標籤必須是常量或字面值,而不是變量。 |
單一 Case | 每個 case 值必須在 switch 語句中是唯一的。 |
Break 語句 | 使用 break 在執行完一個 case 後退出 switch 塊。 |
Default Case |
default case 是可選的,並可以在 switch 塊中的任何位置出現。 |
更多 Switch-Case 語句示例
讓我們再看一些例子來加強我們的理解。
示例 1:星期天
#include <stdio.h>
int main() {
int day = 4;
switch(day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
break;
case 4:
printf("Thursday\n");
break;
case 5:
printf("Friday\n");
break;
case 6:
printf("Saturday\n");
break;
case 7:
printf("Sunday\n");
break;
default:
printf("Invalid day number\n");
}
return 0;
}
這個程序會輸出 "Thursday",因為 day
被設置為 4。
示例 2:計算器
#include <stdio.h>
int main() {
char operator;
double n1, n2;
printf("Enter an operator (+, -, *, /): ");
scanf("%c", &operator);
printf("Enter two operands: ");
scanf("%lf %lf",&n1, &n2);
switch(operator)
{
case '+':
printf("%.1lf + %.1lf = %.1lf\n", n1, n2, n1+n2);
break;
case '-':
printf("%.1lf - %.1lf = %.1lf\n", n1, n2, n1-n2);
break;
case '*':
printf("%.1lf * %.1lf = %.1lf\n", n1, n2, n1*n2);
break;
case '/':
printf("%.1lf / %.1lf = %.1lf\n", n1, n2, n1/n2);
break;
default:
printf("Error! operator is not correct\n");
}
return 0;
}
這個程序使用 switch 語句創建了一個簡單的計算器。
結合多個 Case
有時候,您可能希望多個 case 執行相同的代碼。您可以通過將 case 列在一起來實現這點:
#include <stdio.h>
int main() {
char grade = 'B';
switch(grade) {
case 'A':
case 'B':
case 'C':
printf("You passed!\n");
break;
case 'D':
case 'F':
printf("You need to improve.\n");
break;
default:
printf("Invalid grade\n");
}
return 0;
}
在這個例子中,成績 A、B 和 C 將導致輸出 "You passed!",而 D 和 F 將導致輸出 "You need to improve."。
就这样!您剛剛學會了 C 語言中的 switch 語句。記住,熟能生巧。嘗試自己寫一些 switch 語句,並嘗試不同的情景。不久之後,您將能夠像專家一樣使用 switch!
祝您編程愉快,願您的 switch 永遠能找到正確的 case!
Credits: Image by storyset