北京科技大學(xué)《C語(yǔ)言》第4章.ppt
《北京科技大學(xué)《C語(yǔ)言》第4章.ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《北京科技大學(xué)《C語(yǔ)言》第4章.ppt(52頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第4章選擇結(jié)構(gòu)程序設(shè)計(jì) 北京科技大學(xué)計(jì)算機(jī)系 C語(yǔ)言程序設(shè)計(jì) 2020 1 27 2 提出問(wèn)題 自然語(yǔ)言 如果 那么 否則 C語(yǔ)言 分支語(yǔ)句 問(wèn)題1 如何根據(jù)收入 確定他的納稅比例及納稅額 問(wèn)題2如何根據(jù)學(xué)生的分?jǐn)?shù)判斷是否及格 2020 1 27 3 本章主要內(nèi)容 4 0關(guān)系 邏輯與條件運(yùn)算符4 1if語(yǔ)句4 1 1if語(yǔ)句的一般形式4 1 2if語(yǔ)句的嵌套4 2switch語(yǔ)句4 2 1switch語(yǔ)句的一般形式4 2 2break語(yǔ)句4 3選擇結(jié)構(gòu)程序設(shè)計(jì)舉例 4 關(guān)系運(yùn)算 關(guān)系運(yùn)算符 左結(jié)合 c等價(jià)于a b c 與 a b c不等價(jià) 5 關(guān)系運(yùn)算說(shuō)明 關(guān)系運(yùn)算的結(jié)果應(yīng)該是邏輯值 C語(yǔ)言用數(shù)值用1表示邏輯真 0表示邏輯假例如 7 5的值是1 5 7的值是0 a b 的值是0 a b 的值是1即關(guān)系表達(dá)式的值 0或1實(shí)型數(shù)可進(jìn)行大于或小于比較 但通常不進(jìn)行 或 的關(guān)系運(yùn)算 關(guān)系運(yùn)算 關(guān)系運(yùn)算符優(yōu)先于賦值 低于算術(shù)inta 3 b 2 c 1 a cf a b c兩邊操作數(shù)的數(shù)據(jù)類(lèi)型不同時(shí) 系統(tǒng)自動(dòng)將它們轉(zhuǎn)換成相同的數(shù)據(jù)類(lèi)型左結(jié)合性 注意與數(shù)學(xué)式的區(qū)別00 x 6 6 7 邏輯運(yùn)算符 邏輯運(yùn)算符 邏輯運(yùn)算符的運(yùn)算規(guī)則 8 邏輯表達(dá)式 邏輯表達(dá)式用邏輯運(yùn)算符將運(yùn)算對(duì)象連接成的式子形式 例如 0 b a b c da b 5 c 4 x y z 9 邏輯表達(dá)式 邏輯運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 是單目運(yùn)算符 右結(jié)合 高于算術(shù) 和 是雙目運(yùn)算符 左結(jié)合 高于賦值運(yùn)算符 低于關(guān)系運(yùn)算符 的優(yōu)先級(jí)高于 例如 a b c d a b c 10 邏輯運(yùn)算規(guī)則 邏輯表達(dá)式的運(yùn)算規(guī)則 從左到右依次進(jìn)行邏輯計(jì)算運(yùn)算對(duì)象為非0表示邏輯真運(yùn)算對(duì)象為0表示邏輯假邏輯運(yùn)算的結(jié)果為0或1例如設(shè) a 15 b 0 c 2a b c結(jié)果為0a b c結(jié)果為1 a c b c結(jié)果為1 11 邏輯運(yùn)算規(guī)則 續(xù) 運(yùn)算按照從左至右的順序進(jìn)行 一旦能夠確定邏輯表達(dá)式的值 就立即結(jié)束運(yùn)算 邏輯運(yùn)算的短路性質(zhì)例如設(shè) a 1 b 0 c 2a b c a b c 為0 運(yùn)算終止 表達(dá)式值為0 為非0 運(yùn)算終止 表達(dá)式值為1且a為2 b為0 c為 2 b c保持原值 邏輯表達(dá)式 例 x 1 y 1 z 0 x x y 12 k x y z 1 0 5 5 13 關(guān)系與邏輯運(yùn)算符的應(yīng)用 表示數(shù)學(xué)公式a b c判斷a b c三條線(xiàn)段能否組成一個(gè)三角形a b不同時(shí)為負(fù) 作業(yè) 14 條件表達(dá)式運(yùn)算 條件運(yùn)算符 條件表達(dá)式的一般形式表達(dá)式1 表達(dá)式2 表達(dá)式3例如 m 10 b 20 a bx 3 a 5 100 200 C語(yǔ)言中唯一的三目運(yùn)算符 要正確區(qū)分用 和 分隔的表達(dá)式涉及條件運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 條件表達(dá)式運(yùn)算 條件表達(dá)式的值 表達(dá)式1 表達(dá)式2 表達(dá)式3表達(dá)式1的值非0 則計(jì)算表達(dá)式2的值作為整個(gè)表達(dá)式的值 表達(dá)式1的值為0 則計(jì)算表達(dá)式3的值作為整個(gè)表達(dá)式的值 表達(dá)式2和3的類(lèi)型不一致時(shí) 結(jié)果為精度較高的類(lèi)型 如 m n 2 2 5 15 16 條件運(yùn)算符優(yōu)先級(jí) 條件運(yùn)算符優(yōu)先級(jí)高于賦值 逗號(hào)運(yùn)算符 低于其他運(yùn)算符例如 m 10 b 20 a b x 3 a 5 100 200 等價(jià)于 m n x a 3 等價(jià)于 a 10 b 20 a b 等價(jià)于 x 3 a 5 100 200 17 條件運(yùn)算符的結(jié)合性 條件運(yùn)算符具有右結(jié)合性當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)條件運(yùn)算符時(shí) 應(yīng)該將位于最右邊的問(wèn)號(hào)與離它最近的冒號(hào)配對(duì) 并按這一原則正確區(qū)分各條件運(yùn)算符的運(yùn)算對(duì)象 例如 w x x w x y x y與w x x w x y x y 等價(jià)與 w x x w x y x y不等價(jià) 2020 1 27 18 本章主要內(nèi)容 4 0關(guān)系 邏輯與條件運(yùn)算符4 1if語(yǔ)句4 1 1if語(yǔ)句的一般形式4 1 2if語(yǔ)句的嵌套4 2switch語(yǔ)句4 2 1switch語(yǔ)句的一般形式4 2 2break語(yǔ)句4 3選擇結(jié)構(gòu)程序設(shè)計(jì)舉例 2020 1 27 19 簡(jiǎn)單分支語(yǔ)句 語(yǔ)句一般格式if 表達(dá)式 語(yǔ)句 功能 計(jì)算表達(dá)式的值 如果是一個(gè)非0值 即邏輯真 就執(zhí)行內(nèi)嵌語(yǔ)句 否則 即邏輯假 跳過(guò)內(nèi)嵌語(yǔ)句 順序執(zhí)行后續(xù)語(yǔ)句 2020 1 27 20 簡(jiǎn)單分支語(yǔ)句的算法 例如 if x 0 m if a b c a a b b c 2020 1 27 21 雙重分支語(yǔ)句 語(yǔ)句一般格式if 表達(dá)式 語(yǔ)句1else語(yǔ)句2功能 計(jì)算表達(dá)式的值 如果它的值是一個(gè)非0值 邏輯真 就執(zhí)行內(nèi)嵌語(yǔ)句1 之后跳過(guò)內(nèi)嵌語(yǔ)句2 執(zhí)行后續(xù)語(yǔ)句 否則跳過(guò)內(nèi)嵌語(yǔ)句1 執(zhí)行內(nèi)嵌語(yǔ)句2 之后執(zhí)行后續(xù)語(yǔ)句 2020 1 27 22 雙重分支語(yǔ)句的算法 例如 if x 0 m elsem if ch a 2020 1 27 23 多重分支語(yǔ)句 語(yǔ)句一般格式if 表達(dá)式1 語(yǔ)句1elseif 表達(dá)式2 語(yǔ)句2 elseif 表達(dá)式m 語(yǔ)句melse語(yǔ)句n功能 依次計(jì)算并判斷表達(dá)式i 為非0時(shí)執(zhí)行后面的語(yǔ)句 都為0時(shí) 執(zhí)行語(yǔ)句n無(wú)論執(zhí)行完那個(gè)語(yǔ)句分支 都轉(zhuǎn)到后續(xù)語(yǔ)句 2020 1 27 24 多重分支語(yǔ)句的算法 流程圖 表達(dá)式m 2020 1 27 25 多重分支語(yǔ)句的算法 N S結(jié)構(gòu)圖 例如 if a 0 x 1 elseif a 0 x 0 elsex 1 2020 1 27 26 if語(yǔ)句的簡(jiǎn)單應(yīng)用 例4 1 輸入一個(gè)字符 如果是大寫(xiě)字母 則將其轉(zhuǎn)換為小寫(xiě)字母輸出 否則直接輸出 輸入 用getchar或scnaf函數(shù)ch是否為大寫(xiě)字母 ch A ch 65 ch 90 大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母 ch ch 32輸出 用putchar或printf函數(shù) 思路 2020 1 27 27 程序 include stdio h main charch ch getchar if ch A 程序運(yùn)行情況如下 G g 運(yùn)行jc4 1 可使用條件表達(dá)式代替 putchar ch A putchar n 2020 1 27 28 4 1 2if語(yǔ)句的嵌套 如果if的內(nèi)嵌語(yǔ)句中又使用了一個(gè)if語(yǔ)句 則構(gòu)成if語(yǔ)句的嵌套 例4 a 比較兩個(gè)整數(shù)的關(guān)系 includemain intx y printf EnterintegerXandY scanf d d 應(yīng)該正確判斷 if的內(nèi)嵌語(yǔ)句if和else的配對(duì) 運(yùn)行jc4 a if x y if x y printf X Y n elseprintf X Y n elseprintf X Y n 提倡縮格書(shū)寫(xiě)有利于閱讀程序 2020 1 27 29 雙重 或多重 分支if語(yǔ)句的嵌套形式if 表達(dá)式 if語(yǔ)句elseif語(yǔ)句 if語(yǔ)句嵌套的形式 簡(jiǎn)單if語(yǔ)句的嵌套形式if 表達(dá)式 if語(yǔ)句 可以是各種形式的if語(yǔ)句 可以是各種形式的if語(yǔ)句 如果是簡(jiǎn)單if語(yǔ)句 必須用 括起 2020 1 27 30 if c 50 printf 50150 n if c 50 printf 50 c 100 n elseprintf c 50 n 例如 if c 50 printf 50 c 100 n 與哪個(gè)if配對(duì) 2020 1 27 31 再例如 if a b 1 if a c 2 if a d flag 1 3 elseflag 2 4 elseflag 3 5 問(wèn)題 第4行和第5行的else和哪一個(gè)if相匹配 分析 匹配方案可以有很多種 2 4 1 5 3 4 2 5 1 4 匹配規(guī)則 在嵌套的if else語(yǔ)句中 else總是與上面的 離它最近的 在同一復(fù)合語(yǔ)句中還沒(méi)有配對(duì)的if配對(duì) 2020 1 27 32 等價(jià)于 if a b if a c if a d flag 1 elseflag 2 elseflag 3 if a b if a c if a d flag 1 elseflag 2 elseflag 3 flag 3的條件 flag 3的條件 當(dāng)c a b時(shí) 當(dāng)a b時(shí) 2020 1 27 33 舉例 例4 4 輸入一個(gè)數(shù) 判斷它是奇數(shù)還是偶數(shù) 如果是奇數(shù)則進(jìn)一步判斷它是否為5的倍數(shù) x 2等于0 x 5等于0 2020 1 27 34 程序 main intx scanf d 等價(jià)于if x 2 等價(jià)于if x 5 2020 1 27 35 學(xué)習(xí)if語(yǔ)句的難點(diǎn) 正確用表達(dá)式描述條件例如 當(dāng)x大于5小于10時(shí)令x自增if 5 x 10 x if else語(yǔ)句的配對(duì)正確判斷內(nèi)嵌語(yǔ)句例如 if x y x x 3 y y 2 elsex x 3 y y 2 if x 5 2020 1 27 36 熟悉常用的if表達(dá)式形式 例如有定義 inta b 0 a等于什么值時(shí) 執(zhí)行b 2 語(yǔ)句 if a 0 b 2 if a 1 b 2 if a 0 b 2 if a 1 b 2 if a 0 b 2 if a b 2 if a b 2 等價(jià)于if a 0 b 2 等價(jià)于if a 0 b 2 2020 1 27 37 2020 1 27 38 4 2switch語(yǔ)句 switch語(yǔ)句的一般形式switch 表達(dá)式 case常量表達(dá)式1 語(yǔ)句序列1case常量表達(dá)式2 語(yǔ)句序列2 case常量表達(dá)式n 語(yǔ)句序列ndefault 語(yǔ)句序列n 1 功能 計(jì)算表達(dá)式的值 與常量表達(dá)式的值比較 等于第i個(gè)值時(shí) 順序執(zhí)行語(yǔ)句序列i i 1 n 1若與所有常量表達(dá)式值都不相等 執(zhí)行語(yǔ)句序列n 1 2020 1 27 39 switch語(yǔ)句的算法描述 N S結(jié)構(gòu)圖 例如 switch a case5 printf 當(dāng)a等于5 輸出 當(dāng)a等于2 輸出 當(dāng)a是其他值 輸出 2020 1 27 40 說(shuō)明 case常量表達(dá)式i 等價(jià)于語(yǔ)句標(biāo)號(hào) 計(jì)算出的表達(dá)式值等于哪個(gè)語(yǔ)句標(biāo)號(hào) 就從哪個(gè)位置開(kāi)始順序向下執(zhí)行語(yǔ)句序列 語(yǔ)句位置影響運(yùn)行結(jié)果 例如 switch a case2 printf default printf case5 printf 當(dāng)a等于2 輸出 當(dāng)a是其他值 輸出 當(dāng)a等于5 輸出 switch與break語(yǔ)句結(jié)合才能實(shí)現(xiàn)程序的分支 break break break break語(yǔ)句 形式 break 功能 終止switch語(yǔ)句 循環(huán)語(yǔ)句的執(zhí)行 繼續(xù)執(zhí)行switch語(yǔ)句 循環(huán)語(yǔ)句后面的語(yǔ)句break語(yǔ)句可以改變case的語(yǔ)句標(biāo)號(hào)作用 終止后續(xù)case語(yǔ)句序列的執(zhí)行 switch語(yǔ)句和break語(yǔ)句結(jié)合 可以實(shí)現(xiàn)程序的選擇控制 break語(yǔ)句還可以在循環(huán)語(yǔ)句中使用 2020 1 27 41 2020 1 27 42 switch語(yǔ)句的簡(jiǎn)單應(yīng)用 例4 3 已知x 100 y 15 要求輸入一個(gè)算術(shù)運(yùn)算符 或 并對(duì)x和y進(jìn)行指定的算術(shù)運(yùn)算 思路 設(shè)x和y為float型變量并賦初值 輸入的運(yùn)算符op為char型變量 根據(jù)op的值 為 進(jìn)行x和y的相加 相減 相乘 相除運(yùn)算 選擇分支 還要考慮到輸入字符不是 或 時(shí)的情況 2020 1 27 43 程序 include stdio h main floatx 100 y 15 z charop op getchar switch op case z x y break case z x y break case z x y break case z x y break default z 0 if int z 0 printf f c f f n x op y z elseprintf cisnotanoperator n op 運(yùn)行jc4 3 實(shí)型數(shù)通常不使用z 0或z 0的比較可用if int z 代替 2020 1 27 44 注意 switch語(yǔ)句的書(shū)寫(xiě)格式 語(yǔ)句體本身必須用花括號(hào)括起 case和default后面如果有多條語(yǔ)句 則可以不必使用花括號(hào) case和常量表達(dá)式之間必須有空格 default可以寫(xiě)在語(yǔ)句體的任何位置 也可以省略不寫(xiě)允許switch嵌套使用 但同一個(gè)switch語(yǔ)句中 任意兩個(gè)case的常量表達(dá)式值不能相同 2020 1 27 45 4 3選擇結(jié)構(gòu)程序設(shè)計(jì)舉例 例4 6 求一元二次方程ax2 bx c 0的根 思路 一元二次方程的根取決于系數(shù)a b c求根公式 判別式d b2 4ac當(dāng)d 0時(shí) 方程有兩個(gè)相等的實(shí)根 x1 x2 b 2 a 當(dāng)d 0時(shí) 方程有兩個(gè)不相等的實(shí)根 x1 b sqrt d 2 a x2 b sqrt d 2 a 當(dāng)d 0時(shí) 方程有兩個(gè)虛根 x1 jp ipix2 jp ipi 實(shí)部jp b 2 a 虛部ip sqrt d 2 a 2020 1 27 46 算法 ax2 bx c 0 2020 1 27 47 程序 include math h main floata b c d x1 x2 lp ip scanf f f f 2020 1 27 48 程序 續(xù) elseif d 1e 6 不相等的實(shí)根 x1 b sqrt d 2 a x2 b sqrt d 2 a printf hastworealroots n printf x1 8 4f x2 8 4f n x1 x2 else 虛根 lp b 2 a ip sqrt d 2 a printf hastwocomplexroots n printf x1 8 4f 8 4fi n lp ip printf x2 8 4f 8 4fi n lp ip 運(yùn)行jc4 6 2020 1 27 49 舉例 續(xù) 例4 b 輸入年份 判別該年是否為閏年 思路 年份year為閏年的條件為 能夠被4整除 但不能被100整除的年份 能夠被400整除的年份 只要滿(mǎn)足任意一個(gè)就可以確定它是閏年 例如 1996年 2000年是閏年1998年 1900年不是閏年 設(shè)定標(biāo)志變量leap 只要符合其中一個(gè)條件的就是閏年 令leap 1 否則令leap 0 2020 1 27 50 算法 year 4 0 year 100 0 2020 1 27 51 程序 main intyear leap scanf d 運(yùn)行jc4 b 總結(jié) 運(yùn)算符if語(yǔ)句if語(yǔ)句的形式 簡(jiǎn)單 雙重分支 多重分支 if語(yǔ)句的嵌套switch語(yǔ)句switch語(yǔ)句的形式break語(yǔ)句 2020 1 27 52- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- C語(yǔ)言 北京科技大學(xué) 語(yǔ)言
鏈接地址:http://ioszen.com/p-5367383.html