<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
switch語句也是一種分支語句,常常用於多分支的情況。
比如:
輸入1,就會輸出星期一
輸入2,就會輸出星期二
…
輸入7,就會輸出星期七
對於這樣的程式碼需求,如果用if 、else if、else的形式就會顯得太複雜。如何用switch語句實現該功能呢?switch語句的結構又是怎樣的呢?
switch(整型表示式)
{
語句項;
}
其中,整型表示式必須為整型,且為常數(字元也可以,因為字元也屬於是整型的一種,因為字元儲存的時候用的是字元的ASCII碼值);語句項是一些case語句。
case 整型常數表示式;
語句;
程式碼實現:
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("星期日n"); } return 0; }
執行該程式碼,發現執行之後得到的結果如下:
1
星期一
星期二
星期三
星期四
星期五
星期六
星期日
顯然,這樣的結果是不對的。因為執行完case 1 之後,沒有東西阻止它,它就會一直case 2、case 3…地執行下去。若在程式執行的時候,輸入的是6,就會輸出 星期六星期日。switch後面的表示式(day)是幾,它就會從case 幾進去,決定入口的是表示式day的值以及case後面的值。
修改程式:在每個case後面加上break,以此來跳出case。
case決定的是入口,而break決定的是出口,這才實現了真正的分支。
輸入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("工作日n"); break; case 6: case 7: printf("休息日n"); break; } return 0; }
測試執行結果如下:
5
工作日
break語句的實際效果是把語句列表劃分為不同的部分。
有一個程式設計好習慣:在最後一個case語句的後面也加上一條break語句。萬一之後要在原先程式的基礎上再加上一些其它case語句,不至於出現上面的輸入1,一下子星期一到星期天全部列印出來的情況。
如果表達的值與所有的case標籤的值都不匹配怎麼辦?其實也沒什麼,結果就是所有的語句都被跳過而已,程式並不會終止,也不會報錯。因為這種情況在C語言中並不認為是錯誤,但是,如果並不想忽略不匹配所有標籤的表示式怎麼辦?這時候就可以在語句列表中增加一句default子句,將其寫在任何一個case標籤可以出現的位置。
當switch表示式的值並不匹配所有case標籤的值時,這個default子句後面的語句就會執行。注意:每個switch語句中只能出現一條default子句。
int main() { int day = 0; scanf("%d",&day); switch (day) { default: 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; case 7: printf("星期日n"); break; } return 0; }
測試結果:
9
輸入錯誤
看程式執行的結果是多少?
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=%dn",m,n); return 0; }
主要就是考察switch裡面的break的作用。
最終的執行結果如下:
m=5,n=3
到此這篇關於C語言範例講解switch分支語句的用法的文章就介紹到這了,更多相關C語言switch分支內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45