版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三部分C語言的結(jié)構(gòu)語句
第4章選擇結(jié)構(gòu)4.1if語句4.1.1單分支if語句它的一般格式如下:
if(表達(dá)式)語句;說明:對條件表達(dá)式進(jìn)行判斷,若其值為“真(非0)”時(shí)執(zhí)行語句,若其值為“假(0)”時(shí)則跳過語句。其執(zhí)行過程見流程圖4.1。例如:設(shè)定學(xué)生成績60分為及格分?jǐn)?shù)線,用單分支if語句描述為:
if(grade>=60)
printf(“passed\n”);又如:x大于y就輸出x,用單分支if語句描述為:
if(x>y)
printf(“%d”,x);4.1.2雙分支if語句它的一般格式如下:if(表達(dá)式)語句1;else語句2;說明:與單分支if語句不同的是在條件為“真(非0)”或“假(0)”時(shí)執(zhí)行指定的不同的操作。對條件表達(dá)式進(jìn)行判斷,若其值為“真(非0)”時(shí),就執(zhí)行語句1;若其值為“假(0)”時(shí),就執(zhí)行語句2。其執(zhí)行過程見流程圖4.2。例如:給學(xué)生成績劃分:成績大于或等于60分時(shí)輸出“passed”,成績小于60分時(shí)輸出“failed”。用雙分支if語句描述為:
if(grade>=60)
printf(“passed\n”);else
printf(“failed\n”);在前面的章節(jié)還提到過與if/else結(jié)構(gòu)密切相關(guān)的條件運(yùn)算符?:,它是C語言中唯一的三目運(yùn)算符(即有三個(gè)操作數(shù))。對上面的兩例用條件運(yùn)算符改寫為:
grade>=60?printf(“passed\n”):printf(“failed\n”);x>y?printf(“%d”,x):printf(“%d”,y);由此說明適當(dāng)?shù)恼Z句修改條件運(yùn)算符可以完成if/else結(jié)構(gòu)相同的功能。說明:1.對于單分支和雙分支if后面的“表達(dá)式”,一般為邏輯表達(dá)式或關(guān)系表達(dá)式,事實(shí)上表達(dá)式的類型不限于此,可以是任意的數(shù)值類型(包括整型、實(shí)型、字符型、指針型數(shù)據(jù))。只要表達(dá)式的值為非0,就認(rèn)為它為真;只要表達(dá)式的值為0,就認(rèn)為它為假。例如:if(6)printf(“passed\n”);if(‘A’)printf(“%d”,‘A’);
這些都是合法的if語句。2.對于雙分支if語句,else子句不能作為語句單獨(dú)使用,它必須是if語句的一部分,與if配對使用。3.if語句后面的表達(dá)式之后不能增加分號(hào),同時(shí)注意語句后面的分號(hào)不能遺漏。4.在if和else后面可以只包括一個(gè)內(nèi)嵌的操作語句,也可以包括多個(gè)操作語句,此時(shí)務(wù)必用“{}”將幾個(gè)語句括起來成為一個(gè)復(fù)合語句。例如:if(x>100){x--;s=+x;}else{x++;s=+x;}此時(shí)又要注意:在“{}”后面不能再添加分號(hào),因?yàn)椤皗}”內(nèi)是一個(gè)完整的復(fù)合語句,不需要再添加分號(hào)。4.1.3多分支if語句對于解決判斷多個(gè)條件的問題,可以使用if語句的嵌套,即在if語句中又包括一個(gè)或多個(gè)if語句。它的一般格式如下:if(表達(dá)式1)
語句1;elseif(表達(dá)式2)語句2;elseif(表達(dá)式3)
語句3;┆elseif(表達(dá)式m)
語句m;else
語句n;說明:開始執(zhí)行該結(jié)構(gòu)后,便依次去對多個(gè)條件進(jìn)行判斷測試,符合某一條件,則轉(zhuǎn)去執(zhí)行該條件下的操作,其它部分將被跳過;如果無一條件為“真(非0)”,就執(zhí)行最后一個(gè)else所指定的操作,這個(gè)else可以看作“其它情形”。應(yīng)當(dāng)特別注意if與else的匹配關(guān)系:規(guī)則是從最內(nèi)層開始,else總是與它上面最近的(未曾配對的)if配對。其執(zhí)行過程見流程圖4.3?!纠?-1】編程實(shí)現(xiàn)給一百分制成績,要求輸出成績等級(jí)‘A’、‘B’、‘C’、‘D’、‘E’。90分以上為‘A’等,89~80分為‘B’等,79~70分為‘C’等,69~60分為‘D’等,60分以下為‘E’等?!驹闯绦颉縨ain(){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語句對于解決實(shí)際生活中例如人口統(tǒng)計(jì)分類、工資統(tǒng)計(jì)分類、銀行存款分類等等的多分支選擇問題,采用多分支if語句(即if語句的嵌套)來處理固然可以,但是如果分支較多,則嵌套的if語句層數(shù)多,程序冗長而且會(huì)導(dǎo)致可讀性降低。C語言提供了直接處理多分支選擇的switch語句,它的一般格式如下:switch(表達(dá)式){case常量表達(dá)式1:語句1;case常量表達(dá)式2:語句2;┆case常量表達(dá)式n:語句n;
default:語句m;}說明:其執(zhí)行過程為進(jìn)入switch結(jié)構(gòu)后,根據(jù)表達(dá)式的值從上到下去找與其相匹配的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");}}【運(yùn)行結(jié)果】inputthegrade:98ABCDE說明:此時(shí)的結(jié)果并不是我們所希望得到的,也就是說根據(jù)switch后面表達(dá)式的值找到了相匹配的case分支后,就以此為入口執(zhí)行后面的所有語句,而不再進(jìn)行判斷了。其流程圖如圖4.5。4.2.2break語句在switch結(jié)構(gòu)中的運(yùn)用為了正確使用switch結(jié)構(gòu)從多種結(jié)果中選擇一種結(jié)果的功能,我們可以運(yùn)用前面學(xué)過的break語句來達(dá)到此目的。對流程圖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í)行部分是一個(gè)由一些case子句和一個(gè)可缺省的default子句組成的復(fù)合語句,特別注意要用一對“{}”括起來。2.switch后面的表達(dá)式一般是整型表達(dá)式或字符型表達(dá)式,與之相對應(yīng)的case后面的常量表達(dá)式也應(yīng)是一個(gè)整型表達(dá)式或字符型表達(dá)式,但要注意case與常量表達(dá)式之間要有空格。例如:case6+9:printf(“ok”);是合法的。3.在執(zhí)行switch語句時(shí),根據(jù)其后表達(dá)式的值找相匹配的case子句,要注意“case常量表達(dá)式”只是起語句標(biāo)號(hào)的作用,并不是在該處進(jìn)行條件判斷。當(dāng)找到相匹配的case子句即入口標(biāo)號(hào)時(shí),就從此標(biāo)號(hào)開始執(zhí)行后面的語句。因此,應(yīng)該在執(zhí)行一個(gè)case子句后必須增加一條間斷語句break來使流程跳出switch結(jié)構(gòu)。如果未找到相匹配的case子句就執(zhí)行default子句,若default子句放在最后其后可以不加break語句。4.各個(gè)case子句出現(xiàn)的次序?qū)?zhí)行結(jié)果沒任何影響,即順序可以任意布局。5.每一個(gè)case能夠擁有一條或多條語句,其最大的不同之處在于使用多條語句時(shí)不需要用“{}”括起來。6.多個(gè)case可以共用一組執(zhí)行語句。例如:┆
case‘A’:case‘a(chǎn)’:++count;break;┆成績?yōu)榇髮懽帜窤或小寫字母a都進(jìn)行累加求和。7.switch結(jié)構(gòu)中的case子句中的常量表達(dá)式的值不允許相同。8.switch結(jié)構(gòu)允許嵌套。4.3實(shí)例解析【例4-2】從鍵盤輸入三個(gè)整數(shù)a、b、c,輸出最大的一個(gè)?!揪幊趟悸贰糠治觯嚎梢韵日页鯽與b之間的較大者,然后再將這個(gè)較大者與c比較找出較大者,則此數(shù)即為三個(gè)數(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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年關(guān)于京東集團(tuán)內(nèi)部員工晉升通道及考核制度解讀資料
- 在職員工培訓(xùn)制度
- 會(huì)議制度培訓(xùn)文案
- 兒童培訓(xùn)規(guī)章制度
- 幼兒培訓(xùn)班積分制度
- 大學(xué)師資培訓(xùn)制度
- 關(guān)于培訓(xùn)學(xué)校交費(fèi)制度
- 紅色培訓(xùn)制度
- 精神科科培訓(xùn)制度
- 科教研培訓(xùn)制度
- 2026年陜西省森林資源管理局局屬企業(yè)公開招聘工作人員備考題庫及參考答案詳解1套
- 承包團(tuán)建燒烤合同范本
- 電力線通信技術(shù)
- 人工流產(chǎn)手術(shù)知情同意書
- 2025秋人教版七年級(jí)全一冊信息科技期末測試卷(三套)
- 教師三筆字培訓(xùn)課件
- 鋼鐵燒結(jié)機(jī)脫硫脫硝施工方案
- 英語A級(jí)常用詞匯
- 三菱FX3U系列PLC編程技術(shù)與應(yīng)用-第二章課件
- RoHS培訓(xùn)資料課件
- 協(xié)調(diào)控制系統(tǒng)
評論
0/150
提交評論