網(wǎng)站首頁 編程語言 正文
1、了解switch分支語句
switch語句也是一種分支語句,常常用于多分支的情況。
比如:
輸入1,就會輸出星期一
輸入2,就會輸出星期二
…
輸入7,就會輸出星期七
對于這樣的代碼需求,如果用if 、else if、else的形式就會顯得太復(fù)雜。如何用switch語句實(shí)現(xiàn)該功能呢?switch語句的結(jié)構(gòu)又是怎樣的呢?
switch(整型表達(dá)式)
{
?? ?語句項(xiàng);
}
其中,整型表達(dá)式必須為整型,且為常量(字符也可以,因?yàn)樽址矊儆谑钦偷囊环N,因?yàn)樽址鎯Φ臅r候用的是字符的ASCII碼值);語句項(xiàng)是一些case語句。
case 整型常量表達(dá)式;
?? ?語句;
代碼實(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("星期日\n");
}
return 0;
}
運(yùn)行該代碼,發(fā)現(xiàn)運(yùn)行之后得到的結(jié)果如下:
1
星期一
星期二
星期三
星期四
星期五
星期六
星期日
顯然,這樣的結(jié)果是不對的。因?yàn)閳?zhí)行完case 1 之后,沒有東西阻止它,它就會一直case 2、case 3…地執(zhí)行下去。若在程序運(yùn)行的時候,輸入的是6,就會輸出 星期六星期日。switch后面的表達(dá)式(day)是幾,它就會從case 幾進(jìn)去,決定入口的是表達(dá)式day的值以及case后面的值。
修改程序:在每個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("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
測試運(yùn)行結(jié)果如下:
5
工作日
break語句的實(shí)際效果是把語句列表劃分為不同的部分。
有一個編程好習(xí)慣:在最后一個case語句的后面也加上一條break語句。萬一之后要在原先程序的基礎(chǔ)上再加上一些其它c(diǎn)ase語句,不至于出現(xiàn)上面的輸入1,一下子星期一到星期天全部打印出來的情況。
3、default子句
如果表達(dá)的值與所有的case標(biāo)簽的值都不匹配怎么辦?其實(shí)也沒什么,結(jié)果就是所有的語句都被跳過而已,程序并不會終止,也不會報錯。因?yàn)檫@種情況在C語言中并不認(rèn)為是錯誤,但是,如果并不想忽略不匹配所有標(biāo)簽的表達(dá)式怎么辦?這時候就可以在語句列表中增加一句default子句,將其寫在任何一個case標(biāo)簽可以出現(xiàn)的位置。
當(dāng)switch表達(dá)式的值并不匹配所有case標(biāo)簽的值時,這個default子句后面的語句就會執(zhí)行。注意:每個switch語句中只能出現(xiàn)一條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;
}
測試結(jié)果:
9
輸入錯誤
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
原文鏈接:https://blog.csdn.net/qq_42822743/article/details/125172276
相關(guān)推薦
- 2022-05-20 ElasticSearch 7.X系列之:細(xì)節(jié)問題
- 2022-05-21 生產(chǎn)級K8S基礎(chǔ)環(huán)境部署配置流程_服務(wù)器其它
- 2022-06-06 layui 日期格式不正確(date、datetime)區(qū)別
- 2021-12-07 Android使用acoco統(tǒng)計(jì)代碼行覆蓋率介紹_Android
- 2022-11-22 React?Context源碼實(shí)現(xiàn)原理詳解_React
- 2021-11-28 深入講解Socket原理_C 語言
- 2022-02-02 element ui el-dialog 居中,并且內(nèi)容多的時候內(nèi)部可以滾動
- 2022-07-25 詳解docker進(jìn)行數(shù)據(jù)掛載的三種模式_docker
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支