版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章 分支結(jié)構(gòu)程序設(shè)計(jì),本章的學(xué)習(xí)重點(diǎn) 簡(jiǎn)單的if語句 if-else語句執(zhí)行規(guī)則 嵌套的if-else語句 switch語句 break語句 嵌套的switch語句,5.1 結(jié)構(gòu)化程序設(shè)計(jì)思想,1976年,Niklaus Wirth 提出: 程序 = 算法 + 數(shù)據(jù)結(jié)構(gòu) 結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是: 1自頂向下 2逐步細(xì)化 3模塊化設(shè)計(jì) 4結(jié)構(gòu)化程序編碼 結(jié)構(gòu)化程序設(shè)計(jì)框架圖,5.2 簡(jiǎn)單的if語句,if語句有三種基本形式: if語句 if和else語句 嵌套if和else語句 設(shè)計(jì)分支結(jié)構(gòu)應(yīng)注意如下問題: 1正確選擇條件或邏輯表達(dá)式作為分支的判斷條件。 2根據(jù)需求繪制分支流程圖。 3按流
2、程圖編寫程序。,5.2.1 if語句的定義,if 語句的一般形式: if(表達(dá)式) 語句段 if語句的執(zhí)行流程:如果表達(dá)式的值為真(非0),則執(zhí)行其后的語句段,否則不執(zhí)行該語句。 If語句流程圖:,5.2.1 if語句的定義,if語句中的表達(dá)式可以是任何能轉(zhuǎn)化為數(shù)值的表達(dá)式,例如: if(100) if(a=b) if(a 應(yīng)寫成: if(0=a) a=-a; 2語句段封裝 不論語句段由一條語句還是多條語句構(gòu)成,都使用大括號(hào)封裝。,實(shí)訓(xùn)5.1求一元二次方程的實(shí)根解,鍵盤輸入一元二次方程ax2+bx+c=0的三個(gè)參數(shù)a,b和c,計(jì)算當(dāng)判別式b2-4ac=0時(shí)的根,程序使用if語句判斷是否滿足判別
3、式條件,結(jié)果精確到小數(shù)點(diǎn)后3位。判別式可計(jì)算為: sqrt_delta=sqrt(b2-4ac) 當(dāng)sqrt_delta大于或等于0時(shí)方程有實(shí)根。因此,一元二次方程的兩個(gè)根分別為: x1=(-b+sqrt_delta)/2a x2=(-b-sqrt_delta)/2a 1需求分析: 需求1:鍵盤輸入?yún)?shù)a, b, c的值 需求2:判斷判別式,確定方程是否有實(shí)根 需求3:調(diào)用開根號(hào)數(shù)學(xué)函數(shù)sqrt,計(jì)算方程的根 需求4:輸出結(jié)果,精度為小數(shù)點(diǎn)后3位,實(shí)訓(xùn)5.1求一元二次方程的實(shí)根解,2技術(shù)應(yīng)用 對(duì)于需求1,使用scanf函數(shù)輸入?yún)?shù)a, b, c的值。 對(duì)于需求2,使用if語句判斷方程是否有實(shí)根
4、,判斷方法為:if(b2-4ac=0)。 對(duì)于需求3,由于要求精確到小數(shù)點(diǎn)后3位,采用數(shù)據(jù)類型float型。 根據(jù)上述分析畫出程序流程圖: 源文件:CalculateFormulaRealRoot.c,5.3 多分支if語句,多分支if語句又稱為“if-else語句”,是由關(guān)鍵字if和else構(gòu)成的多分支結(jié)構(gòu)語句。 if-else語句的一般形式為: if(表達(dá)式) 語句段1 else 語句段2 if-else語句的執(zhí)行規(guī)則為:若表達(dá)式的值為真(非0),則執(zhí)行語句段1,否則進(jìn)入else分支,執(zhí)行語句段2。,5.3.1 if-else語句的結(jié)構(gòu),if-else語句的表達(dá)形式為: if(表達(dá)式) 語
5、句段1 else 語句段2 if-else語句的流程圖:,5.3.1 if-else語句的結(jié)構(gòu),范例5.2 CalculateAbstract.c 數(shù)學(xué)計(jì)算中,絕對(duì)值使用| |表示,本范例從鍵盤輸入?yún)?shù)a的值,然后利用if-else語句實(shí)現(xiàn)絕對(duì)值的計(jì)算,并打印信息顯示數(shù)據(jù)符號(hào)是否發(fā)生了變化。 5.3.2 if-else語句的應(yīng)用 范例5.3 JudgeOddorEven.c 鍵盤輸入int型參數(shù)a的值,判斷其是否為偶數(shù),若為偶數(shù),則打印a為偶數(shù)信息,若為奇數(shù),則打印為奇數(shù)信息。利用模除(%)對(duì)a值是否為偶數(shù)進(jìn)行判斷,使用if-else分支語句實(shí)現(xiàn)不同信息的輸出。,5.3.2 if-else語句
6、的應(yīng)用,5.3.2 if-else語句的應(yīng)用 范例5.3 JudgeOddorEven.c 鍵盤輸入int型參數(shù)a的值,判斷其是否為偶數(shù),若為偶數(shù),則打印a為偶數(shù)信息,若為奇數(shù),則打印為奇數(shù)信息。利用模除(%)對(duì)a值是否為偶數(shù)進(jìn)行判斷,使用if-else分支語句實(shí)現(xiàn)不同信息的輸出。 范例5.4 JudgeLeapYearorNotWithIfElse.c 鍵盤輸入unsigned int型年份,判斷其是否為閏年,若為閏年,則打印為閏年信息,若為平年,則打印為平年信息。閏年的判斷方法是:若年數(shù)能被400整除,那么該年是閏年,若能被4整除但不能被100整除,該年是閏年,其他年份都是平年。,5.3.
7、3 if-else-if語句的結(jié)構(gòu)及應(yīng)用,當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語句,if-else-if類型結(jié)構(gòu)語句的一般形式為: if(表達(dá)式1) 語句段1; else if(表達(dá)式2) 語句段2; else if(表達(dá)式3) 語句段3; else if(表達(dá)式m) 語句段m; else 語句段n; If-else-if 語句流程圖:,5.3.3 if-else-if語句的結(jié)構(gòu)及應(yīng)用,范例5.5 StudentScoreSet.c 學(xué)生成績(jī)分為5個(gè)等級(jí),分別為:A: 90=score=100,B: 80=score90,C: 70=score80,D: 60=score70,E:s
8、core60鍵盤輸入某學(xué)生成績(jī),判斷其屬于哪個(gè)等級(jí),并打印到屏幕上。使用多分支if-else-if語句實(shí)現(xiàn)。 范例5.6 JudgeCharacterFromKeyboard.c 使用getchar函數(shù)接收鍵盤輸入的一個(gè)字符,并判斷該字符類型,若輸入為字母,則打印字母信息,若為數(shù)字,則打印數(shù)字信息,若為控制字符,則打印控制字符信息。,5.4 嵌套if-else語句,嵌套if語句指在if分支或else分支中再次執(zhí)行if或else語句。嵌套if分支語句的流程圖如下:,5.4.1 嵌套if-else語句的定義,嵌套if-else語句一般表達(dá)形式為: if(表達(dá)式1) if(表達(dá)式2) 語句段1 el
9、se 語句段2 else if(表達(dá)式3) 語句段4 else 語句段5 如圖所示為單層嵌套if-else語句流程圖:,5.4.2 嵌套if-else語句的應(yīng)用,范例5.7 CompareTwoVariableValue.c 鍵盤輸入兩個(gè)int型變量的值a和b,判斷兩個(gè)變量的大小, 若ab,則輸出 ab, 若ab,則輸出 ab, 若a=b,則輸出 a=b。,實(shí)訓(xùn)5.2求一元二次方程的復(fù)數(shù)根解,鍵盤輸入一元二次方程ax2+bx+c=0的三個(gè)參數(shù)a,b和c,計(jì)算: b2-4ac=0時(shí),輸出實(shí)數(shù)根, b2-4ac0時(shí),輸出復(fù)數(shù)根,并檢查輸入?yún)?shù)的正確性。 使用嵌套if語句實(shí)現(xiàn)。首先使用scanf函數(shù)
10、輸入三個(gè)參數(shù)a,b和c,定義判別式變量delta=b2-4ac,定義變量sqrt_delta=sqrt(b2-4ac)。 當(dāng)delta大于0時(shí)一元二次方程的兩個(gè)根分別為: x1=(-b+sqrt_delta)/2a,x2=(-b-sqrt_delta)/2a 當(dāng)delta等于0時(shí),方程有一個(gè)實(shí)根: x = -b/2a 當(dāng)delta小于0時(shí),方程有兩個(gè)共軛復(fù)數(shù)根,分別為: x1 = -b/2a + sqrt_delta/2a i, x2 = -b/2a - sqrt_delta/2a i,實(shí)訓(xùn)5.2求一元二次方程的復(fù)數(shù)根解,1需求分析: 需求1:鍵盤輸入?yún)?shù)a, b, c的值并判斷輸入?yún)?shù) 需求
11、2:判斷判別式,確定方程有實(shí)根還是復(fù)數(shù)根 需求3:調(diào)用開根號(hào)數(shù)學(xué)函數(shù)sqrt,計(jì)算方程的根 需求4:輸出結(jié)果 2技術(shù)應(yīng)用 對(duì)于需求1,使用scanf函數(shù)輸入?yún)?shù)a, b, c的值。 對(duì)于需求2,使用if語句判斷方程有實(shí)根還是復(fù)數(shù)根,判斷方法為:if(b2-4ac=0)。 對(duì)于需求3,輸出結(jié)果時(shí)根據(jù)實(shí)根和復(fù)數(shù)根的不同,輸出不同數(shù)據(jù)格式,如復(fù)數(shù)根應(yīng)輸出:m+ni和m=ni的形式。,實(shí)訓(xùn)5.2求一元二次方程的復(fù)數(shù)根解,一元二次方程求根流程圖 源代碼:CalculateFormulaRoot.c,5.5 switch語句,switch語句的一般表達(dá)形式為: switch(表達(dá)式) case 常量表達(dá)式
12、1: 語句段1; case 常量表達(dá)式2: 語句段2; case 常量表達(dá)式n: 語句段n; default: 語句段n+1; ,5.5.1 switch語句的定義,switch語句的運(yùn)行規(guī)則為: 計(jì)算表達(dá)式的值,順次與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語句段,語句段執(zhí)行完畢后,不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語句。 switch語句流程圖:,5.5.1 switch語句的定義,范例5.8 SwitchSentenceCase.c 鍵盤輸入整型的星期數(shù),打印出英文的星期名字字符串,根據(jù)鍵盤輸入的星期數(shù),打印出該星期數(shù)的英文名使用switch
13、語句實(shí)現(xiàn),輸入函數(shù)使用scanf函數(shù),星期一記為1,星期天記為7。例如,輸入2,應(yīng)打印Tuesday。,5.5.2 break語句,為避免程序在switch語句中持續(xù)執(zhí)行case語句,可以使用break語句 ,switch語句中添加break語句的流程圖:,5.5.3 switch語句的執(zhí)行與應(yīng)用,范例5.9 SwitchSentenceWithBreak.c 鍵盤輸入學(xué)生成績(jī),分段顯示不同成績(jī)段的優(yōu)劣: 90=score=100為excellence 80=score90為all right 70=score80為midding 60=score70為pass score60為bad,實(shí)訓(xùn)5
14、.3使用switch語句實(shí)現(xiàn)四則運(yùn)算,鍵盤輸入四則運(yùn)算式,通過switch語句分支執(zhí)行+, -, *, /的四則運(yùn)算,結(jié)果精確到小數(shù)點(diǎn)后3位。 例如,輸入4.5-6,將輸出結(jié)果:4.5-6=-1.5。程序只能實(shí)現(xiàn)簡(jiǎn)單的四則運(yùn)算,不能實(shí)現(xiàn)復(fù)合四則運(yùn)算,輸入?yún)?shù)采用float型,使用switch語句做四則運(yùn)算的分支程序。 1需求分析: 需求1:鍵盤輸入四則運(yùn)算式需求2:switch語句作分支判斷四則運(yùn)算 需求3:輸出結(jié)果,精度為小數(shù)點(diǎn)后3位 2技術(shù)應(yīng)用 對(duì)于需求1,使用scanf函數(shù)輸入四則運(yùn)算表達(dá)式。 對(duì)于需求2,使用switch語句對(duì)各四則運(yùn)算作分支處理。 對(duì)于需求3,采用float型輸出精確到小數(shù)點(diǎn)后3位結(jié)果。 源代碼:CalculateFormulaProcess.c,5.6 嵌套switch語句,嵌套的switch語句是指在一個(gè)switch語句中某個(gè)case下會(huì)再嵌入一個(gè)或多個(gè)switch語句 嵌套switch語句的一般表達(dá)形式: switch(表達(dá)式1) case常量表達(dá)式1: switch(表達(dá)式2) case 常量表達(dá)式 11: 語句段11 case 常量表達(dá)式12: 語句段12 case 常量表達(dá)式1m: 語句段1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 圍手術(shù)期患者健康教育路徑的遠(yuǎn)程管理模式
- 器官芯片技術(shù)的應(yīng)用展望
- 商業(yè)健康險(xiǎn)與醫(yī)療服務(wù)的法律銜接
- 哮喘患者心理干預(yù)的個(gè)性化方案效果分析結(jié)果應(yīng)用
- 呼吸系統(tǒng)ADR的鑒別診斷與報(bào)告規(guī)范
- 同行評(píng)議在臨床技能認(rèn)證中
- 合并房顫的STEMI患者抗凝與再灌注時(shí)間窗
- 1.2 憲法的內(nèi)容和作用 課件-2025-2026學(xué)年道德與法治八年級(jí)下冊(cè) 統(tǒng)編版
- 圍堰施工安全專項(xiàng)方案
- 發(fā)型沙龍活動(dòng)策劃方案(3篇)
- 2025年六年級(jí)上冊(cè)道德與法治期末測(cè)試卷附答案(完整版)
- 雨課堂在線學(xué)堂《西方哲學(xué)-從古希臘哲學(xué)到晚近歐陸哲學(xué)》單元考核測(cè)試答案
- 學(xué)堂在線 雨課堂 學(xué)堂云 研究生學(xué)術(shù)與職業(yè)素養(yǎng)講座 章節(jié)測(cè)試答案
- 路面工程試驗(yàn)檢測(cè)-路面基層底基層試驗(yàn)檢測(cè)
- 文旅項(xiàng)目立項(xiàng)報(bào)告
- 生理學(xué)期中考試試題及答案
- 京張高鐵現(xiàn)場(chǎng)觀摩會(huì)整體策劃方案
- 安捷倫1200標(biāo)準(zhǔn)操作規(guī)程
- 合伙人合同協(xié)議書電子版
- 離婚協(xié)議書下載電子版完整離婚協(xié)議書下載三篇
- 磨床設(shè)備點(diǎn)檢表
評(píng)論
0/150
提交評(píng)論