版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第三部分C語言的結(jié)構(gòu)語句
第4章選擇結(jié)構(gòu)4.1if語句4.1.1單分支if語句它的一般格式如下:
if(表達式)語句;說明:對條件表達式進行判斷,若其值為“真(非0)”時執(zhí)行語句,若其值為“假(0)”時則跳過語句。其執(zhí)行過程見流程圖4.1。例如:設(shè)定學(xué)生成績60分為及格分數(shù)線,用單分支if語句描述為:
if(grade>=60)
printf(“passed\n”);又如:x大于y就輸出x,用單分支if語句描述為:
if(x>y)
printf(“%d”,x);4.1.2雙分支if語句它的一般格式如下:if(表達式)語句1;else語句2;說明:與單分支if語句不同的是在條件為“真(非0)”或“假(0)”時執(zhí)行指定的不同的操作。對條件表達式進行判斷,若其值為“真(非0)”時,就執(zhí)行語句1;若其值為“假(0)”時,就執(zhí)行語句2。其執(zhí)行過程見流程圖4.2。例如:給學(xué)生成績劃分:成績大于或等于60分時輸出“passed”,成績小于60分時輸出“failed”。用雙分支if語句描述為:
if(grade>=60)
printf(“passed\n”);else
printf(“failed\n”);在前面的章節(jié)還提到過與if/else結(jié)構(gòu)密切相關(guān)的條件運算符?:,它是C語言中唯一的三目運算符(即有三個操作數(shù))。對上面的兩例用條件運算符改寫為:
grade>=60?printf(“passed\n”):printf(“failed\n”);x>y?printf(“%d”,x):printf(“%d”,y);由此說明適當(dāng)?shù)恼Z句修改條件運算符可以完成if/else結(jié)構(gòu)相同的功能。說明:1.對于單分支和雙分支if后面的“表達式”,一般為邏輯表達式或關(guān)系表達式,事實上表達式的類型不限于此,可以是任意的數(shù)值類型(包括整型、實型、字符型、指針型數(shù)據(jù))。只要表達式的值為非0,就認為它為真;只要表達式的值為0,就認為它為假。例如:if(6)printf(“passed\n”);if(‘A’)printf(“%d”,‘A’);
這些都是合法的if語句。2.對于雙分支if語句,else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。3.if語句后面的表達式之后不能增加分號,同時注意語句后面的分號不能遺漏。4.在if和else后面可以只包括一個內(nèi)嵌的操作語句,也可以包括多個操作語句,此時務(wù)必用“{}”將幾個語句括起來成為一個復(fù)合語句。例如:if(x>100){x--;s=+x;}else{x++;s=+x;}此時又要注意:在“{}”后面不能再添加分號,因為“{}”內(nèi)是一個完整的復(fù)合語句,不需要再添加分號。4.1.3多分支if語句對于解決判斷多個條件的問題,可以使用if語句的嵌套,即在if語句中又包括一個或多個if語句。它的一般格式如下:if(表達式1)
語句1;elseif(表達式2)語句2;elseif(表達式3)
語句3;┆elseif(表達式m)
語句m;else
語句n;說明:開始執(zhí)行該結(jié)構(gòu)后,便依次去對多個條件進行判斷測試,符合某一條件,則轉(zhuǎn)去執(zhí)行該條件下的操作,其它部分將被跳過;如果無一條件為“真(非0)”,就執(zhí)行最后一個else所指定的操作,這個else可以看作“其它情形”。應(yīng)當(dāng)特別注意if與else的匹配關(guān)系:規(guī)則是從最內(nèi)層開始,else總是與它上面最近的(未曾配對的)if配對。其執(zhí)行過程見流程圖4.3?!纠?-1】編程實現(xiàn)給一百分制成績,要求輸出成績等級‘A’、‘B’、‘C’、‘D’、‘E’。90分以上為‘A’等,89~80分為‘B’等,79~70分為‘C’等,69~60分為‘D’等,60分以下為‘E’等。【源程序】main(){intgrade;printf("inputthegrade:");scanf("%d",&grade);if(grade>=90)printf("A\n");elseif(grade>=80)printf("B\n");elseif(grade>=70)printf("C\n");elseif(grade>=60)printf("D\n");elseprintf("E\n");}4.2switch語句
4.2.1switch語句對于解決實際生活中例如人口統(tǒng)計分類、工資統(tǒng)計分類、銀行存款分類等等的多分支選擇問題,采用多分支if語句(即if語句的嵌套)來處理固然可以,但是如果分支較多,則嵌套的if語句層數(shù)多,程序冗長而且會導(dǎo)致可讀性降低。C語言提供了直接處理多分支選擇的switch語句,它的一般格式如下:switch(表達式){case常量表達式1:語句1;case常量表達式2:語句2;┆case常量表達式n:語句n;
default:語句m;}說明:其執(zhí)行過程為進入switch結(jié)構(gòu)后,根據(jù)表達式的值從上到下去找與其相匹配的case,以此作為入口,執(zhí)行其后面的各語句。對【例4-1】用switch語句改寫如下:【源程序】main(){intgrade;printf("inputthegrade:");scanf("%d",&grade);switch(grade/10){case10:case9:printf("A\n");case8:printf("B\n");case7:printf("C\n");case6:printf("D\n");default:printf("E\n");}}【運行結(jié)果】inputthegrade:98ABCDE說明:此時的結(jié)果并不是我們所希望得到的,也就是說根據(jù)switch后面表達式的值找到了相匹配的case分支后,就以此為入口執(zhí)行后面的所有語句,而不再進行判斷了。其流程圖如圖4.5。4.2.2break語句在switch結(jié)構(gòu)中的運用為了正確使用switch結(jié)構(gòu)從多種結(jié)果中選擇一種結(jié)果的功能,我們可以運用前面學(xué)過的break語句來達到此目的。對流程圖4.5修改如下如圖4.6:【源程序】main(){intgrade;printf("inputthegrade:");scanf("%d",&grade);switch(grade/10){case10:case9:printf("A\n");break;case8:printf("B\n");break;case7:printf("C\n");break;case6:printf("D\n");break;default:printf("E\n");break;}}說明:1.switch結(jié)構(gòu)的執(zhí)行部分是一個由一些case子句和一個可缺省的default子句組成的復(fù)合語句,特別注意要用一對“{}”括起來。2.switch后面的表達式一般是整型表達式或字符型表達式,與之相對應(yīng)的case后面的常量表達式也應(yīng)是一個整型表達式或字符型表達式,但要注意case與常量表達式之間要有空格。例如:case6+9:printf(“ok”);是合法的。3.在執(zhí)行switch語句時,根據(jù)其后表達式的值找相匹配的case子句,要注意“case常量表達式”只是起語句標(biāo)號的作用,并不是在該處進行條件判斷。當(dāng)找到相匹配的case子句即入口標(biāo)號時,就從此標(biāo)號開始執(zhí)行后面的語句。因此,應(yīng)該在執(zhí)行一個case子句后必須增加一條間斷語句break來使流程跳出switch結(jié)構(gòu)。如果未找到相匹配的case子句就執(zhí)行default子句,若default子句放在最后其后可以不加break語句。4.各個case子句出現(xiàn)的次序?qū)?zhí)行結(jié)果沒任何影響,即順序可以任意布局。5.每一個case能夠擁有一條或多條語句,其最大的不同之處在于使用多條語句時不需要用“{}”括起來。6.多個case可以共用一組執(zhí)行語句。例如:┆
case‘A’:case‘a(chǎn)’:++count;break;┆成績?yōu)榇髮懽帜窤或小寫字母a都進行累加求和。7.switch結(jié)構(gòu)中的case子句中的常量表達式的值不允許相同。8.switch結(jié)構(gòu)允許嵌套。4.3實例解析【例4-2】從鍵盤輸入三個整數(shù)a、b、c,輸出最大的一個?!揪幊趟悸贰糠治觯嚎梢韵日页鯽與b之間的較大者,然后再將這個較大者與c比較找出較大者,則此數(shù)即為三個數(shù)中的最大數(shù)?!驹闯绦颉拷夥?:main(){int
a,b,c;printf("input
a,b,c:");scanf("%d,%d,%d",&a,&b,&c);printf("themaxis:%d\n",c>((a>b)?a:b)?c:((a>b)?a:b));}解法2:main(){
int
a,b,c,max;
printf("input
a,b,c:");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
if(a>c)max=a;elsemax=c;else
if(b>c)max=b;elsemax=c;
printf("themax
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度礦業(yè)權(quán)抵押擔(dān)保項目合同樣本3篇
- 2024經(jīng)七路施工項目廉潔保障合同版B版
- 二零二五年度廠房裝修安全風(fēng)險評估合同3篇
- 2025年度高校文印服務(wù)外包合同3篇
- 二零二五年度園林景觀裝修合同范本2篇
- 2024版影視融資中介協(xié)議模板版B版
- 簡易勞務(wù)派遣合同范本
- 二零二五年度icp許可證辦理與互聯(lián)網(wǎng)企業(yè)合規(guī)性審查與法律支持合同3篇
- 二零二五版二手車按揭轉(zhuǎn)讓合同范本3篇
- 二零二五版建筑材料租賃與合同變更合同3篇
- 人教版(2025新版)七年級下冊英語:寒假課內(nèi)預(yù)習(xí)重點知識默寫練習(xí)
- 【公開課】同一直線上二力的合成+課件+2024-2025學(xué)年+人教版(2024)初中物理八年級下冊+
- 高職組全國職業(yè)院校技能大賽(嬰幼兒照護賽項)備賽試題庫(含答案)
- 2024年公安部直屬事業(yè)單位招聘筆試參考題庫附帶答案詳解
- NB-T 47013.15-2021 承壓設(shè)備無損檢測 第15部分:相控陣超聲檢測
- SJG 05-2020 基坑支護技術(shù)標(biāo)準(zhǔn)-高清現(xiàn)行
- 汽車維修價格表
- 司爐崗位應(yīng)急處置卡(燃氣)參考
- 10KV供配電工程施工組織設(shè)計
- 終端攔截攻略
- 藥物外滲處理及預(yù)防【病房護士安全警示教育培訓(xùn)課件】--ppt課件
評論
0/150
提交評論