網(wǎng)站首頁(yè) 編程語言 正文
一、if-else語句
1.單選擇
單選擇通過if語句就可以實(shí)現(xiàn),if語句的語法及執(zhí)行流程如下:
if(表達(dá)式) { 代碼塊(表達(dá)式返回值為真時(shí)執(zhí)行) }
當(dāng)程序運(yùn)行到if語句時(shí),會(huì)由表達(dá)式進(jìn)行判定,諾表達(dá)式的返回值為真,則進(jìn)入代碼塊執(zhí)行語句,為假便跳過代碼塊繼續(xù)執(zhí)行。(當(dāng)代碼塊語句僅有一句時(shí),可以省略大括號(hào)。)
舉一個(gè)簡(jiǎn)單的例子
例:判斷10是否為3的倍數(shù)
int main() { int i = 10; if (i % 3 == 0) //表達(dá)式結(jié)果為假 printf("是");//代碼塊內(nèi) 未執(zhí)行 return 0; }
?2.雙選擇
雙選擇通過if-else語句實(shí)現(xiàn),if-else語句的語法及執(zhí)行流程如下:
(else的匹配:else是和它相距的最近的if匹配的)
if(表達(dá)式) { 語句一(表達(dá)式返回值為真時(shí)執(zhí)行) } else { 語句二(表達(dá)式返回值為假時(shí)執(zhí)行) }
?
當(dāng)程序運(yùn)行到if語句時(shí),會(huì)由表達(dá)式進(jìn)行判定,表達(dá)式的返回值為真,則執(zhí)行語句1,為假便塊執(zhí)行語句2。
舉一個(gè)簡(jiǎn)單的例子
例:判斷學(xué)生分?jǐn)?shù)及格?
#include<stdio.h> int main() { int i = 0; scanf("%d", &i); if (i >= 60) printf("及格"); else printf("不及格"); return 0; }
3.多選擇
通過else if語句實(shí)現(xiàn)的多選擇,else if語句的語法及執(zhí)行流程如下:
if(表達(dá)式1) { 語句1 (表達(dá)式1返回值為真時(shí)執(zhí)行) } else if(表達(dá)式2) { 語句2 (表達(dá)式返回值為真時(shí)執(zhí)行) } else if(表達(dá)式3) { 語句3(表達(dá)式返回值為真時(shí)執(zhí)行) } else { 代碼塊(以上表達(dá)式均為假時(shí)執(zhí)行) }
?
當(dāng)程序運(yùn)行到if語句時(shí),會(huì)由表達(dá)式進(jìn)行判定,表達(dá)式1的返回值為真,則進(jìn)入if下的代碼塊執(zhí)行語句1,為假便進(jìn)入表達(dá)式2。當(dāng)然if-else可以實(shí)現(xiàn)的分支不止這四種,通過增加else if?語句的數(shù)量便可以實(shí)現(xiàn)更多的選擇。
舉一個(gè)簡(jiǎn)單的例子
例:年齡分段
#include <stdio.h> int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("少年\n"); } else if (age >= 18 && age < 30) { printf("青年\n"); } else if (age >= 30 && age < 50) { printf("中年\n"); } else if (age >= 50 && age < 80) { printf("老年\n"); } else { printf("老壽星\n"); } return 0; }
二.switch語句
switch語句也是一種分支語句。 常常用于多分支的情況。else if?語句也能實(shí)現(xiàn)多分支情況,但在某些情況下使用else if來實(shí)現(xiàn),會(huì)使代碼過于復(fù)雜。
比如:
輸入1,輸出星期一
輸入2,輸出星期二
輸入3,輸出星期三
輸入4,輸出星期四
輸入5,輸出星期五
輸入6,輸出星期六
輸入7,輸出星期日
如果使用else if?
#include<stdio.h> int main() { int day = 0; scanf("%d", &day); if (1 == day) printf("星期一"); else if (2 == day) printf("星期二"); else if (3 == day) printf("星期三"); else if (4 == day) printf("星期四"); else if (5 == day) printf("星期五"); else if (6 == day) printf("星期六"); else printf("星期日"); return 0; }
?那么這個(gè)代碼便會(huì)太過復(fù)雜,而使用switch就會(huì)很多
switch語句的語法及執(zhí)行流程如下:
switch(整型表達(dá)式) { //在一個(gè) switch 中可以有任意數(shù)量的 case 語句。 case 整形常量表達(dá)式: 語句; }
case? 是一個(gè)入口,按照輸入整型表達(dá)式的值進(jìn)入,后按照順序依次運(yùn)行。
單使用switch語句是無法實(shí)現(xiàn)分支的,需要搭配break使用才能實(shí)現(xiàn)真正的分支。
舉一個(gè)例子:
#include <stdio.h> 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; }
輸入值分別為2 4時(shí),輸出結(jié)果如下:
?與想要實(shí)現(xiàn)的效果相差甚遠(yuǎn),而搭配break使用就能解決這個(gè)問題。
#include <stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { 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; }
?
?break語句 的實(shí)際效果是把語句列表劃分為不同的分支部分。
?switch除了搭配break語句使用,往往也會(huì)搭配?default語句
如果表達(dá)的值與所有的case標(biāo)簽的值都不匹配時(shí),所有的語句都會(huì)被跳過。程序并不會(huì)終止,也不會(huì)報(bào)錯(cuò),因?yàn)檫@種情況在C中并不認(rèn)為是個(gè)錯(cuò)誤。
諾并不想忽略不匹配所有標(biāo)簽的表達(dá)式的值時(shí),可以在語句列表中增加一條default子句。
當(dāng)?switch?表達(dá)式的值并不匹配所有?case?標(biāo)簽的值時(shí),這個(gè)?default?子句后面的語句就會(huì)執(zhí)行。
?例如:
#include <stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { 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; default: printf("輸入錯(cuò)誤"); } return 0; }
?switch?語句可以有一個(gè)可選的?default?case,出現(xiàn)在?switch?的結(jié)尾。default case?可用于在上面所有?case?都不為真時(shí)執(zhí)行一個(gè)任務(wù)。default case?中的?break?語句不是必需的。
總結(jié)
原文鏈接:https://blog.csdn.net/HJS020828/article/details/122512531
相關(guān)推薦
- 2023-02-09 go?sync?Once實(shí)現(xiàn)原理示例解析_Golang
- 2022-08-15 前端如何解決瀏覽器自動(dòng)填充input輸入框賬號(hào)密碼的問題
- 2022-10-24 React中的生命周期和子組件_React
- 2022-06-11 FreeRTOS進(jìn)階之調(diào)度器啟動(dòng)過程分析_操作系統(tǒng)
- 2022-09-04 Python中函數(shù)的參數(shù)類型詳解_python
- 2023-10-12 react函數(shù)式組件的useEffect
- 2022-04-03 在Python中如何優(yōu)雅地創(chuàng)建表格的實(shí)現(xiàn)_python
- 2021-10-25 C語言編寫漢諾塔游戲_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- 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錯(cuò)誤: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)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支