C语言switch分支结构
文章目錄
- 一、if else的不足
 - 二、switch語句
 - 三、注意事項
 - 四、課后作業(yè)
 - 五、版權聲明
 
一、if else的不足
C語言雖然沒有限制 if else 能夠處理的分支數量,但當分支過多時,用 if else處理會不太方便,而且容易出現 if else配對出錯的情況。例如,輸入一個整數,輸出該整數對應的星期幾的中文表示。
if (day == 0)printf("星期天\n");else if (day == 1)printf("星期一\n");else if (day == 2)printf("星期二\n");else if (day == 3)printf("星期三\n");else if (day == 4)printf("星期四\n");else if (day == 5)printf("星期五\n");else if (day == 6)printf("星期六\n");elseprintf("輸入錯誤。\n");以上代碼摘自book22.c。
對于這種情況,實際開發(fā)中一般使用 switch 語句代替,請看下面的代碼。
switch (day){case 0: printf("星期天\n"); break;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;default: printf("輸入錯誤。\n"); break;}先不解釋這段代碼的含義,但這樣看起來舒服多了。
二、switch語句
switch 是另外一種選擇結構的語句,用來代替簡單的、擁有多個分枝的 if else語句,基本格式如下:
switch (表達式){case 整型數值1: 語句 1;case 整型數值2: 語句 2;......case 整型數值n: 語句 n;default: 語句 n+1;}它的執(zhí)行過程是:
1)首先計算表達式的值,假設為value。
2) 從第一個 case 開始,比較value和整型數值1,如果它們相等,就執(zhí)行冒號后面的所有語句,也就是從語句1一直執(zhí)行到語句n+1,而不管后面的case 是否匹配成功。
3) 如果value 和整型數值1不相等,就跳過冒號后面的語句1,繼續(xù)比較第二個case、第三個case……一旦發(fā)現和某個整型數值相等了,就會執(zhí)行后面所有的語句。假設value和整型數值5相等,那么就會從語句5一直執(zhí)行到語句n+1。
4)如果直到最后一個整型數值n都沒有找到相等的值,那么就執(zhí)行 default 后的語句n+1。
需要重點強調的是,當和某個整型數值匹配成功后,會執(zhí)行該分支以及后面所有分支的語句。
示例(book29.c)
/** 程序名:book29.c,此程序演示條件分支控制語句用switch代替多個if else * 作者:C語言技術網(www.freecplus.net) 日期:20190525 */ #include <stdio.h>int main() {int day=0; // 定義一個整數變量用于接受鍵盤輸入的數字printf("請輸入0-6之間的數字:"); // 提示用戶輸入scanf("%d",&day); // 接受用戶從鍵盤輸入的數據switch (day){case 0: printf("星期天\n");case 1: printf("星期一\n");case 2: printf("星期二\n");case 3: printf("星期三\n");case 4: printf("星期四\n");case 5: printf("星期五\n");case 6: printf("星期六\n");default: printf("輸入錯誤。\n");} }運行效果
輸入4,發(fā)現和第四個分支匹配成功,于是就執(zhí)行第四個分支以及后面的所有分支。這顯然不是我們想要的結果,我們希望只執(zhí)行第四個分支,而跳過后面的其他分支。為了達到這個目標,必須要在每個分支最后添加break;語句。
break 是C語言中的一個關鍵字,專門用于跳出 switch 語句。所謂“跳出”,是指一旦遇到break,就不再執(zhí)行switch中的任何語句,包括當前分支中的語句和其他分支中的語句;也就是說,整個switch執(zhí)行結束了,接著會執(zhí)行整個 switch 后面的代碼。
示例(book30.c)
/** 程序名:book30.c,此程序演示條件分支控制語句用switch中break的用法。* 作者:C語言技術網(www.freecplus.net) 日期:20190525 */ #include <stdio.h>int main() {int day=0; // 定義一個整數變量用于接受鍵盤輸入的數字printf("請輸入0-6之間的數字:"); // 提示用戶輸入scanf("%d",&day); // 接受用戶從鍵盤輸入的數據switch (day){case 0: printf("星期天\n"); break;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;default: printf("輸入錯誤。\n"); break;} }運行效果
三、注意事項
四、課后作業(yè)
編寫示例程序,在界面上輸入數字的月份(1-12),采用switch語句,輸出對應月份的英文單詞的簡寫和全稱。
五、版權聲明
C語言技術網原創(chuàng)文章,轉載請說明文章的來源、作者和原文的鏈接。
 來源:C語言技術網(www.freecplus.net)
 作者:碼農有道
如果這篇文章對您有幫助,請點贊支持,或在您的博客中轉發(fā)我的文章,謝謝!!!
 如果文章有錯別字,或者內容有錯誤,或其他的建議和意見,請您留言指正,非常感謝!!!
總結
以上是生活随笔為你收集整理的C语言switch分支结构的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: C语言makefile文件
 - 下一篇: C语言程序的基本结构