
在C語言中,有三種條件判斷結構:if語句、if-else語句和switch語句。
if (條件) { // 代碼塊1}
代碼示例#include < stdio.h >int main() { int num = 5; if (num > 0) { printf("這個數為正數.n"); } return 0;}
運行結果if (條件) { // 代碼塊1} else { // 代碼塊2}
代碼示例#include < stdio.h >int main() { int num = -2; if (num > 0) { printf("這個數為正數.n"); } else { printf("這個數為負數.n"); } return 0;}
運行結果#include < stdio.h >int main() { int num = 3; if (num > 0) { if (num < 5) { printf("num在1到4之間n"); } else { printf("num大于等于5n"); } } else { printf("num小于等于0n"); } return 0;}
在這個示例中,外層的if語句判斷num是否大于0,如果成立,進入內層的if語句繼續判斷num是否小于5;
【資料圖】
如果不成立,執行else語句塊,輸出"num小于等于0"。
num的值是3,它既符合外層if語句的條件,也符合內層if語句的條件,所以程序輸出"num在1到4之間"。
運行結果#include < stdio.h >int main() { int score = 85; if (score >= 90) { printf("優秀n"); } else if (score >= 80) { printf("良好n"); } else if (score >= 70) { printf("中等n"); } else if (score >= 60) { printf("及格n"); } else { printf("不及格n"); } return 0;}
在這個示例中,if else語句被鏈式使用,程序從上到下依次判斷score的值是否大于等于90、是否大于等于80、是否大于等于70、是否大于等于60,最終輸出對應的成績等級。
score的值是85,它大于等于80,但小于90,所以程序輸出"良好"。
運行結果switch (expression) { case constant1: statement1; break; case constant2: statement2; break; ... default: statementN; break;}
switch語句的執行過程如下:表達式的值被計算。表達式的值被依次與各個case后的常量進行比較,直到找到與之匹配的常量。如果找到匹配的常量,執行該常量對應的代碼塊,并跳出switch語句。如果沒有找到匹配的常量,執行default對應的代碼塊(如果有),并跳出switch語句。?
switch
語句中的case
標簽可以是整數、字符或枚舉常量。每個
case
標簽必須是唯一的,且必須以冒號(:
)結尾。在
case
后面的代碼塊中可以包含任意數量的語句,用花括號({}
)來組成代碼塊。
switch
語句的default
標簽是可選的,它通常放在case
標簽的最后面。如果沒有匹配到任何case
標簽,那么default
標簽下的代碼塊將被執行。
default
標簽只能出現一次,且必須放在最后一個case
標簽之后,否則會引發編譯錯誤。
#include < stdio.h >int main() { int day; printf("請輸入數字(1-7):"); 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("輸入錯誤!n"); break; } return 0;}
運行結果除了基本用法外,switch語句還有一些高級用法,可以更靈活地使用。
在switch語句中,如果沒有在一個case語句塊中使用break語句,那么程序會從這個case開始,一直執行到switch語句的結尾,這種現象被稱為case標簽穿透。
下面是一個case標簽穿透的示例:#include < stdio.h >int main() { int num = 3; switch (num) { case 1: case 2: printf("num是1或2n"); break; case 3: case 4: printf("num是3或4n"); break; default: printf("num不是1、2、3、4n"); break; } return 0;}
在這個示例中,num的值是3,它既符合case 3的條件,也符合case 4的條件,但是由于case 3的語句塊中使用了break語句,所以程序執行完case 3之后就跳出了switch語句,不會繼續執行case 4的語句塊。
運行結果#include < stdio.h >int main() { int num = 1; switch (num) { case 1: printf("num是1n"); switch (num) { case 2: printf("num是2n"); break; default: printf("num不是2n"); break; } break; case 3: printf("num是3n"); break; default: printf("num既不是1也不是3n"); break; } return 0;}
在這個示例中,switch語句被嵌套使用,內層的switch語句只有在外層的case 1被匹配時才會執行。
運行結果通過這篇文章,我們學會了
1、if語句
2、if-else語句
3、switch語句
標簽: