C語(yǔ)言switch語(yǔ)句詳解
switch 分支結(jié)構(gòu)

快速入門(mén)
案例: 請(qǐng)編寫(xiě)一個(gè)程序,該程序可以接收一個(gè)字符,比如: a,b,c,d,e,f,g a 表示星期一,b 表示星期 二 … 根據(jù)用戶的輸入顯 示相依的信息.要求使用 switch 語(yǔ)句完成
代碼演示
案例: 請(qǐng)編寫(xiě)一個(gè)程序,該程序可以接收一個(gè)字符,比如: a,b,c,d,e,f,g a 表示星期一,b 表示星期 二 … 根據(jù)用戶的輸入顯 示相依的信息.要求使用 switch 語(yǔ)句完成
#include<stdio.h>
void main(){
char c1 = ' ';
printf("請(qǐng)輸入一個(gè)字符(a,b,c,d)");
scanf("%c", &c1); //switch //表達(dá)式: 任何有值都可以看成是一個(gè)表達(dá)式
scanf("%c", &c1);
switch(c1) {
case 'a' : //'a' => 97
printf("今天星期一, 猴子穿新衣");
break; //退出 switch
case 'b' :
printf("今天星期二, 猴子當(dāng)小二");
break;
case 'c' :
printf("今天星期三, 猴子爬雪山");
break;
case 'd' :
printf("今天星期四, 猴子有急事");
break;
default : //default 是可選擇,不是必須的
printf("沒(méi)有匹配到任何值~");
}
printf("\nswitch 結(jié)束~");
}
注意:如果switch 缺少默認(rèn)值,剛好執(zhí)行的時(shí)候 值匹配不上任意一個(gè)case,會(huì)發(fā)生什么?
答:若沒(méi)有匹配的case值,也沒(méi)有default語(yǔ)句 ,則跳過(guò)switch 語(yǔ)句體 ,什么都不做。
switch 細(xì)節(jié)討論
1)switch 語(yǔ)句中的 expression 是一個(gè)常量表達(dá)式,必須是一個(gè)整型(char、short, int, long 等) 或枚舉類型
2)case 子句中的值必須是常量,而不能是變量
3)default 子句是可選的,當(dāng)沒(méi)有匹配的 case 時(shí),執(zhí)行 default
4)break 語(yǔ)句用來(lái)在執(zhí)行完一個(gè) case 分支后使程序跳出 switch 語(yǔ)句塊;
5)如果沒(méi)有寫(xiě) break,會(huì)執(zhí)行下一個(gè) case 語(yǔ)句塊,直到遇到 break 或者執(zhí)行到 switch 結(jié)尾, 這個(gè)現(xiàn)象稱為穿透.
switch 和 if 的比較
1)如果判斷的具體數(shù)值不多,而且符合整型 、枚舉類型。雖然兩個(gè)語(yǔ)句都可以使用,建議使用 swtich 語(yǔ)句。
2)其他情況:對(duì)區(qū)間判斷,對(duì)結(jié)果為 真假 的判斷,使用 if,if 的使用范圍更廣
案例:
對(duì)學(xué)生成績(jī)大于 60 分的,輸出“合格”。低于 60 分的,輸出“不合格”。(注:輸入的成績(jī)不能大于 100)
#include<stdio.h>
void main() {
double d1 = 0.0;
printf("請(qǐng)輸入成績(jī)");
scanf("%lf", &d1);
switch( (int)(d1/60) ) {//即 switch() 括號(hào)中,可以是一個(gè)復(fù)雜表達(dá)式
case 0 :
printf("不合格");
break;
case 1:
printf("合格");
break;
default :
printf("輸入成績(jī)有誤");
}
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++?vector與數(shù)組轉(zhuǎn)換寫(xiě)入/讀出文件方式
這篇文章主要介紹了C++?vector與數(shù)組轉(zhuǎn)換寫(xiě)入/讀出文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆排序詳解
堆是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個(gè)可以被看做一棵完全二叉樹(shù)的數(shù)組對(duì)象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。本文將通過(guò)圖片詳細(xì)介紹堆排序,需要的可以參考一下2022-03-03
完全掌握C++編程中構(gòu)造函數(shù)使用的超級(jí)學(xué)習(xí)教程
這篇文章主要介紹了C++中的構(gòu)造函數(shù),包括C++11標(biāo)準(zhǔn)中的新特性的介紹,十分推薦!需要的朋友可以參考下2016-01-01
C++實(shí)現(xiàn)圖形界面時(shí)鐘表盤(pán)代碼
這篇文章主要介紹了C++實(shí)現(xiàn)圖形界面時(shí)鐘表盤(pán)代碼,涉及坐標(biāo)函數(shù)的應(yīng)用及圖形界面程序設(shè)計(jì),需要的朋友可以參考下2014-10-10
C++實(shí)現(xiàn)LeetCode(72.編輯距離)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(72.編輯距離),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C語(yǔ)言掃雷詳細(xì)代碼分步實(shí)現(xiàn)流程
掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會(huì),幾次調(diào)試之后,發(fā)現(xiàn)這個(gè)比三子棋要復(fù)雜一些,尤其是空白展開(kāi)算法上和堵截玩家有的一拼,與實(shí)際游戲差別較大,不能使用光標(biāo),下面來(lái)詳解每一步分析2022-02-02
關(guān)于C++多重繼承下虛表結(jié)構(gòu)的問(wèn)題
這篇文章主要介紹了C++ 多重繼承下虛表結(jié)構(gòu)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09

