C語言第6章選擇結(jié)構(gòu)程序設(shè)計.ppt_第1頁
C語言第6章選擇結(jié)構(gòu)程序設(shè)計.ppt_第2頁
C語言第6章選擇結(jié)構(gòu)程序設(shè)計.ppt_第3頁
C語言第6章選擇結(jié)構(gòu)程序設(shè)計.ppt_第4頁
C語言第6章選擇結(jié)構(gòu)程序設(shè)計.ppt_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

教學(xué)內(nèi)容: 6.1 if 語句 6.2 switch 語句 6.3 選擇結(jié)構(gòu)程序舉例 教學(xué)要求: 1掌握if語句的語法和使用方法。 2掌握switch語句的語法和使用方法。 3掌握分支語句的嵌套使用方法。,第6章 選擇結(jié)構(gòu)程序設(shè)計,例如,某一單位要給職工增加工資,它的規(guī)定是:工資低于1000元的職工,每人增加工資100元,超過1000元的職工暫不增加工資。 選擇條件: 工資低于1000元嗎? 數(shù)據(jù)處理: 是 增加工資100元, 否則不增加工資 如果增加工資的規(guī)定是:工資低于1000元的職工,每人增加工資200元,超過1000元的職工增加工資100元。 選擇條件:工資低于1000元嗎 數(shù)據(jù)處理: 是 增加工資200元 否則 增加工資100元,在C語言中,當(dāng)需要根據(jù)選擇條件來確定所要做(執(zhí)行)哪一項數(shù)據(jù)處理的情況,這樣的程序結(jié)構(gòu),被稱為選擇結(jié)構(gòu)。,在C語言中表示選擇條件,一般用: 關(guān)系表達(dá)式、邏輯表達(dá)式 二 、實現(xiàn)選擇結(jié)構(gòu)用什么語句: C語言中實現(xiàn)選擇結(jié)構(gòu)所用語句: 條件分支: if 語句 (if else) 開關(guān)分支: switch 語句 (switch case),在C語言中,設(shè)計選擇結(jié)構(gòu)程序要解決的問題: 一 、如何表示選擇條件:,1. 第一種形式 (1)語句格式: if(表達(dá)式) 語句 語句中的表達(dá)式必須用單括號 “(” 和 “ )”括起來。表達(dá)式后面語句也可使用復(fù)合語句。 (2)語句功能:如果表達(dá)式的值為真(T),則執(zhí)行其后的語句, 否則不執(zhí)行該語句。 在C語言中,沒有邏輯型數(shù)據(jù)類型。當(dāng)表達(dá)式的值為任何非零值,表示表達(dá)式的條件成立;當(dāng)表達(dá)式的值為零值,表示表達(dá)式的條件不成立。,6.1 if 語 句,2. 第二種形式 (1)語句格式: if(表達(dá)式) 語句1; else 語句2; 說明:else子句(可選)是 if 語句的一部分,必須與 if 配對使用,不能單獨使用 (2)語句功能:如果表達(dá)式的值為真(非零),則執(zhí)行語句1,否則執(zhí)行語句2 。,例6.1 輸入兩個整數(shù),輸出其中的大數(shù)。 void main() int a,b,max; printf(“n input two numbers: “); scanf(“%d%d“, ,例6.2 輸入兩個整數(shù),輸出其中的大數(shù)。 main() int a, b; printf(“input two numbers: “); scanf(“%d%d“, ,例6.3從鍵盤輸入兩個數(shù),按升序輸出兩個數(shù) #include main() float a, b, t; scanf(“%f,%f“, ,3. 第三種形式,(1) 語句格式 if (表達(dá)式1) 語句組1 else if (表達(dá)式2) 語句組2 else if (表達(dá)式3) 語句組3 else if (表達(dá)式4) 語句組4 else 語句組5 若 語句組5 又是一條 if 語句,整個語句最少是一個6個分支的多分支 if 語句。,(2)多分支 if 語句的執(zhí)行過程 當(dāng)“表達(dá)式1”的值不等于0時,則執(zhí)行語句組1 ,然后轉(zhuǎn)向下一條語句; 否則,當(dāng)“表達(dá)式2”的值不等于0時,執(zhí)行語句組2,轉(zhuǎn)向下一條語句; 再否則,當(dāng)“表達(dá)式3”的值不等于0時,執(zhí)行語句組3,轉(zhuǎn)向下一條語句; 再否則,當(dāng)“表達(dá)式4”的值不等于0時,執(zhí)行語句組4,轉(zhuǎn)向下一條語句; 再否則,執(zhí)行語句組5,轉(zhuǎn)向下一條語句;,4. if語句說明 (1) 在三種形式的if語句中,條件表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式, 但也可以是其它表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個變量。 (2) 在if語句的三種形式中,所有的語句應(yīng)為單個語句,如果要想在滿足條件時執(zhí)行一組(多個)語句,則必須把這一組語句用 括起來組成一個復(fù)合語句。但要注意的是在右括號之后不能再加分號。,例 6.4 輸入 + * - / , 輸出對應(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 語句與條件運算符 如果在條件語句中,只執(zhí)行單個的賦值語句時, ??墒褂脳l件表達(dá)式來實現(xiàn)。不但使程序簡潔,也提高了運行效率。 例 6.5 輸入任意三個整數(shù),求三個數(shù)中的最大值。 main() int n1,n2,n3,max; scanf(“%d,%d,%d“, ,max= ( n1n2 ) ? (n1n3 ) ? n1 : n3):(n2n3 ) ? n2 : n3);,6if語句的嵌套與嵌套匹配原則 (1)if 語句嵌套,是指,在“語句1”或(和)“語句2”中,又包含有 if 語句的情況。 if 語句嵌套時,else子句與在它上面、距它最近、且尚未匹配的 if 配對。例如: if (ab) s=s+t; else if (a= =b) t=5; /* 語句2是 if 語句*/ else t=2*s;,例 6.6 輸入任意三個整數(shù),求三個數(shù)中的最大值。 main() int n1,n2,n3 ; scanf(“%d,%d,%d“, ,例6.7 if 語句的嵌套使用 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) ,說明(1)if后面的“表達(dá)式”,除常見的關(guān)系表達(dá)式或邏輯表達(dá)式外,也允許是其它類型的表達(dá)式,其數(shù)值可以是整型、實型、字符型。,1switch語句的一般形式 switch (表達(dá)式) case 常量表達(dá)式1: 語句組1 case 常量表達(dá)式2: 語句組2 case 常量表達(dá)式: 語句組n default:語句組n+1 “表達(dá)式” 可以是int、char和枚舉型中的一種,每個case后面“常量表達(dá)式”的值,必須各不相同,多個case子句,可共用同一語句(組)。,6.2 switch 語句,2執(zhí)行過程 (1)當(dāng)switch后面“表達(dá)式”的值,與某個case后面的“常量表達(dá)式”的值相同時,就執(zhí)行該case后面的語句組; (2)如果沒有任何一個case后面的“常量表達(dá)式”的值,與“表達(dá)式”的值匹配,則執(zhí)行default 后面的語句,然后,再執(zhí)行switch語句的下一條。 case后面的常量表達(dá)式僅起語句標(biāo)號作用,并不進(jìn)行條件判斷。系統(tǒng)一旦找到入口標(biāo)號,就從此標(biāo)號開始執(zhí)行,不再進(jìn)行標(biāo)號判斷;,3.switch 語句使用說明 (1)在case后的各常量表達(dá)式的值不能相同,否則會出現(xiàn)錯誤。 (2)在case后,允許有多個語句,可以不用 括起來。 (3)各case和default子句的先后順序可以隨意變動。 (4)default子句可以省略不用。 (5)多個case子句,可共用同一語句(組)。,例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個case子句,共用同一語句(組),執(zhí)行順序: a+=2; a+=3; a+=7;,4switch語句中break語句使用 switch (表達(dá)式) case 常量表達(dá)式1:語句組1;break; case 常量表達(dá)式2:語句組2;break; case 常量表達(dá)式:語句組n;break; default:語句組n+1; 執(zhí)行過程 當(dāng)switch后面“表達(dá)式”的值,與某個case后面的“常量表達(dá)式”的值相同時,就執(zhí)行該case后面的語句(組);當(dāng)執(zhí)行到break語句時,跳出switch語句,轉(zhuǎn)向執(zhí)行switch語句的下一條。,例6.9 從鍵盤上輸入一個百分制成績score,按下列原則輸出其等級: score90, 等級為A; 80score90, 等級為B; 70score80, 等級為C; 60score70, 等級為D; score60, 等級為E。 main() int score, grade; printf(“Input a score(0100): ”); scanf(“%d”, /*成績整除10,轉(zhuǎn)化case標(biā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”); 程序運行情況如下: Input a score(0100): 85 grade=B,例 6.10 計算階躍函數(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,某月所接工程的利潤profit(整數(shù))與利潤提成的關(guān)系如下(計量單位:元): profit1000 沒有提成; 1000profit2000 提成 10%; 2000profit5000 提成 15%; 5000profit10000 提成 20%; 10000profit 提成 25%。 算法設(shè)計要點: 提成的變化點都是1000的整數(shù)倍(1000、2000、5000、),如果將利潤profit整除1000,則當(dāng): profit1000 對應(yīng) 0、1 1000profit2000 對應(yīng) 1、2 2000profit5000 對應(yīng) 2、3、4、5 5000profit10000 對應(yīng) 5、6、7、8、9、10 10000profit 對應(yīng) 10、11、12、,為解決相鄰兩個區(qū)間的重疊問題,最簡單的方法就是:利潤profit先減1(最小增量),然后再整除1000即可: profit1000 對應(yīng)0 1000profit2000 對應(yīng)1 2000profit5000 對應(yīng)2、3、4 5000profit10000 對應(yīng)5、6、7、8、9 10000profit 對應(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論