




已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五章 選擇結(jié)構(gòu)程序設(shè)計 本章要點 關(guān)系表達式邏輯表達式選擇結(jié)構(gòu)程序設(shè)計 主要內(nèi)容 5 1關(guān)系運算符和關(guān)系表達式5 2邏輯運算符和邏輯表達式5 3if語句5 4switch語句5 5程序舉例 5 1關(guān)系運算符和關(guān)系表達式 一 關(guān)系運算符及其優(yōu)先次序 大于 大于或等于 等于 不等于 說明 關(guān)系運算符的優(yōu)先級低于算術(shù)運算符關(guān)系運算符的優(yōu)先級高于賦值運算符 5 1關(guān)系運算符和關(guān)系表達式 續(xù) 二 關(guān)系表達式用關(guān)系運算符將兩個表達式 可以是算術(shù)表達式或關(guān)系表達式 邏輯表達式 賦值表達式 字符表達式 接起來的式子 稱關(guān)系表達式例 a b a b b c a 3 b 5 a b bb 的值為 真 表達式的值為1 C語言中沒有專用的邏輯值 1代表真 0代表假 5 2邏輯運算符和邏輯表達式 一 邏輯運算符及其優(yōu)先次序 邏輯與 相當(dāng)于其他語言中的AND 邏輯或 相當(dāng)于其他語言中的OR 邏輯非 相當(dāng)于其他語言中的NOT例 a b若a b為真 則a b為真 a b若a b之一為真 則a b為真 a若a為真 則 a為假 優(yōu)先次序 非 與 或 邏輯運算符中的 和 低于關(guān)系運算符 高于算術(shù)運算符 5 2邏輯運算符和邏輯表達式 續(xù) 二 邏輯表達式用邏輯運算符將關(guān)系表達式或邏輯量連接起來的式子就是邏輯表達式邏輯表達式的值應(yīng)該是一個邏輯量 真 或 假 例 設(shè)a 4 b 5 a的值為0a b的值為1a b的值為1 a b的值為14 0 2的值為1 任何非零的數(shù)值被認作 真 5 2邏輯運算符和邏輯表達式 續(xù) 例 5 3 8 4 0自左向右運算 1 0邏輯值為0 8 3邏輯值為0 4 1值為3 0邏輯值為1 5 3邏輯值為1 表達式值為0 5 2邏輯運算符和邏輯表達式 續(xù) 在邏輯表達式的求解中 并不是所有的邏輯運算符都要被執(zhí)行 1 a b c只有a為真時 才需要判斷b的值 只有a和b都為真時 才需要判斷c的值 2 a b c只要a為真 就不必判斷b和c的值 只有a為假 才判斷b a和b都為假才判斷c 例 m a b n c d 當(dāng)a 1 b 2 c 3 d 4 m和n的原值為1時 由于 a b 的值為0 因此m 0 而 n c d 不被執(zhí)行 因此n的值不是0而仍保持原值1 5 2邏輯運算符和邏輯表達式 續(xù) 答 year 4 0 year 100 0 year 400 0案值為真 1 是閏年 否則為非閏年 5 3if語句 一 If語句的三種基本形式 1 if 表達式 語句例 if x y printf d x 5 3if語句 續(xù) 2 if 表達式 語句1else語句2例 if x y printf d x elseprintf d y 5 3if語句 續(xù) 3 if 表達式1 語句1elseif 表達式2 語句2elseif 表達式3 語句3 elseif 表達式m 語句melse語句n 5 3if語句 續(xù) 例 if number 500 cost 0 15 elseif number 300 cost 0 10 elseif number 100 cost 0 075 elseif number 50 cost 0 05 elsecost 0 5 3if語句 續(xù) 說明 1 3種形式的if語句中在if后面都有表達式 一般為邏輯表達式或關(guān)系表達式 2 第二 第三種形式的if語句中 在每個else前面有一個分號 整個語句結(jié)束處有一個分號 3 在if和else后面可以只含有一個內(nèi)嵌的操作語句 也可以由多個操作語句 此時用花括號將幾個語句括起來成為一個復(fù)合語句 5 3if語句 續(xù) 例5 1輸入兩個實數(shù) 按代數(shù)值由小到大的順序輸出這兩個數(shù) includevoidmain floata b t scanf f f 5 3if語句 續(xù) 例5 2輸入三個數(shù)a b c 要求按由小到大的順序輸出 Ifa b將a和b對換Ifa c將a和c對換Ifb c將b和c對換 5 3if語句 續(xù) includevoidmain floata b c t scanf f f f 5 3if語句 續(xù) 二 If語句的嵌套在if語句中又包含一個或多個if語句稱為if語句的嵌套 形式 if if 語句1else語句2elseif 語句3else語句4 內(nèi)嵌if 5 3if語句 續(xù) 匹配規(guī)則 else總是與它上面的 最近的 統(tǒng)一復(fù)合語句中的 未配對的if語句配對 例 if if 語句1elseif 語句2else語句3 例 if if 語句1 elseif 語句2else語句3 當(dāng)if和else數(shù)目不同時 可以加花括號來確定配對關(guān)系 5 3if語句 續(xù) 1 x0 算法1 算法2 輸入x輸入x若x0 則y 1若x 0 則y 0輸出y若x 0 則y 1輸出y 5 3if語句 續(xù) includevoidmain intx y scanf d 5 3if語句 續(xù) 上例中的程序段有四個 請判斷哪個是正確的 程序1 程序2 if x 0 y 1 if x 0 y 1 elseelsey 0 if x 0 y 0 elsey 1 elsey 1 程序3 程序4 y 1 y 0 if x 0 if x 0 if x 0 y 1 if x 0 y 1 elsey 0 elsey 1 正確 正確 錯誤 錯誤 5 3if語句 續(xù) 三 條件運算符格式 表達式 表達式 表達式 功能 判斷表達式1的值 如果成立就執(zhí)行表達式2 否則就執(zhí)行表達式3使用場合 若在if語句中 當(dāng)被判別的表達式的值為 真 或 假 時 都執(zhí)行一個賦值語句且向同一個變量賦值時 可以用一個條件運算符來處理 5 3if語句 續(xù) 例 if a b max a elsemax b 當(dāng)a b時將a的值賦給max 當(dāng)a b時將b的值賦給max 可以看到無論a b是否滿足 都是向同一個變量賦值 可以用下面的條件運算符來處理 max 5 3if語句 續(xù) 說明 1 條件運算符的執(zhí)行順序 先求解表達式 若為非 真 則求解表達式 此時表達式 的值就作為整個條件表達式的值 若表達式 的值為 假 則求解表達式 表達式 的值就是整個條件表達式的值 2 條件運算符優(yōu)先級高于賦值運算符 低于關(guān)系運算符和算術(shù)運算符 3 條件運算符的結(jié)合方向為 自右至左 4 表達式2 和 表達式3 不僅可以是數(shù)值表達式 還可以是賦值表達式或函數(shù)表達式 5 條件表達式中 表達式 的類型可以與表達式 和表達式 的類型不同 5 3if語句 續(xù) 例5 4輸入一個字符 判別它是否大寫字母 如果是 將它轉(zhuǎn)換成小寫字母 如果不是 不轉(zhuǎn)換 然后輸出最后得到的字符 includevoidmain charch scanf c 如果字符變量ch的值為大寫字母 則條件表達式的值為 即相應(yīng)的小寫字母 如果ch的值不是大寫字母 則條件表達式的值為 即不進行轉(zhuǎn)換 5 4switch語句 switch語句的格式 switch 表達式 case常量表達式 語句 case常量表達式 語句 case常量表達式 語句 default 語句 5 4switch語句 續(xù) 例 要求按照考試成績的等級輸出百分制分數(shù)段 用switch語句實現(xiàn) Switch grade case A printf case B printf case C printf case D printf default printf 5 4switch語句 續(xù) 說明 switch后面括弧內(nèi)的 表達式 標準允許它為任何類型 2 當(dāng)表達式的值與某一個case后面的常量表達式的值相等時 就執(zhí)行此case后面的語句 若所有的case中的常量表達式的值都沒有與表達式的值匹配的 就執(zhí)行default后面的語句 3 每一個case的常量表達式的值必須互不相同 否則就會出現(xiàn)互相矛盾的現(xiàn)象 對表達式的同一個值 有兩種或多種執(zhí)行方案 5 4switch語句 續(xù) 4 各個case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果 例如 可以先出現(xiàn) default 再出現(xiàn) case 然后是 case 5 執(zhí)行完一個case后面的語句后 流程控制轉(zhuǎn)移到下一個case繼續(xù)執(zhí)行 case常量表達式 只是起語句標號作用 并不是在該處進行條件判斷 在執(zhí)行switch語句時 根據(jù)switch后面表達式的值找到匹配的入口標號 就從此標號開始執(zhí)行下去 不再進行判斷 應(yīng)該在執(zhí)行一個case分支后 可以用一個break語句來終止switch語句的執(zhí)行 6 多個case可以共用一組執(zhí)行語句 5 5程序舉例 例5 5寫程序 判斷某一年是否閏年 用下圖來表示判斷閏年的算法 5 5程序舉例 續(xù) includevoidmain intyear leap scanf d if year 4 0 leap 0 elseif year 100 0 leap 1 elseif year 400 0 leap 0 elselep 1 運行情況 isnotaleapyear isaleapyear 5 5程序舉例 續(xù) 例5 6求ax2 bx c 0方程的解 基本的算法 不是二次方程 b2 4ac 有兩個相等實根 b2 4ac 有兩個不等實根 b2 4ac 有兩個共軛復(fù)根 5 5程序舉例 續(xù) include includevoidmain floata b c disc x1 x2 realpart imagpart scanf f f f 5 5程序舉例 續(xù) elseif disc 1e 6 x1 b sqrt disc 2 a x2 b sqrt disc 2 a printf hasdistinctrealroots 8 4fand 8 4f n x1 x2 else realpart b 2 a imagpart sqrt disc 2 a printf hascomplexroots n printf 8 4f 8 4fi n realpart imagpart printf 8 4f 8 4fi n realpart imagpart 5 5程序舉例 續(xù) 例5
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 區(qū)分知識點的關(guān)鍵2025年工程法規(guī)試題及答案
- 人力資源師四級復(fù)習(xí)試題附答案(一)
- 2025年工程法規(guī)重要政策試題及答案
- 第10課 影響世界的工業(yè)革命 教學(xué)課件-【知識精研】高一統(tǒng)編版2019必修中外歷史綱要下冊
- 2025年財務(wù)管理考試動態(tài)更新試題及答案
- 社會隔離現(xiàn)象的原因與對策試題及答案
- 企業(yè)數(shù)字工作空間的個性化定制服務(wù)
- 古典中醫(yī)養(yǎng)生知識講堂模板
- 醫(yī)療數(shù)字化進程中患者體驗的優(yōu)化
- 汽車(新能源)零部件項目可行性研究報告
- NB/T 10956-2022礦用往復(fù)式注漿泵
- GB/T 6417.1-2005金屬熔化焊接頭缺欠分類及說明
- GB/T 26251-2010氟和氟氮混合氣
- 無機化學(xué)氧族元素課件
- 儲煤場管理制度(6篇)
- 線描畫基本功教學(xué)課件
- 齒軌卡軌車課件
- 醫(yī)院工會經(jīng)費使用與管理辦法、制度規(guī)則
- 重癥胰腺炎(1)課件
- 克拉潑改進型電容三點式振蕩器
- 介入導(dǎo)管室耗材準備及管理
評論
0/150
提交評論