




已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
教學(xué)內(nèi)容: 6.1 if 語(yǔ)句 6.2 switch 語(yǔ)句 6.3 選擇結(jié)構(gòu)程序舉例 教學(xué)要求: 1掌握if語(yǔ)句的語(yǔ)法和使用方法。 2掌握switch語(yǔ)句的語(yǔ)法和使用方法。 3掌握分支語(yǔ)句的嵌套使用方法。,第6章 選擇結(jié)構(gòu)程序設(shè)計(jì),例如,某一單位要給職工增加工資,它的規(guī)定是:工資低于1000元的職工,每人增加工資100元,超過(guò)1000元的職工暫不增加工資。 選擇條件: 工資低于1000元嗎? 數(shù)據(jù)處理: 是 增加工資100元, 否則不增加工資 如果增加工資的規(guī)定是:工資低于1000元的職工,每人增加工資200元,超過(guò)1000元的職工增加工資100元。 選擇條件:工資低于1000元嗎 數(shù)據(jù)處理: 是 增加工資200元 否則 增加工資100元,在C語(yǔ)言中,當(dāng)需要根據(jù)選擇條件來(lái)確定所要做(執(zhí)行)哪一項(xiàng)數(shù)據(jù)處理的情況,這樣的程序結(jié)構(gòu),被稱為選擇結(jié)構(gòu)。,在C語(yǔ)言中表示選擇條件,一般用: 關(guān)系表達(dá)式、邏輯表達(dá)式 二 、實(shí)現(xiàn)選擇結(jié)構(gòu)用什么語(yǔ)句: C語(yǔ)言中實(shí)現(xiàn)選擇結(jié)構(gòu)所用語(yǔ)句: 條件分支: if 語(yǔ)句 (if else) 開(kāi)關(guān)分支: switch 語(yǔ)句 (switch case),在C語(yǔ)言中,設(shè)計(jì)選擇結(jié)構(gòu)程序要解決的問(wèn)題: 一 、如何表示選擇條件:,1. 第一種形式 (1)語(yǔ)句格式: if(表達(dá)式) 語(yǔ)句 語(yǔ)句中的表達(dá)式必須用單括號(hào) “(” 和 “ )”括起來(lái)。表達(dá)式后面語(yǔ)句也可使用復(fù)合語(yǔ)句。 (2)語(yǔ)句功能:如果表達(dá)式的值為真(T),則執(zhí)行其后的語(yǔ)句, 否則不執(zhí)行該語(yǔ)句。 在C語(yǔ)言中,沒(méi)有邏輯型數(shù)據(jù)類型。當(dāng)表達(dá)式的值為任何非零值,表示表達(dá)式的條件成立;當(dāng)表達(dá)式的值為零值,表示表達(dá)式的條件不成立。,6.1 if 語(yǔ) 句,2. 第二種形式 (1)語(yǔ)句格式: if(表達(dá)式) 語(yǔ)句1; else 語(yǔ)句2; 說(shuō)明:else子句(可選)是 if 語(yǔ)句的一部分,必須與 if 配對(duì)使用,不能單獨(dú)使用 (2)語(yǔ)句功能:如果表達(dá)式的值為真(非零),則執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2 。,例6.1 輸入兩個(gè)整數(shù),輸出其中的大數(shù)。 void main() int a,b,max; printf(“n input two numbers: “); scanf(“%d%d“, ,例6.2 輸入兩個(gè)整數(shù),輸出其中的大數(shù)。 main() int a, b; printf(“input two numbers: “); scanf(“%d%d“, ,例6.3從鍵盤(pán)輸入兩個(gè)數(shù),按升序輸出兩個(gè)數(shù) #include main() float a, b, t; scanf(“%f,%f“, ,3. 第三種形式,(1) 語(yǔ)句格式 if (表達(dá)式1) 語(yǔ)句組1 else if (表達(dá)式2) 語(yǔ)句組2 else if (表達(dá)式3) 語(yǔ)句組3 else if (表達(dá)式4) 語(yǔ)句組4 else 語(yǔ)句組5 若 語(yǔ)句組5 又是一條 if 語(yǔ)句,整個(gè)語(yǔ)句最少是一個(gè)6個(gè)分支的多分支 if 語(yǔ)句。,(2)多分支 if 語(yǔ)句的執(zhí)行過(guò)程 當(dāng)“表達(dá)式1”的值不等于0時(shí),則執(zhí)行語(yǔ)句組1 ,然后轉(zhuǎn)向下一條語(yǔ)句; 否則,當(dāng)“表達(dá)式2”的值不等于0時(shí),執(zhí)行語(yǔ)句組2,轉(zhuǎn)向下一條語(yǔ)句; 再否則,當(dāng)“表達(dá)式3”的值不等于0時(shí),執(zhí)行語(yǔ)句組3,轉(zhuǎn)向下一條語(yǔ)句; 再否則,當(dāng)“表達(dá)式4”的值不等于0時(shí),執(zhí)行語(yǔ)句組4,轉(zhuǎn)向下一條語(yǔ)句; 再否則,執(zhí)行語(yǔ)句組5,轉(zhuǎn)向下一條語(yǔ)句;,4. if語(yǔ)句說(shuō)明 (1) 在三種形式的if語(yǔ)句中,條件表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式, 但也可以是其它表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個(gè)變量。 (2) 在if語(yǔ)句的三種形式中,所有的語(yǔ)句應(yīng)為單個(gè)語(yǔ)句,如果要想在滿足條件時(shí)執(zhí)行一組(多個(gè))語(yǔ)句,則必須把這一組語(yǔ)句用 括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。但要注意的是在右括號(hào)之后不能再加分號(hào)。,例 6.4 輸入 + * - / , 輸出對(duì)應(yīng)的單詞。 #include main() char ch ; ch = getchar(); if (ch=+) printf(“plusn“); else if (ch=-) printf(“minusn“); else if(ch=*) printf(“multiplyn“); else if (ch=/) printf(“dividen“); else printf(“errorn“); ,5. if 語(yǔ)句與條件運(yùn)算符 如果在條件語(yǔ)句中,只執(zhí)行單個(gè)的賦值語(yǔ)句時(shí), ??墒褂脳l件表達(dá)式來(lái)實(shí)現(xiàn)。不但使程序簡(jiǎn)潔,也提高了運(yùn)行效率。 例 6.5 輸入任意三個(gè)整數(shù),求三個(gè)數(shù)中的最大值。 main() int n1,n2,n3,max; scanf(“%d,%d,%d“, ,max= ( n1n2 ) ? (n1n3 ) ? n1 : n3):(n2n3 ) ? n2 : n3);,6if語(yǔ)句的嵌套與嵌套匹配原則 (1)if 語(yǔ)句嵌套,是指,在“語(yǔ)句1”或(和)“語(yǔ)句2”中,又包含有 if 語(yǔ)句的情況。 if 語(yǔ)句嵌套時(shí),else子句與在它上面、距它最近、且尚未匹配的 if 配對(duì)。例如: if (ab) s=s+t; else if (a= =b) t=5; /* 語(yǔ)句2是 if 語(yǔ)句*/ else t=2*s;,例 6.6 輸入任意三個(gè)整數(shù),求三個(gè)數(shù)中的最大值。 main() int n1,n2,n3 ; scanf(“%d,%d,%d“, ,例6.7 if 語(yǔ)句的嵌套使用 main() int a, b, c, d, x; a=b=c=0; d=20; if ( a ) d=d-10; else if ( d+2 ) if (!c) x=15; else x=25; printf(“d=%d,x=%dn”,d,x) ,說(shuō)明(1)if后面的“表達(dá)式”,除常見(jiàn)的關(guān)系表達(dá)式或邏輯表達(dá)式外,也允許是其它類型的表達(dá)式,其數(shù)值可以是整型、實(shí)型、字符型。,1switch語(yǔ)句的一般形式 switch (表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句組1 case 常量表達(dá)式2: 語(yǔ)句組2 case 常量表達(dá)式: 語(yǔ)句組n default:語(yǔ)句組n+1 “表達(dá)式” 可以是int、char和枚舉型中的一種,每個(gè)case后面“常量表達(dá)式”的值,必須各不相同,多個(gè)case子句,可共用同一語(yǔ)句(組)。,6.2 switch 語(yǔ)句,2執(zhí)行過(guò)程 (1)當(dāng)switch后面“表達(dá)式”的值,與某個(gè)case后面的“常量表達(dá)式”的值相同時(shí),就執(zhí)行該case后面的語(yǔ)句組; (2)如果沒(méi)有任何一個(gè)case后面的“常量表達(dá)式”的值,與“表達(dá)式”的值匹配,則執(zhí)行default 后面的語(yǔ)句,然后,再執(zhí)行switch語(yǔ)句的下一條。 case后面的常量表達(dá)式僅起語(yǔ)句標(biāo)號(hào)作用,并不進(jìn)行條件判斷。系統(tǒng)一旦找到入口標(biāo)號(hào),就從此標(biāo)號(hào)開(kāi)始執(zhí)行,不再進(jìn)行標(biāo)號(hào)判斷;,3.switch 語(yǔ)句使用說(shuō)明 (1)在case后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。 (2)在case后,允許有多個(gè)語(yǔ)句,可以不用 括起來(lái)。 (3)各case和default子句的先后順序可以隨意變動(dòng)。 (4)default子句可以省略不用。 (5)多個(gè)case子句,可共用同一語(yǔ)句(組)。,例6.8 輸出變量a的值 main() int a=0, i=1; switch( i ) case 0: case 1: a+=2; case 2: case 3: a+=3; default: a+=7; printf(“%dn”,a); ,2個(gè)case子句,共用同一語(yǔ)句(組),執(zhí)行順序: a+=2; a+=3; a+=7;,4switch語(yǔ)句中break語(yǔ)句使用 switch (表達(dá)式) case 常量表達(dá)式1:語(yǔ)句組1;break; case 常量表達(dá)式2:語(yǔ)句組2;break; case 常量表達(dá)式:語(yǔ)句組n;break; default:語(yǔ)句組n+1; 執(zhí)行過(guò)程 當(dāng)switch后面“表達(dá)式”的值,與某個(gè)case后面的“常量表達(dá)式”的值相同時(shí),就執(zhí)行該case后面的語(yǔ)句(組);當(dāng)執(zhí)行到break語(yǔ)句時(shí),跳出switch語(yǔ)句,轉(zhuǎn)向執(zhí)行switch語(yǔ)句的下一條。,例6.9 從鍵盤(pán)上輸入一個(gè)百分制成績(jī)score,按下列原則輸出其等級(jí): score90, 等級(jí)為A; 80score90, 等級(jí)為B; 70score80, 等級(jí)為C; 60score70, 等級(jí)為D; score60, 等級(jí)為E。 main() int score, grade; printf(“Input a score(0100): ”); scanf(“%d”, /*成績(jī)整除10,轉(zhuǎn)化case標(biāo)號(hào)*/,switch (grade) case 10: case 9: printf(“grade=An”); break; case 8: printf(“grade=Bn“); break; case 7: printf(“grade=Cn“); break; case 6: printf(“grade=Dn“); break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“grade=En”); break; default: printf(“The score is out of range!n”); 程序運(yùn)行情況如下: Input a score(0100): 85 grade=B,例 6.10 計(jì)算階躍函數(shù) y 的值 #include main( ) float x,y; printf ( “input x:“ ); scanf ( “%f “, ,當(dāng) X0 y=1 X=0 y= 0 X0 y= -1,6.3 選擇結(jié)構(gòu)程序舉例,例6.11 已知某公司員工的保底薪水為500,某月所接工程的利潤(rùn)profit(整數(shù))與利潤(rùn)提成的關(guān)系如下(計(jì)量單位:元): profit1000 沒(méi)有提成; 1000profit2000 提成 10%; 2000profit5000 提成 15%; 5000profit10000 提成 20%; 10000profit 提成 25%。 算法設(shè)計(jì)要點(diǎn): 提成的變化點(diǎn)都是1000的整數(shù)倍(1000、2000、5000、),如果將利潤(rùn)profit整除1000,則當(dāng): profit1000 對(duì)應(yīng) 0、1 1000profit2000 對(duì)應(yīng) 1、2 2000profit5000 對(duì)應(yīng) 2、3、4、5 5000profit10000 對(duì)應(yīng) 5、6、7、8、9、10 10000profit 對(duì)應(yīng) 10、11、12、,為解決相鄰兩個(gè)區(qū)間的重疊問(wèn)題,最簡(jiǎn)單的方法就是:利潤(rùn)profit先減1(最小增量),然后再整除1000即可: profit1000 對(duì)應(yīng)0 1000profit2000 對(duì)應(yīng)1 2000profit5000 對(duì)應(yīng)2、3、4 5000profit10000 對(duì)應(yīng)5、6、7、8、9 10000profit 對(duì)應(yīng)10、11、12、 main() long profit; int grade; float salary=500; printf(“Input profit: “); scanf(“%ld“, ,switch(grade) case 0: break; /*profit1000 */ c
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初級(jí)月嫂考試題及答案班
- 車企入職考試題及答案
- 叉車考試題庫(kù)及答案詳解
- 超市系統(tǒng)流程
- 鞍鋼職稱考試題庫(kù)及答案
- T8聯(lián)盟考試題及答案
- 會(huì)議室AV系統(tǒng)設(shè)計(jì)規(guī)范參考
- 海淀市高三一模數(shù)學(xué)試卷
- 廣附國(guó)際班數(shù)學(xué)試卷
- 2025-2030中國(guó)猴頭菌粉行業(yè)發(fā)展分析及投資前景預(yù)測(cè)研究報(bào)告
- 風(fēng)機(jī)吊裝安全培訓(xùn)
- 公司貿(mào)易合規(guī)管理制度
- CJ/T 461-2014水處理用高密度聚乙烯懸浮載體填料
- 小學(xué)保潔承包協(xié)議書(shū)
- 重慶中考:數(shù)學(xué)高頻考點(diǎn)
- 廠房圍墻承包協(xié)議書(shū)
- 國(guó)際壓力性損傷-潰瘍預(yù)防和治療臨床指南(2025年版)解讀
- 熊貓旅居簽署協(xié)議書(shū)
- 心衰藥物治療進(jìn)展課件
- 化工儀表管理與維護(hù)
- 2024年“藍(lán)橋杯”科學(xué)素養(yǎng)競(jìng)賽考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論