1. if多重判斷
1.1 if
如果程序中判斷事件很多,全部用if的話,會(huì)遍歷整個(gè)程序,效率低。
1.2 else if
如果if的判斷沒(méi)有通過(guò),則進(jìn)行下面的else if,如果當(dāng)前的else if判斷通過(guò),則只執(zhí)行當(dāng)前else if的語(yǔ)句。如果沒(méi)通過(guò),則一直執(zhí)行下面的else if判斷。
1.3 else
else為最后的分支,如果在else之前的if、else if判斷都沒(méi)有通過(guò)就會(huì)執(zhí)行else。
注:在一條if條件判斷中,可以有無(wú)數(shù)條else if,但是只能有一個(gè)else。在一個(gè)if條件判斷中,如果之前的if和else if都未通過(guò),那么執(zhí)行到else為無(wú)條件通過(guò)
2. switch多重判斷
當(dāng)分支比較少的時(shí)候我們使用if else語(yǔ)句解決,當(dāng)分支比較多的時(shí)候,我們要使用switch case語(yǔ)句解決,針對(duì)分支的復(fù)雜性選擇合適的程序解決。
當(dāng)分支過(guò)多時(shí),用 if else 處理會(huì)不太方便,而且容易出現(xiàn) if else 配對(duì)出錯(cuò)的情況。例如,輸入一個(gè)整數(shù),輸出該整數(shù)對(duì)應(yīng)的星期幾的英文表示:
switch(表達(dá)式){ case 整型數(shù)值1: 語(yǔ)句 1;break; case 整型數(shù)值2: 語(yǔ)句 2;break; ...... case 整型數(shù)值n: 語(yǔ)句 n;break; default: 語(yǔ)句 n+1; } 執(zhí)行過(guò)程: 1 . 首先計(jì)算“表達(dá)式”的值,假設(shè)為 m。 2 . 從第一個(gè) case 開(kāi)始,比較“整型數(shù)值1”和 m,如果它們相等,就執(zhí)行冒號(hào)后面的所有語(yǔ)句, 也就是從“語(yǔ)句1”一直執(zhí)行到“語(yǔ)句n+1”,而不管后面的 case 是否匹配成功。 3 . 如果“整型數(shù)值1”和 m 不相等,就跳過(guò)冒號(hào)后面的“語(yǔ)句1”,繼續(xù)比較第二個(gè) case、 第三個(gè) case……一旦發(fā)現(xiàn)和某個(gè)整型數(shù)值相等了,就會(huì)執(zhí)行后面所有的語(yǔ)句。假設(shè) m 和 “整型數(shù)值5”相等,那么就會(huì)從“語(yǔ)句5”一直執(zhí)行到“語(yǔ)句n+1”。 4 . 如果直到最后一個(gè)“整型數(shù)值n”都沒(méi)有找到相等的值,那么就執(zhí)行 default 后的“語(yǔ)句 n+1”。
break 是C語(yǔ)言中的一個(gè)關(guān)鍵字,專(zhuān)門(mén)用于跳出 switch 語(yǔ)句。所謂“跳出”,是指一旦遇到 break,就不再執(zhí)行 switch 中的任何語(yǔ)句,包括當(dāng)前分支中的語(yǔ)句和其他分支中的語(yǔ)句;也就是說(shuō),整個(gè) switch 執(zhí)行結(jié)束了,接著會(huì)執(zhí)行整個(gè) switch 后面的代碼。
#include <stdio.h> int main(){ int a; printf("Input integer number:"); scanf("%d",&a); switch(a){ case 1: printf("Monday\n"); break; case 2: printf("Tuesday\n"); break; case 3: printf("Wednesday\n"); break; case 4: printf("Thursday\n"); break; case 5: printf("Friday\n"); break; case 6: printf("Saturday\n"); break; case 7: printf("Sunday\n"); break; default:printf("error\n"); break; } return 0; }
1 . case 后面必須是一個(gè)整數(shù),或者是結(jié)果為整數(shù)的表達(dá)式,但不能包含任何變量。
2 . default 不是必須的。當(dāng)沒(méi)有 default 時(shí),如果所有 case 都匹配失敗,那么就什么都不執(zhí)行。