邏輯運(yùn)算和判斷選取結(jié)構(gòu).ppt
《邏輯運(yùn)算和判斷選取結(jié)構(gòu).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《邏輯運(yùn)算和判斷選取結(jié)構(gòu).ppt(41頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第4章邏輯運(yùn)算和判斷選取結(jié)構(gòu) C程序設(shè)計(jì) 謝軍 2 本章教學(xué)內(nèi)容 要求 內(nèi)容1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 2 邏輯運(yùn)算符和邏輯表達(dá)式 3 if語(yǔ)句4 switch語(yǔ)句5 程序舉例要求1 掌握關(guān)系表達(dá)式與邏輯表達(dá)式書(shū)寫(xiě)與運(yùn)用 2 掌握if語(yǔ)句與switch語(yǔ)句的使用 3 能夠設(shè)計(jì)包含順序結(jié)構(gòu)與選擇結(jié)構(gòu)的C程序 3 重點(diǎn)與難點(diǎn) 重點(diǎn)1 掌握程序的選擇結(jié)構(gòu) 2 順序結(jié)構(gòu)與選擇結(jié)構(gòu)的C程序的設(shè)計(jì) 難點(diǎn)運(yùn)算符的優(yōu)先級(jí) 程序設(shè)計(jì) 4 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 關(guān)系運(yùn)算實(shí)際是對(duì)兩個(gè)操作數(shù)進(jìn)行大小等同的比較運(yùn)算 一 關(guān)系運(yùn)算符 六種 及其優(yōu)先次序 大于 大于或等于 高 等于 不等于 低前4種關(guān)系運(yùn)算的優(yōu)先級(jí)相同 后2種也相同 前4種高于后2種優(yōu)先次序 單目 算術(shù) 關(guān)系 邏輯 賦值結(jié)合性 左結(jié)合 雙目運(yùn)算符 例 a a b等價(jià)于c a b a b c等價(jià)于a b c a b c等價(jià)于 a b ca b c等價(jià)于a b c 5 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 一 關(guān)系表達(dá)式什么是關(guān)系表達(dá)式 用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式 可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式 邏輯表達(dá)式 賦值表達(dá)式 字符表達(dá)式 連接起來(lái)的式子 為關(guān)系表達(dá)式 例 a b b c a 3值為 真 a b 值為 假 a 3 b 2 c 1 d a b f a b c 執(zhí)行結(jié)果d 1 f 0 因a b c等價(jià)于 a b c所以 判別式 a b c 在C語(yǔ)言中不能簡(jiǎn)單地用a b c表示 需要借助邏輯運(yùn)算來(lái)實(shí)現(xiàn) 即 a b b c a b即3 2為真1 a b為1 c為1 則1 1為假 6 邏輯運(yùn)算符和邏輯表達(dá)式 一 邏輯運(yùn)算符及優(yōu)先級(jí) 邏輯非 含義NOT 高高 邏輯與 含義AND 算術(shù)運(yùn)算符 邏輯或 含義OR 低關(guān)系運(yùn)算符例 a b x y a b x y a a b賦值運(yùn)算符低真值表 7 邏輯運(yùn)算符和邏輯表達(dá)式 二 邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)就是邏輯表達(dá)式 邏輯表達(dá)式的值是一個(gè)邏輯量 即 真 和 假 例 inta 1 b 5 則 a的值為0 a b的值為1 a b的值為1 應(yīng)注意 1 若在一個(gè)表達(dá)式中的不同位置上出現(xiàn)數(shù)值 應(yīng)區(qū)分哪些是作為數(shù)值運(yùn)算或關(guān)系運(yùn)算 哪些是作為邏輯運(yùn)算的對(duì)象2 邏輯運(yùn)算符兩側(cè)的運(yùn)算對(duì)象可為任意類(lèi)型的數(shù)據(jù) 例 c d 值為 3 邏輯表達(dá)式求解時(shí) 并不是所有的邏輯運(yùn)算符都被執(zhí)行 只有在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式解時(shí) 才執(zhí)行該運(yùn)符 例 1 a b c2 a b c4 和 的結(jié)合性是從左往右 而 是單目運(yùn)算符 結(jié)合性是從右往左5 邏輯表達(dá)式一般用來(lái)表示并判定一種復(fù)雜條件 8 例題 例1 5 3 2 8 a key A key Z 9 if語(yǔ)句 一 if語(yǔ)句的兩種形式1 if 表達(dá)式 語(yǔ)句 例4 1 輸入三個(gè)數(shù) 找出并打印其最小數(shù) 分析 設(shè)三個(gè)數(shù)為A B C 由鍵盤(pán)讀入 我們用一個(gè)變量MIN來(lái)標(biāo)識(shí)最小數(shù) A B C與MIN皆定義為int型變量 每次比較兩個(gè)數(shù) 首先將A賦給MIN 然后比較MIN和B 將小的一個(gè)賦給MIN 再把第三個(gè)數(shù)C與MIN比較 再將小的一個(gè)賦給MIN 則最后MIN即為A B C中最小數(shù) 其流程圖見(jiàn)下一頁(yè) 10 if語(yǔ)句 流程圖 N S結(jié)構(gòu)化流程圖 11 if語(yǔ)句 main 輸入三個(gè)數(shù) 找出并打印其最小數(shù) inta b c min printf inputa b c scanf d d d 執(zhí)行情況如下 RUN inputa b c 352 Theresultis2 12 if語(yǔ)句 一 if語(yǔ)句的兩種形式2 if 表達(dá)式 語(yǔ)句1else語(yǔ)句2 例4 2 輸入兩個(gè)整數(shù) 輸出其中的大數(shù) 分析 判別a b的大小 若a大 則輸出a 否則輸出b 算法 1 輸入a b2 若a b 則輸出a否則輸出b 13 if語(yǔ)句 源程序如下 main inta b printf inputtwonumbers scanf d d N S結(jié)構(gòu)化流程圖 14 if語(yǔ)句 二 復(fù)合語(yǔ)句if語(yǔ)句中 有時(shí)需要執(zhí)行的語(yǔ)句不止一條 這就要用到復(fù)合語(yǔ)句 復(fù)合語(yǔ)句 就是用一對(duì)花括號(hào)括起來(lái)的一條或多條語(yǔ)句 形式如下 語(yǔ)句1 語(yǔ)句2 語(yǔ)句n 無(wú)論包括多少條語(yǔ)句 復(fù)合語(yǔ)句從邏輯上講 被看成是一條語(yǔ)句 復(fù)合語(yǔ)句在分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu)中 使用十分廣泛 15 if語(yǔ)句 二 復(fù)合語(yǔ)句 例4 3 讀入兩個(gè)數(shù)x y 將大數(shù)存入x 小數(shù)存入y 分析 x y從鍵盤(pán)讀入 若x y 只需順序打出 否則 應(yīng)將x y中的數(shù)進(jìn)行交換 然后輸出 兩數(shù)交換必須使用一個(gè)中間變量t 定義三個(gè)浮點(diǎn)數(shù)x y t 算法 1 讀入x y 2 大數(shù)存入x 小數(shù)存入y 3 輸出x y 第2 步求精 若x y 則交換x與y 再求精 x與y交換 t x x y y t 16 if語(yǔ)句 N S結(jié)構(gòu)化流程圖 流程圖 17 if語(yǔ)句 includemain floatx y t printf inputx y scanf f f 執(zhí)行結(jié)果 inputx y 43 256 7 result 56 70043 200 18 if語(yǔ)句 二 復(fù)合語(yǔ)句 例4 4 貨物征稅問(wèn)題 價(jià)格在 萬(wàn)元以上的征5 5000元以上1萬(wàn)元以下的征3 1000元以上5000以下的征2 1000元以下的免稅 讀入貨物價(jià)格 計(jì)算并輸出稅金 分析 讀入price 計(jì)算tax 這是一個(gè)較復(fù)雜的分支結(jié)構(gòu)程序設(shè)計(jì) 應(yīng)注意避免重復(fù)征稅 假定貨物的價(jià)格在1萬(wàn)元以上 征稅應(yīng)分段累計(jì) 各段采用不同稅率進(jìn)行征收 算法 若price 10000則tax 0 05 price 10000 price 10000 若price 5000則tax 0 03 price 5000 tax price 5000 若price 1000則tax 0 02 price 1000 tax price 1000 19 if語(yǔ)句 二 復(fù)合語(yǔ)句 includemain floatprice tax 0 printf inputprice scanf f 運(yùn)行程序 RUN inputprice 15000 thetax 480 000 20 if語(yǔ)句 三 if elseif語(yǔ)句實(shí)際應(yīng)用中常常面對(duì)更多的選擇 這時(shí) 將if else擴(kuò)展一下 就得到if elseif結(jié)構(gòu) 其一般形式為 if語(yǔ)句 elseif語(yǔ)句2elseif語(yǔ)句3else語(yǔ)句4 21 if語(yǔ)句 三 if elseif語(yǔ)句 例4 5 判別鍵盤(pán)輸入字符的類(lèi)別 分析 可以根據(jù)輸入字符的ASCII碼來(lái)判別類(lèi)型 由ASCII碼表可知ASCII值小于32的為控制字符 在 0 和 9 之間的為數(shù)字 在 A 和 Z 之間為大寫(xiě)字母 在 a 和 z 之間為小寫(xiě)字母 其余則為其它字符 算法如下 1 輸入字符C 2 若c 32 則c為控制字符否則 若c在 0 和 9 之間 則c為數(shù)字字符否則 若c在 A 和 Z 之間 則c為大寫(xiě)英文字母字符否則 若c在 a 和 z 之間 則c為小寫(xiě)英文字母字符否則c為其它字符 22 if語(yǔ)句 三 if elseif語(yǔ)句 includemain 判別鍵盤(pán)輸入字符的類(lèi)別 charc printf inputacharacter c getchar if c 0 23 if語(yǔ)句 四 if語(yǔ)句的嵌套在一個(gè)if語(yǔ)句中可以又出現(xiàn)另一個(gè)if語(yǔ)句 這稱(chēng)為if語(yǔ)句的嵌套或多重if語(yǔ)句 ifif else語(yǔ)句2 例4 6 計(jì)算函數(shù)1x 0y 0 x 0 1x 0流程圖見(jiàn)右圖 源程序見(jiàn)下一頁(yè) 24 if語(yǔ)句 四 if語(yǔ)句的嵌套源程序如下 main floatx y printf inputx scanf f N S結(jié)構(gòu)化流程圖 25 if語(yǔ)句 四 if語(yǔ)句的嵌套注意 對(duì)多重if 最容易犯的錯(cuò)誤是if與else配對(duì)錯(cuò)誤 例如 寫(xiě)成如下形式 y 0 if x 0 if x 0 y 1 elsey 1 從縮排上可以看出 作者希望else是與ifx 0配對(duì) 但是C語(yǔ)言規(guī)定else總是與離它最近的上一個(gè)if配對(duì) 結(jié)果 上述算法的流程圖變成右圖 完全違背了設(shè)計(jì)者的初衷 26 if語(yǔ)句 四 if語(yǔ)句的嵌套改進(jìn)的辦法是使用復(fù)合語(yǔ)句 將上述程序段改寫(xiě)如下 y 0 if x 0 if x 0 y 1 elsey 1 27 if語(yǔ)句 五 在使用if語(yǔ)句中注意事項(xiàng) 1 注意關(guān)系運(yùn)算符 與賦值運(yùn)算符 的區(qū)別 例如 if a b 語(yǔ)句 若a與b相等 則執(zhí)行后面的語(yǔ)句 if a b 語(yǔ)句 將b的值賦給a 若b非0 則執(zhí)行后面的語(yǔ)句 2 關(guān)鍵字if后面的表達(dá)式可以是變量 例如 if b 語(yǔ)句 若b非0 則執(zhí)行后面的語(yǔ)句 3 注意復(fù)合語(yǔ)句的使用 在if語(yǔ)句的三種形式中 所有的語(yǔ)句應(yīng)為單個(gè)語(yǔ)句 如果要想在滿(mǎn)足條件時(shí)執(zhí)行一組 多個(gè) 語(yǔ)句 則必須把這一組語(yǔ)句用 括起來(lái)組成一個(gè)復(fù)合語(yǔ)句 例如 if x y t x x y y t 28 if語(yǔ)句 五 在使用if語(yǔ)句中注意事項(xiàng) 4 注意if和else的配對(duì)問(wèn)題 else總是與它前面最近的if配對(duì) main inta b printf pleaseinputA B scanf d d 29 if語(yǔ)句 六 條件運(yùn)算符和條件表達(dá)式1 條件運(yùn)算符 是C語(yǔ)言唯一的一個(gè)三目運(yùn)算符 2 條件表達(dá)式 e1 e2 e3 其中 e1 條件或稱(chēng)邏輯表達(dá)式 當(dāng)e1為真取e2的值 否則取e3的值作為表達(dá)式的值 30 3 說(shuō)明 1 條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符和逗號(hào) 按序求值 運(yùn)算符max a b a b 與max a b a b 等價(jià)y a b a b 1 與y a b a b 1 等價(jià)2 條件運(yùn)算符的結(jié)合性 自右向左例如 a 1 b 2 c 3 d 4 則條件表達(dá)式a b a c d c d的值為4即等價(jià)于 a b a c d c d if語(yǔ)句 31 if語(yǔ)句 4 說(shuō)明 3 條件表達(dá)式不能取代一般的if語(yǔ)句 只能取代if語(yǔ)句中特殊的一種 例 if a b printf d a elseprintf d b 可用printf d a b a b 取代 條件表達(dá)式中 表達(dá)式 的類(lèi)型可與表達(dá)式 及 不同 表達(dá)式 和表達(dá)式 的類(lèi)型也可不同 而條件表達(dá)式值的類(lèi)型取表達(dá)式 和 中的較高者 例 intx y x a b 值為字符型而x y 1 1 5值為實(shí)型 32 switch語(yǔ)句 Switch語(yǔ)句是多分支選擇語(yǔ)句 一般形式為 switch 表達(dá)式 case常量表達(dá)式1 語(yǔ)句1或空 case常量表達(dá)式2 語(yǔ)句2或空 case常量表達(dá)式n 語(yǔ)句n或空 default 語(yǔ)句n 1或空 33 switch語(yǔ)句 控制流程圖 34 switch語(yǔ)句 說(shuō)明 1 執(zhí)行switch語(yǔ)句時(shí) 將表達(dá)式的值逐個(gè)與case后的常量進(jìn)行比較 若與其中一個(gè)相等 則執(zhí)行該常量下的語(yǔ)句 若不與任何一個(gè)常量相等 則執(zhí)行default后面的語(yǔ)句 2 switch中表達(dá)式與case后的常量可為任何類(lèi)型 3 每一個(gè)case后常量表達(dá)式的值必須互不相同 否則出現(xiàn)矛盾 4 每個(gè)case或default后的語(yǔ)句可以是復(fù)合語(yǔ)句 但不需要使用 和 括起來(lái) 執(zhí)行完一個(gè)case后面語(yǔ)句后 流程控制轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行 因此 若想在不同情況下執(zhí)行不同的語(yǔ)句 必須使用break語(yǔ)句 break語(yǔ)句的功能 將程序流程控制跳出整個(gè)switch語(yǔ)句 執(zhí)行switch語(yǔ)句的下一條語(yǔ)句 35 switch語(yǔ)句 switch grade case A printf 85 100 n break case B printf 70 84 n break case C printf 60 69 n break case D printf 60 n break default printf Error n 6 多個(gè)case可共用一組執(zhí)行語(yǔ)句 例 switch i case1 case2 case3 語(yǔ)句1 break case4 case5 語(yǔ)句2 break default 語(yǔ)句3 例4 8 輸入年份和月份 打印該年 該月有幾天 36 main 輸入年份和月份 打印該年 該月有幾天 intyear month day printf pleaseinputtheyearnumberandmonthnumber scanf d d switch語(yǔ)句 37 例4 9 解一元二次方程ax2 bx c 0 a b c由鍵盤(pán)輸入 分析 對(duì)系數(shù)a b c考慮以下情形1 若a 0 b0 則x c b b 0 則 c 0 則x無(wú)定根 c0 則x無(wú)解 2 若a0 b2 4ac 0 有兩個(gè)不等的實(shí)根 b2 4ac 0 有兩個(gè)相等的實(shí)根 b2 4ac 0 有兩個(gè)共軛復(fù)根 程序舉例 38 例4 9 解一元二次方程ax2 bx c 0 a b c由鍵盤(pán)輸入 include includemain floata b c delt x1 x2 doublet printf pleaseinputa b c scanf f f f if delt 0 0 程序舉例 if delt 0 0 t sqrt delt x1 0 5 b t a x2 0 5 b t a printf Therearetwodifferentroots fand f n x1 x2 else delt 0 printf Therearetwoequalroots f n 0 5 b a else delt0 endofmain 39 運(yùn)行結(jié)果如下 RUN pleaseinputa b c 123 Therearetwovirtualroots 1 000000 i1 000000 1 000000 i1 000000RUN pleaseinputa b c 253 Therearetwodifferentroots 1 500000and 1 000000RUN pleaseinputa b c 003 Noroot 程序舉例 40 小結(jié) 1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 2 邏輯運(yùn)算符和邏輯表達(dá)式 3 if語(yǔ)句 4 switch語(yǔ)句 重點(diǎn) 掌握選擇結(jié)構(gòu)及其程序設(shè)計(jì) 41 作業(yè) 書(shū)面作業(yè)P111 5 1 5 2 5 3和5 5課外上機(jī)作業(yè)本章的所有例題- 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您。
下載文檔到電腦,查找使用更方便
9.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) 鍵 詞:
- 邏輯運(yùn)算 判斷 選取 結(jié)構(gòu)
鏈接地址:http://www.820124.com/p-5411605.html