版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章選擇結(jié)構(gòu)程序設(shè)計(jì)第一頁(yè),共二十四頁(yè),2022年,8月28日第五章選擇結(jié)構(gòu)程序設(shè)計(jì)
本章主要內(nèi)容:5.1關(guān)系運(yùn)算符及其表達(dá)式5.2邏輯運(yùn)算符及其表達(dá)式5.3if語(yǔ)句5.4switch語(yǔ)句5.5綜合應(yīng)用舉例本章重點(diǎn):熟練掌握關(guān)系、邏輯運(yùn)算;深刻理解if語(yǔ)句的執(zhí)行過程及在程序設(shè)計(jì)中的作用;熟練掌握if語(yǔ)句的變化和switch語(yǔ)句的功能和作用。第二頁(yè),共二十四頁(yè),2022年,8月28日5.1關(guān)系運(yùn)算符及其表達(dá)式
關(guān)系運(yùn)算符:<<=>>===!=關(guān)系表達(dá)式
5>2 5<=2 比較的結(jié)果是一個(gè)邏輯量,即“真”或“假”,分別用整數(shù)1和0表示。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。如:a=2*2<8 (b=2)>5-1[例5.1]關(guān)系運(yùn)算符的應(yīng)用選擇結(jié)構(gòu)程序設(shè)計(jì)成立,為“真”(1)不成立,為“假”(0)第三頁(yè),共二十四頁(yè),2022年,8月28日5.2邏輯運(yùn)算符及其表達(dá)式邏輯運(yùn)算符 !(邏輯非)、&&(邏輯與)、||(邏輯或)邏輯表達(dá)式!(a>b)10<x&&y<100 p==q||x!=y 邏輯表達(dá)式的結(jié)果還是邏輯值,即“真”或“假”,分別用1和0表示。[例5.2]邏輯運(yùn)算典型的運(yùn)算量是關(guān)系表達(dá)式選擇結(jié)構(gòu)程序設(shè)計(jì)第四頁(yè),共二十四頁(yè),2022年,8月28日運(yùn)算量是算術(shù)表達(dá)式時(shí),如果算術(shù)表達(dá)式的值為0則認(rèn)為“假”,非0認(rèn)為“真”。在一個(gè)邏輯表達(dá)式中可以包含多個(gè)邏輯運(yùn)算和其它各種運(yùn)算符,這時(shí)將按它們的優(yōu)先級(jí)進(jìn)行運(yùn)算:選擇結(jié)構(gòu)程序設(shè)計(jì)()!、++、--、+、-
*、/、%
+、-
<、<=、>、>=
==、!=
&&
||
=、+=、-=、*=、/=、%=等
高低第五頁(yè),共二十四頁(yè),2022年,8月28日如表達(dá)式“5>3&&2||8<4-!0”的運(yùn)算順序如下:短路運(yùn)算:由于邏輯運(yùn)算的特殊性,邏輯表達(dá)式求值不一定必須求到底。如:
a&&b&&c a||b||c選擇結(jié)構(gòu)程序設(shè)計(jì)只有a為真時(shí)才判斷b,只有a&&b為真時(shí)才判斷c。亦即:若a為假,表達(dá)式的值已經(jīng)肯定為假,不必再往下判斷了。只要a為真,就不必再繼續(xù)判斷,結(jié)果一定為真。
第六頁(yè),共二十四頁(yè),2022年,8月28日用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定要執(zhí)行的語(yǔ)句。if語(yǔ)句的格式:格式1:
if(表達(dá)式)語(yǔ)句如:if(a<b)a=b;
printf(“a=%d\n”,a);[例5.5-1]將輸入的兩個(gè)數(shù)中最大的打印出來。[例5.5-2]將輸入的兩個(gè)數(shù)先大后小輸出。表達(dá)式語(yǔ)句真假5.3if語(yǔ)句選擇結(jié)構(gòu)程序設(shè)計(jì)第七頁(yè),共二十四頁(yè),2022年,8月28日格式2:
if(表達(dá)式)語(yǔ)句1else語(yǔ)句2如:if(a>b)c=a; elsec=b;
printf(“c=%d\n”,c);[例5.5-1]將輸入的兩個(gè)數(shù)中最大的打印出來。[例5.5-2]將輸入的兩個(gè)數(shù)先大后小輸出。選擇結(jié)構(gòu)程序設(shè)計(jì)表達(dá)式真假語(yǔ)句1語(yǔ)句2第八頁(yè),共二十四頁(yè),2022年,8月28日嵌套的if語(yǔ)句在if語(yǔ)句中的“語(yǔ)句”處又是if語(yǔ)句,則稱為if語(yǔ)句的嵌套。一般格式如下:
if(表達(dá)式1) if(表達(dá)式2) 語(yǔ)句1 else 語(yǔ)句2 else if(表達(dá)式3) 語(yǔ)句3 else 語(yǔ)句4在嵌套的if語(yǔ)句中,人們習(xí)慣將它寫成鋸齒形,以增加程序的可讀性。 選擇結(jié)構(gòu)程序設(shè)計(jì)第九頁(yè),共二十四頁(yè),2022年,8月28日內(nèi)層的if語(yǔ)句如果是簡(jiǎn)化的if,如:if(表達(dá)式1) if(表達(dá)式2)語(yǔ)句1else 語(yǔ)句2從最內(nèi)層開始,else總是與它上面最近的、未曾配對(duì)的if配對(duì)。選擇結(jié)構(gòu)程序設(shè)計(jì){}?第十頁(yè),共二十四頁(yè),2022年,8月28日[例5.6]求分段函數(shù)的值main(){intx,y;scanf(“%d”,&x);
printf(“y=%d\n”,y);}選擇結(jié)構(gòu)程序設(shè)計(jì)if(x<0)y=-1;elseif(x==0)y=0;elsey=1;if(x<=0)if(x<0)y=-1;else y=0;else y=1;y=-1;if(x>=0)if(x>0)y=1;else y=0;y=0;if(x>=0){if(x>0)y=1;}else y=-1;√第十一頁(yè),共二十四頁(yè),2022年,8月28日else-if格式if(表達(dá)式1) 語(yǔ)句1elseif(表達(dá)式2) 語(yǔ)句2elseif(表達(dá)式3) 語(yǔ)句3……else 語(yǔ)句n
它實(shí)際上是if語(yǔ)句在else中有if嵌套的格式變化。如:選擇結(jié)構(gòu)程序設(shè)計(jì)if(x<0) y=-1;elseif(x==0)y=0;elsey=1;第十二頁(yè),共二十四頁(yè),2022年,8月28日[例5.7]輸入考試成績(jī)的等級(jí),打印出百分制分?jǐn)?shù)段(A等:85分以上,B等:70~84,C等:60~69,D等:60分以下)。
main() { chargrade; scanf(“%d”,&grade); if(grade==’A’)printf(“85~100\n”); elseif(grade==’B’)printf(“70~84\n”); elseif(grade==’C’)printf(“60~69\n”); elseif(grade==’D’)printf(“<60\n”); elseprintf(“Error\n”); }
選擇結(jié)構(gòu)程序設(shè)計(jì)第十三頁(yè),共二十四頁(yè),2022年,8月28日條件運(yùn)算符語(yǔ)法格式為:表達(dá)式1?表達(dá)式2:表達(dá)式3如: max=(a>b)?a:b; 與 if(a>b)max=a;elsemax=b;等價(jià)條件運(yùn)算符的優(yōu)先級(jí)僅僅高于賦值運(yùn)算符和逗號(hào)運(yùn)算符,低于所有其它運(yùn)算符。[例5.8]判斷鍵盤輸入的一個(gè)字符是否為大寫字母,如果是則轉(zhuǎn)換為小寫字母,否則不轉(zhuǎn)換。輸出處理后的字符。選擇結(jié)構(gòu)程序設(shè)計(jì)條件第十四頁(yè),共二十四頁(yè),2022年,8月28日5.4switch語(yǔ)句語(yǔ)法格式:switch(表達(dá)式){ case常量1:語(yǔ)句組1 case常量2:語(yǔ)句組2 …… case常量n:語(yǔ)句組n default:語(yǔ)句組n+1}
選擇結(jié)構(gòu)程序設(shè)計(jì)=常量1=常量2=常量n表達(dá)式語(yǔ)句組1語(yǔ)句組2語(yǔ)句組n語(yǔ)句組n+1yyynnn第十五頁(yè),共二十四頁(yè),2022年,8月28日如在例5.7中的if部分可以考慮寫成下面的switch語(yǔ)句:
switch(grade) { case’A’:printf(“85~100\n”); case’B’:printf(“70~84\n”); case’C’:printf(“60~69\n”); case’D’:printf(“<60\n”); default:printf(“Error\n”); }
若grade=‘C’,則輸出: 60~69 <60 Error選擇結(jié)構(gòu)程序設(shè)計(jì)第十六頁(yè),共二十四頁(yè),2022年,8月28日改進(jìn)的switch語(yǔ)句語(yǔ)法格式:switch(表達(dá)式){ case常量1:語(yǔ)句組1;break; case常量2:語(yǔ)句組2;break; …… case常量n:語(yǔ)句組n;break; default:語(yǔ)句組n+1}
選擇結(jié)構(gòu)程序設(shè)計(jì)=常量1=常量2=常量n表達(dá)式語(yǔ)句組1語(yǔ)句組2語(yǔ)句組n語(yǔ)句組n+1yyynnn第十七頁(yè),共二十四頁(yè),2022年,8月28日改進(jìn)后的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”); }
若grade=‘C’,則輸出: 60~69選擇結(jié)構(gòu)程序設(shè)計(jì)第十八頁(yè),共二十四頁(yè),2022年,8月28日多個(gè)case可以共用一組執(zhí)行語(yǔ)句。如: switch(grade) { case’A’: case’B’: case’C’:printf(“60~100\n”);break; case’D’:printf(“<60\n”);break; default:printf(“Error\n”); }選擇結(jié)構(gòu)程序設(shè)計(jì)第十九頁(yè),共二十四頁(yè),2022年,8月28日5.5綜合應(yīng)用舉例[例5.9]在例2.9的計(jì)算機(jī)隨機(jī)出一道兩位數(shù)的加法題中,當(dāng)用戶回答完畢后,給出適當(dāng)?shù)脑u(píng)語(yǔ)。分析:重設(shè)隨機(jī)種子:randomize();產(chǎn)生10~99之間的隨機(jī)數(shù):a=random(90)+10;可能的運(yùn)行情況:計(jì)算:23+72=96↙回答錯(cuò)誤,您輸入的數(shù)是:96要看答案嗎(y/n)?y↙正確答案是:95
選擇結(jié)構(gòu)程序設(shè)計(jì)第二十頁(yè),共二十四頁(yè),2022年,8月28日[例5.10]輸入年、月,輸出該月有多少天。分析:每年的1、3、5、7、8、10、12月有31天;4、6、9、11月有30天;2月閏年有29天,平年有28天。年號(hào)能被4整除,但不能被100整除,或者年號(hào)能被400整除的年均是閏年。設(shè)年份為year,判斷year是否為閏年:
if(year%4==0&&year%100!=0||year%400==0)
選擇結(jié)構(gòu)程序設(shè)計(jì)第二十一頁(yè),共二十四頁(yè),2022年,8月28日本章小結(jié):本章介紹了關(guān)系運(yùn)算符和邏輯運(yùn)算符,由它們構(gòu)成的表達(dá)式通常是在if語(yǔ)句和循環(huán)語(yǔ)句中作為條件來使用的。if語(yǔ)句和switch語(yǔ)句的使用,使程序的執(zhí)行變成了“跳躍”式執(zhí)行了,實(shí)際上是對(duì)程序中的某些部分實(shí)現(xiàn)的選擇運(yùn)行。這種選擇是必要的,可以根據(jù)不同的情況選擇合適的代碼進(jìn)行處理。在理解了問題的要求后,如果需要這樣的選擇,就應(yīng)該使用選擇結(jié)構(gòu)的語(yǔ)句。第二十二頁(yè),共二十四頁(yè),2022年,8月28日第5章作業(yè)5.1輸入一個(gè)整數(shù),如果為正數(shù)或零,計(jì)算該數(shù)的平方;如果為負(fù)數(shù),計(jì)算該數(shù)的立方。5.2輸入一個(gè)整數(shù),如果:(1)當(dāng)為正數(shù)時(shí),如果它即是3又是7的倍數(shù),輸出“是3、7的倍數(shù)”;否則輸出“不是3、7的倍數(shù)”。(2)當(dāng)為負(fù)數(shù)或零時(shí),顯示“不是正整數(shù)”。5.3輸入3個(gè)數(shù),將其中最大數(shù)輸出。5.4輸入3個(gè)字母,按字母表順序從小到大輸出這3個(gè)字母。選擇結(jié)構(gòu)程序設(shè)計(jì)第二十三頁(yè),共二十四頁(yè),2022年,8月28日5.5輸入某學(xué)生成績(jī),若
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年泉州工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試模擬測(cè)試卷附答案解析
- 2025年聊城職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題及答案解析(奪冠)
- 2025年山東科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)附答案解析
- 2024年濰坊職業(yè)學(xué)院馬克思主義基本原理概論期末考試題附答案解析
- 2024年襄汾縣幼兒園教師招教考試備考題庫(kù)帶答案解析
- 2025年江西應(yīng)用工程職業(yè)學(xué)院馬克思主義基本原理概論期末考試模擬題含答案解析(必刷)
- 2026年福建廈門市集美區(qū)后溪鎮(zhèn)衛(wèi)生院編外人員招聘16人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年江西冶金職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2025年云陽(yáng)縣幼兒園教師招教考試備考題庫(kù)及答案解析(必刷)
- 2025年開陽(yáng)縣招教考試備考題庫(kù)及答案解析(奪冠)
- 安全教育培訓(xùn)管理制度及流程
- 煤礦春節(jié)放假期間的工作方案及安全技術(shù)措施
- GB/T 5076-2025具有兩個(gè)軸向引出端的圓柱體元件的尺寸測(cè)量
- 幼兒園教育活動(dòng)座位擺放指南
- 水池土建施工方案
- 2025中好建造(安徽)科技有限公司第二次社會(huì)招聘13人筆試考試備考試題及答案解析
- 移動(dòng)支付安全體系架構(gòu)-洞察與解讀
- 水泵維修安全知識(shí)培訓(xùn)課件
- DB43∕T 1358-2017 地質(zhì)災(zāi)害治理工程質(zhì)量驗(yàn)收規(guī)范
- 軍犬的訓(xùn)練考試題及答案
- 臨床病區(qū)藥品管理試題及答案2025年版
評(píng)論
0/150
提交評(píng)論