C程序設計第6章選擇結構程序設計.ppt
《C程序設計第6章選擇結構程序設計.ppt》由會員分享,可在線閱讀,更多相關《C程序設計第6章選擇結構程序設計.ppt(33頁珍藏版)》請在裝配圖網上搜索。
第6章選擇結構程序設計 選擇結構的N S流程圖如圖6 1所示 圖6 1選擇結構的N S流程圖 P為選擇的條件 對于執(zhí)行A還是B要根據(jù)條件P的判斷結果來決定 如果條件P的結果為真則執(zhí)行A 如果條件P的結果為假則執(zhí)行B 這里條件P的結果就成為執(zhí)行A還是B的關鍵所在 P是一個判斷的條件 其結果為真或者假 將其稱為 邏輯量 C語言中沒有提供邏輯型變量 可以使用整型數(shù)據(jù)去描述1表示真 0表示假 在C語言中任意確定的值都可作為邏輯量處理 當作為邏輯量處理時 如果該值為非0 則表示真 1 如果該值為0 則表示假 0 下面講述條件P的邏輯量表示方法 6 1邏輯量的表示方法6 2if語句6 3switch語句6 4選擇結構程序設計舉例 6 1邏輯量的表示方法C語言中邏輯量是用整型數(shù)據(jù)來表示的 用 來表示真或成立 用 來表示假或不成立 邏輯量的表示是非常靈活的 具體表示方法有以下幾種方式 6 1 1關系表達式 1 關系運算符關系運算是一種比較運算符兩側運算對象大小的運算 完成兩個運算對象比較 運算結果為成立與不成立 用1和0表示 關系運算符有以下6種 關系運算符是雙目運算符 其中前4種的優(yōu)先級相同但要高于后2種 后2種優(yōu)先級相同 所有6種運算符的優(yōu)先級都高于賦值運算符 但都低于算術運算符 此6種關系型運算符均為左結合性 2 關系表達式用關系運算符將運算對象連接起來的合乎C語言規(guī)則的表達式稱為關系表達式 例如 a b 3 7 10 a a a b a 都是合法的C語言關系表達式 關系表達式的求解遵循表達式求解規(guī)則 關系運算的結果只有兩種可能 要么關系成立為真 1 要么關系不成立為假 0 例如有整型變量a b 且a 3 b 5 求解表達式 a b a 算術運算符 的優(yōu)先級高于關系運算符 因此先計算a b的值為8 之后運算8 a 而 a 參加運算時需轉換為整型數(shù)97運算 實際運算的是8 97 判斷后其結果為不成立 表達式的運算結果為0 若有關系表達式0 x 10 則其運算結果為邏輯量1 表達式中兩個 運算的優(yōu)先級相同 于是首先運算0 x x的值無論是多少 運算結果只能是1或者0 然后要么運算1 10 要么運算0 10 其運算結果必然為1 6 1 2邏輯運算和邏輯表達式1 邏輯運算符C語言中邏輯運算符一共有3個 和 其中 運算的優(yōu)先級最高 僅次于小括號 為左結合性 的優(yōu)先級高于 它們的優(yōu)先級都低于關系運算符 高于賦值運算符 2 邏輯表達式用邏輯運算符將邏輯量連接而形成的合乎C語言規(guī)則的表達式稱為邏輯表達式 參與邏輯運算的運算對象是邏輯量 在C語言中任意表達式都可以作為邏輯量來處理 具體處理規(guī)則是表達式值非0則為1 否則為0 邏輯運算的結果和關系運算一樣 也是邏輯量 例如有整型變量a 3 b 4 c 5 求解表達式 x a y b 0 x a為賦值表達式 其值為變量的值 原式 3 4 0 3為邏輯運算要把3轉化為邏輯量 0 4 00 4中要把4轉化為邏輯量1 0 1 0 0 0 0 6 1 3實際問題中邏輯量的描述 1 圖6 4所示x軸上陰影區(qū)間的數(shù)據(jù)描述 圖6 4邏輯量的表示示意圖 從該圖可知 x的值應該在 1到2之間 其值既要滿足x 1又要滿足x 2 即x 1和x 2同時成立 兩個過程同時成立其結果才成立 此運算為邏輯與 可得表達式x 1 x 2 注意 1 x 2是一個關系表達式 不能表示該區(qū)間 3 閏年問題假定閏年為year 判定是否閏年的標準為 如果該年能被4整除且不能被100整除 或者該年能被400整除 則都為閏年 能被4整除且不能被100整除 可表示為year 4 0 year 100 0 能被400整除可表示為year 400 0 兩者只要有一者成立即為閏年 是邏輯或關系 閏年問題的表達式為year 4 0 year 100 0 year 400 0 也可表示為 year 4 year 100 year 400 6 2 1if語句的格式if語句的格式為 if 邏輯量 語句1 else語句2 if和else是構成if語句的關鍵字 語句中的邏輯量是選擇結構的條件 表示else分支可有可無 if語句的N S流程圖如圖6 5所示 語句1和語句2都只能是單條語句 如果在為真或為假的分支中需執(zhí)行多個操作 應該使用復合語句將多個操作構成一條語句 語句1是選擇結構必需的語句 else分支可有可無 6 2if語句 if語句是實現(xiàn)選擇結構算法的具體語句 圖6 5if語句的N S流程圖 使用if語句實現(xiàn)選擇結構時 語句中的邏輯量對應于選擇條件P 語句1對應于A操作 語句2對應于B操作 if語句執(zhí)行時 首先判斷邏輯量的值 如果邏輯量為1 執(zhí)行語句1 如果邏輯量為0 執(zhí)行else分支對應的語句2 例6 2求出兩整數(shù)中的最大值 根據(jù)流程圖得到程序 main intm n scanf d d 圖6 7例6 2的流程圖 使用if語句要注意以下幾點 1 if語句是一條語句 2 邏輯量是if語句選擇判斷的條件 C語言中任意確定的值都可以作為邏輯量處理 3 邏輯量為1和為0的分支都只能是單條語句 如果要執(zhí)行多個操作的話 應該將多個操作復合為單條語句才能出現(xiàn)在if的分支結構中 4 分支中出現(xiàn)的語句1是復合語句的時候 后不應該有 5 語句中語句1是條件語句中必不可少的部分 6 正確理解if語句和N S選擇結構流程圖的對應關系 嵌套主要用于處理多條件的題目 設計嵌套選擇結構時 應清晰描述各條件之間的約束關系 嵌套的if語句可以簡單描述如下 嵌入的if語句是在當外圍的if語句的條件p1的邏輯量值為1時才可以執(zhí)行 即其作為外圍if語句的條件成立時的執(zhí)行語句 嵌入在外圍if內 當然語句1 語句2 語句3也可以是if語句 具體的嵌套形式和具體題目中的多條件是密切相關的 if語句的嵌套形式應建立在對具體問題的分析上 6 2 2if語句的嵌套及多條件結構的實現(xiàn) 例6 4求函數(shù)中x為任意值時y 的值 由于if選擇結構僅有兩個分支 而此分段函數(shù)x的定義域為三分支 因此當確定x的關系表達式時 其中必然有一個分支包含另外兩部分定義域 需在此基礎上作進一步的條件判斷 根據(jù)流程圖得到如下程序 main main floatx y floatx y scanf f 圖6 9例6 4的流程圖 圖6 10例6 4的流程圖2 6 2 3條件表達式條件運算符由兩個符號 和 復合而成 此運算符為C語言中惟一的一個三目運算符 其優(yōu)先級只比賦值運算符和逗號運算符高 結合性為從右到左 條件表達式的一般格式為 表達式1 表達式2 表達式3其中表達式1是作為邏輯量處理的 條件表達式中由于有條件限制 所以應先進行條件表達式的運算 根據(jù)條件表達式1表示的邏輯量值選取表達式2或表達式3的結果作為整個表達式的值 其執(zhí)行過程如下 當表達式1的邏輯量值為1時 選取表達式2的結果作為整個表達式的值 當表達式1的邏輯量值為0時 選取表達式3的結果作為整個表達式的值 假定a 5 b 3 則表達式max a b a b的求解過程如下 此表達式右邊為一條件表達式 由于條件運算符的優(yōu)先級高于賦值運算符 應先計算條件表達式的值 再通過賦值運算符把得到的值賦給max 在條件表達式中 首先計算表達式a b的邏輯量值 根據(jù)題意 a b表達式的邏輯量值為1 則a為條件表達式的結果 為5 那么條件表達式的值為5 可得max的值為5 6 3switch語句 如果題目中的多條件是有規(guī)律的 則可以采用switch語句來實現(xiàn) switch語句稱為分支語句 又稱為開關語句 switch的具體形式如下 switch 表達式 case整型常量表達式1 語句組1 break case整型常量表達式2 語句組2 break case整型常量表達式n 語句組n break default 語句組n 1 switch case default和break都是構成多分支語句的關鍵字 表示break可有可無 其中表達式是任意類型的表達式 但運算結果會自動轉換為整型 整型常量表達式只能由整型常量構成 break語句的作用是結束switch語句 執(zhí)行switch的后續(xù)語句 語句組可以是單條語句 也可以是多條語句 多條語句無需用復合語句去表示 而在if else結構中的語句1和語句2只能是單條語句 switch語句中的一對花括號是必須書寫的 是switch語句構成的必要部分 switch語句的具體執(zhí)行過程為 根據(jù)switch表達式的值 尋找switch語句的執(zhí)行入口 自上而下和case后的整型常量表達式的值進行比較 如果相等則執(zhí)行其后的語句組 假定入口是整型常量表達式2 那么該語句執(zhí)行語句組2 當語句組2執(zhí)行完畢后 若有break語句 則中斷switch語句的執(zhí)行 否則繼續(xù)執(zhí)行語句組3 如果沒有和表達式的值相匹配的整型常量表達式 則執(zhí)行default后的語句組 case后的整型常量表達式的值實際上就是switch后括號內的表達式的各種可能的取值 如果能窮盡表達式各種可能的取值 則語句中可省去default分支 否則最好不要省略default 因為default表示的是switch語句在沒有找到匹配入口時的語句執(zhí)行入口 例6 6輸入一同學的成績 判斷其成績等級 等級范圍為 90以上等級為A89 80等級為B79 70等級為C69 60等級為D60以下等級為E 假定成績?yōu)閟core 可以得到表達式 int score 10 當表達式的值為10和9時 對應于90分以上的條件分支 為8時對應于89 80分段的條件分支 以下的取值和對應的分支可以依次類推 60分以下可用switch中default分支來描述 程序如下 main floatscore scanf f score 10中score得到的結果為浮點型 系統(tǒng)會自動轉換為整型 常量表達式為10的分支 由于與9的分支均為A級 利用switch的特點可以不寫值為10的分支對應的語句 使用switch語句應注意以下幾點 1 switch語句中表達式可為任意類型 但運算結果為整型 case后的表達式必須是整型常量表達式 2 每個case后的常量表達式的值不能相同 否則會自相矛盾 無法判斷 3 case及default的順序對運行結果不產生影響 4 若無break語句進行switch語句的強制跳出 則從該處順序執(zhí)行其余語句 直至跳出或執(zhí)行結束 5 case和其后的整型常量表達式中間應有空格 6 4選擇結構程序設計舉例 例6 10批發(fā)鋼材 每噸批發(fā)金額為1000元 計算批發(fā)金額 批發(fā)折扣如表6 3所示 表6 3例6 10折扣表 表6 4例6 10折扣規(guī)律表1 main floatt d m scanf f x9d是字符 的ASCII碼 main floatt d m scanf f- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 程序設計 選擇 結構
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.3dchina-expo.com/p-6328733.html