網站首頁 編程語言 正文
1.if-else語句
1.1 例子與總結
例子:
①只有一個if
if (1 == a) { printf("yes\n"); }
②if-else語句
if (1 == a) { printf("yes\n"); } else { printfr("no\n"); }
③if-else if-else if-else語句
printf("今天星期幾?\n"); int a = 0; scanf("%d", &a); if (1 == a) { printf("Monday\n"); } else if (2 == a) { printf("Tuesday\n"); } else if (3 == a) { printf("Wednesday\n"); } else { printf("Other Day\n"); }
總結:
if-else語句有三種形式。
①只有一個if,沒有對應的else。(適用于只有一個判斷的語句)
初學者在學習if-else語句的時候,可以只用這個if解決大部分選擇分支語句題目。
如:寫一個程序,90-100為A,80-90為B,70-80為C,其他為D
#include <stdio.h> int main() { float grade = 0; scanf("%f", &grade); if ( (grade >= 90) && (grade <= 100) ) { printf("A\n"); } if ( (grade >= 80) && (grade < 90) ) { printf("B\n"); } if ( (grade >= 70) && (grade < 80) ) { printf("C\n"); } if (grade < 70) { printf("D\n"); } return 0; }
反思:初學者寫這種題目的時候,剛開始建議先采用這種形式,等熟悉了可以用②和③。其實這種寫代碼的方式就和枚舉差不多。
②一個if,一個與之對應的else。(適用于A或B的情況)
eg:根據硬幣的正反面,決定是否聽課。正面假定為1,即聽課。反面假定為0,即逃課。
#include <stdio.h> int main() { int a = 1; scanf("%d", &a); if (1 == a)//1即為正面 { printf("聽課\n"); } else//只有正面與非正面(即反面) { printf("聽課\n"); } return 0; }
③if-n個else if-最后else(適用于至少三種情況的例子)
eg:以①中成績輸出為例子。
#include <stdio.h> int main() { float grade = 0; scanf("%f", &grade); if ( (grade >= 90) && (grade <= 100) ) { printf("A\n"); } else if ( (grade >= 80) && (grade < 90) ) { printf("B\n"); } else if ( (grade >= 70) && (grade < 80) ) { printf("C\n"); } else { printf("D\n"); } return 0; }
1.2 if與else的配對問題
eg:
float grade = 0; scanf("%f", &grade); if ( (grade >= 90) && (grade <= 100) ) { printf("A\n"); } if (0 == grade) printf("鴨蛋\n"); else { printf("正分\n"); }
親愛的讀者,請你判斷一下else與哪個if配對?
else配對規則是與最近的還未配對的if配對。
因此,例子中,if (0 == grade)和上面的if均沒有配對,else與最近的if (0 == grade)配對。
總結:else與離它最近的還未配對的if配對,if同理。
1.3 if-else代碼編寫建議
①無論if-else后面執行的語句是一個語句或者是一個語句塊,都建議打上大括號。
eg:
if ( (grade >= 90) && (grade <= 100) ) { printf("A\n"); } if (0 == grade) { printf("鴨蛋\n"); } else { printf("正分\n"); }
②if中的括號表示判斷條件,如果出現數字,特別是等于0一類的,建議數字放左邊。
不太建議把數字放右邊,因為放左邊代碼很容易發現問題
if (0 == grade)
如果不小心寫成0 = grade,編譯器會報錯。
③出現多個if-else,甚至是if-else嵌套代碼,建議代碼最好有縮進。因為如果要舉例,這個代碼寫起來較為麻煩,后期作者刷題將會補上。
1.4 其他需要注意的問題
①if括號內的條件問題
這里需要注意,if-else內的條件只有0與1,非0就是1.
eg:
if (i = -1) if (i)//i=-1 if (0) if (-1)
第一行是把-1賦值給i,非0,直接執行if。
第二行為i,具體需要判斷i的大小,正如其下的兩行,第三行為0不執行if,第四行為-1為真執行if。
②if-else的相關語句都可以進行嵌套。
③if-else if-else的知識點。
eg:
#include <stdio.h> int main() { float grade = 0; scanf("%f", &grade); if ( (grade >= 90) && (grade <= 100) ) { printf("A\n"); } else if ( (grade >= 80) ) { printf("B\n"); } else if ( (grade >= 70) ) { printf("C\n"); } else { printf("D\n"); } return 0; }
else if中的條件其實是默認是非上一行的if范圍或者if-else范圍的。
如例子中的代碼的第一個else if默認grade < 90,第二個else if默認grade < 80.
2. switch (case)語句
2.1例子和總結
這里,我依舊用成績和對應等級寫了一個代碼。
#include <stdio.h> int main() { float grade; printf("Input integer number:"); scanf("%f", &grade); int shiwei = (int) (grade / 10); switch (shiwei) { case 10: case 9: printf("A\n"); break; case 8: printf("B\n"); break; case 7: printf("C\n"); break; default: printf("D\n"); break; } return 0; }
分析:我注意到不同等級對應的分數對十位數是不一樣的,同時符合switch(整型表達式)和case 整型常量表達式的條件。
總結:
switch (整型表達式/整型變量)
{
? ?case 常量整數/整型常量表達式:
? ?語句;/語句塊;
? break;
......
}
②switch語句執行步驟及各個操作符表達含義
swich-選擇表達式的關鍵字
case:各種情況分支,同時也是語句執行的起點
語句塊:執行語句
break:跳出switch語句。
default:除case以外的情況均默認為default,其他情況從這里開始。
eg:以2.1中的代碼作為例子進行講解
一、假設grade為100,則shiwei=10,進入switch語句,以case 10為起點,開始執行語句。case 10后面不是break也沒有語句塊,繼續執行case 9,再執行打印A的操作,接下來碰到break跳出switch語句。
二、假設輸入的位101,shiwei=11,不是case的情況,進入default,打印D,再碰到break跳出。
2.2 switch語句其他知識點
①switch支持嵌套
②switch中的case和default無所謂順序。
③switch中括號為整型(無所謂常量變量),case必須為整型常量,如case 9+1也是可以的。
原文鏈接:https://blog.csdn.net/vscode_Gin/article/details/122023502
相關推薦
- 2022-09-09 ElasticSearch核心概念_其它綜合
- 2022-08-20 PostgreSQL實現按年、月、日、周、時、分、秒的分組統計_PostgreSQL
- 2022-07-19 Android通過交互實現貝塞爾曲線的繪制_Android
- 2022-04-23 python中的迭代器,生成器與裝飾器詳解_python
- 2022-11-01 Golang解析yaml文件操作指南_Golang
- 2022-03-14 Spring Redis Cache @Cacheable 大并發下返回null
- 2022-07-22 Docker安裝Seata分布式鎖
- 2022-06-06 Rust字符串字面值的一些經驗總結_相關技巧
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支