C語(yǔ)言示例講解switch分支語(yǔ)句的用法
1、了解switch分支語(yǔ)句
switch語(yǔ)句也是一種分支語(yǔ)句,常常用于多分支的情況。
比如:
輸入1,就會(huì)輸出星期一
輸入2,就會(huì)輸出星期二
…
輸入7,就會(huì)輸出星期七
對(duì)于這樣的代碼需求,如果用if 、else if、else的形式就會(huì)顯得太復(fù)雜。如何用switch語(yǔ)句實(shí)現(xiàn)該功能呢?switch語(yǔ)句的結(jié)構(gòu)又是怎樣的呢?
switch(整型表達(dá)式)
{
語(yǔ)句項(xiàng);
}
其中,整型表達(dá)式必須為整型,且為常量(字符也可以,因?yàn)樽址矊儆谑钦偷囊环N,因?yàn)樽址鎯?chǔ)的時(shí)候用的是字符的ASCII碼值);語(yǔ)句項(xiàng)是一些case語(yǔ)句。
case 整型常量表達(dá)式;
語(yǔ)句;
代碼實(shí)現(xiàn):
int main() { int day = 0; scanf("%d",&day); 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("星期日\(chéng)n"); } return 0; }
運(yùn)行該代碼,發(fā)現(xiàn)運(yùn)行之后得到的結(jié)果如下:
1
星期一
星期二
星期三
星期四
星期五
星期六
星期日
顯然,這樣的結(jié)果是不對(duì)的。因?yàn)閳?zhí)行完case 1 之后,沒有東西阻止它,它就會(huì)一直case 2、case 3…地執(zhí)行下去。若在程序運(yùn)行的時(shí)候,輸入的是6,就會(huì)輸出 星期六星期日。switch后面的表達(dá)式(day)是幾,它就會(huì)從case 幾進(jìn)去,決定入口的是表達(dá)式day的值以及case后面的值。
修改程序:在每個(gè)case后面加上break,以此來跳出case。
case決定的是入口,而break決定的是出口,這才實(shí)現(xiàn)了真正的分支。
2、示例
輸入1-5就輸出工作日,輸入6-7就輸出休息日。
int main() { int day = 0; scanf("%d",&day); switch (day) { case 1: case 2: case 3: case 4: case 5: printf("工作日\(chéng)n"); break; case 6: case 7: printf("休息日\(chéng)n"); break; } return 0; }
測(cè)試運(yùn)行結(jié)果如下:
5
工作日
break語(yǔ)句的實(shí)際效果是把語(yǔ)句列表劃分為不同的部分。
有一個(gè)編程好習(xí)慣:在最后一個(gè)case語(yǔ)句的后面也加上一條break語(yǔ)句。萬(wàn)一之后要在原先程序的基礎(chǔ)上再加上一些其它c(diǎn)ase語(yǔ)句,不至于出現(xiàn)上面的輸入1,一下子星期一到星期天全部打印出來的情況。
3、default子句
如果表達(dá)的值與所有的case標(biāo)簽的值都不匹配怎么辦?其實(shí)也沒什么,結(jié)果就是所有的語(yǔ)句都被跳過而已,程序并不會(huì)終止,也不會(huì)報(bào)錯(cuò)。因?yàn)檫@種情況在C語(yǔ)言中并不認(rèn)為是錯(cuò)誤,但是,如果并不想忽略不匹配所有標(biāo)簽的表達(dá)式怎么辦?這時(shí)候就可以在語(yǔ)句列表中增加一句default子句,將其寫在任何一個(gè)case標(biāo)簽可以出現(xiàn)的位置。
當(dāng)switch表達(dá)式的值并不匹配所有case標(biāo)簽的值時(shí),這個(gè)default子句后面的語(yǔ)句就會(huì)執(zhí)行。注意:每個(gè)switch語(yǔ)句中只能出現(xiàn)一條default子句。
int main() { int day = 0; scanf("%d",&day); switch (day) { default: printf("輸入錯(cuò)誤\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; case 7: printf("星期日\(chéng)n"); break; } return 0; }
測(cè)試結(jié)果:
9
輸入錯(cuò)誤
4、練習(xí)
看程序運(yùn)行的結(jié)果是多少?
int main() { int n = 1; int m = 2; switch (n) { case 1 : m++; case 2: n++; case 3: switch (n) //switch可以嵌套使用 { case 1: n++; case 2: m++; n++; break; } case 4: m++; break; default: break; } printf("m=%d,n=%d\n",m,n); return 0; }
主要就是考察switch里面的break的作用。
最終的運(yùn)行結(jié)果如下:
m=5,n=3
到此這篇關(guān)于C語(yǔ)言示例講解switch分支語(yǔ)句的用法的文章就介紹到這了,更多相關(guān)C語(yǔ)言switch分支內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(23.合并k個(gè)有序鏈表)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(23.合并k個(gè)有序鏈表),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07C++ 學(xué)習(xí)之旅 Windows程序內(nèi)部運(yùn)行原理
學(xué)習(xí)C++與.net不同的是,一定要搞清楚Windows程序內(nèi)部運(yùn)行原理,因?yàn)樗婕按蠖鄶?shù)是操作系統(tǒng)的調(diào)用,而.net畢竟是在.netFrameWork上唱戲2012-11-11基礎(chǔ)C語(yǔ)言編程時(shí)易犯錯(cuò)誤有哪些
基礎(chǔ)C語(yǔ)言編程時(shí)易犯錯(cuò)誤有哪些?這篇文章主要介紹了C語(yǔ)言編程時(shí)常見的錯(cuò)誤,感興趣的小伙伴們可以參考一下2016-11-11基于Windows C++ 應(yīng)用程序通用日志組件的使用詳解
眾所周知,在調(diào)試、跟蹤和執(zhí)行應(yīng)用程序的過程中,程序的日志能為這些工作提供大量有價(jià)值的運(yùn)行信息。因此,程序的日志對(duì)應(yīng)用程序的運(yùn)行、維護(hù)至關(guān)重要2013-05-05