首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言switch語句深度解析:多分支選擇、break機制與循環結構入門

     編輯:關於C語言

switch 語句:處理多分支選擇的利器

當面對多個離散常量值的判斷時,if-else if 鏈條會顯得冗長。C語言提供 switch 開關語句 專門解決此類問題,語法結構清晰,執行效率高。

基本語法與執行流程

switch(表達式) {
    case 常量表達式1: 語句序列1; break;
    case 常量表達式2: 語句序列2; break;
    ...
    case 常量表達式n: 語句序列n; break;
    default: 語句序列n+1;
}

執行語義: 計算表達式值,依序與各 case 常量比較。匹配成功則從該 case 開始執行,若無 break 則會「貫穿」繼續執行後續所有 case 語句,直到遇到 break 或 switch 結束。若全不匹配則執行 default(可省略)。

經典案例:星期幾輸出與「貫穿」陷阱

輸入數字 1~7 輸出對應英文星期:

// 錯誤版:缺少 break,輸入 3 會輸出 Wednesday 到 Sunday 及 error
switch(a) {
    case 1: printf("Monday\n");
    case 2: printf("Tuesday\n");
    case 3: printf("Wednesday\n");
    ...
    default: printf("error\n");
}

// 正確版:每個 case 後加 break
switch(a) {
    case 1: printf("Monday\n"); break;
    case 2: printf("Tuesday\n"); break;
    case 3: printf("Wednesday\n"); break;
    ...
    default: printf("error\n");
}

核心區別: case 只是標號,不具備自動跳出功能,這與 if-else 互斥執行截然不同,必須靠 break 顯式跳出。

switch 使用注意事項

  1. case 常量值必須互不相同,否則編譯報錯。
  2. 每個 case 可包含多條語句,無需大括號 直接書寫。
  3. case 与 default 順序可任意調換,不影響結果(但習慣把 default 放最後)。
  4. default 子句可省略;省略後若無匹配則不執行任何操作。

實戰範例:簡易計算器與極值查找

四則運算計算器:利用 switch 判斷運算符 + - * /,輸出結果,默認提示錯誤。

float a, b; char op;
scanf("%f %c %f", &a, &op, &b);
switch(op) {
    case '+': printf("%f", a+b); break;
    case '-': printf("%f", a-b); break;
    case '*': printf("%f", a*b); break;
    case '/': printf("%f", a/b); break;
    default: printf("input error");
}

三數求最大最小值:先比較 a、b 存入 max/min,再與 c 比較更新,邏輯簡潔高效。

循環結構導論:while 語句詳解

循環結構在條件成立時反覆執行循環體,直到條件不成立。C語言提供 while、for、do-while 三種循環。

while 語法與語義

while(表達式) 語句;
// 表達式為真(非0)執行循環體,假則退出

經典例題:統計輸入行字符數

int n = 0;
printf("input a string:\n");
while(getchar() != '\n') n++;
printf("%d", n);

循環條件 getchar() != '\n' 表示未遇回車持續循環,循環體 n++ 計數。

while 使用四大關鍵點

  1. 條件表達式:通常為關係/邏輯表達式,非零即真。甚至可用賦值表達式如 while(n--) 實現固定次數循環。
  2. 復合語句:循環體超過一條語句必須用 {} 括起。
  3. 避免死循環:如 while(a=5) 恆真且循環體無修改 a,將無限執行。
  4. 嵌套循環:允許 while 循環體內再含 while,形成多重循環。

掌握 switch 的「貫穿」特性與 break 用法,結合 while 循環的靈活判斷,能讓你輕鬆應對多分支選擇與不定次數重複執行的編程場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved