版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、選擇結(jié)構(gòu)程序設(shè)計課程:程序設(shè)計語言教材:譚浩強C程序設(shè)計第三版教師:陳小荷本章重點掌握關(guān)系運算符、邏輯運算符的優(yōu)先次序,理解條件表達(dá)式的意義。掌握if語句的四種形式,能針對具體問題正確運用。理解switch語句的控制結(jié)構(gòu),能正確運用。關(guān)系運算符 小于 大于 優(yōu)先級高(6)= 大于或等于= 等于 優(yōu)先級低(7)!= 不等于關(guān)系表達(dá)式比較兩個運算數(shù),表達(dá)式成立則值為1 ( true ) ,否則值為 0 ( false ) : x y / 未知 x + 5 x/ 1 ( true ) x + 5 = x / 1 ( true )關(guān)系運算符與算術(shù)運算符算術(shù)運算符的優(yōu)先級是3(乘除余)和4(加減)以下兩
2、個表達(dá)式的值是多少?10 + ( 20 10 ) * 100以下四個表達(dá)式,如果要加括號,并且不能改變原來的優(yōu)先次序,應(yīng)該怎么加?10 + 20 z z = x y , z ! = x y z 的值是多少?如果它們的值分別是 1、3、5 呢?數(shù)學(xué)書上 x y z 的意思是 x大于y,y大于z,這個意思用C語言來表達(dá),應(yīng)該是:x y & y z關(guān)系運算符和賦值運算符重溫:賦值運算符的優(yōu)先級低(14) x = y z 等價于下面哪個表達(dá)式? ( x = y ) z x = ( y z )若 x, y, z 的初值分別是 5, 3, 1 ,下面表達(dá)式的值是多少? x = y z 邏輯值表第一行是標(biāo)題
3、。以第二行為例,讀法是:若a真b真,則非a和非b均假,a & b 為真,a | b 亦為真。邏輯表達(dá)式求值是自左至右的,一旦發(fā)現(xiàn)已經(jīng)可以根據(jù)一個運算數(shù)求值,就不會再對第二個運算數(shù)求值。例如,在 a & b 中,如果已知a假,則整個邏輯表達(dá)式為假,不必再考慮b的值邏輯運算符的優(yōu)先級和結(jié)合方向邏輯反的結(jié)合方向是自右至左,其他邏輯運算符的結(jié)合方向均為自左至右邏輯非 ! ,優(yōu)先級2算術(shù)運算符,優(yōu)先級3和4關(guān)系運算符,優(yōu)先級6和7邏輯與 & ,優(yōu)先級11邏輯或 | | ,優(yōu)先級12賦值運算符,優(yōu)先級14表達(dá)式求值假定以下變量 a, b, c, d 的值分別是 0, 1, 2, 3 ,變量 x 和 y 的
4、值未知,請對下列表達(dá)式求值:x = y & 10 = y & x != xa b | 3 1 a x - 1 a & b | | c & d a & ( b | c ) & d表達(dá)式求值假定 a, b, c 的值分別是 3, 4, 5 a + b c & b = = c ( a + b ) c ) & ( b = = c ) a | b + c & b c ! ( a b ) & ! c | 1 ! ( x = a ) & ( y = b ) & 0 ! ( a + b ) + c 1 & b + c / 2練習(xí)寫一些表達(dá)式判斷是否“及格”(60分及格)判斷是否“英文字母”判斷是否“小寫英文字
5、母或阿拉伯?dāng)?shù)字”判斷是否“能被4整除”判斷是否“能被4整除但不能被100整除”判斷是否“閏年”形式1:if (e) s ;是否執(zhí)行s,取決于e的值 sample : 輸入g, 0,兩個printf語句的執(zhí)行情況如何? # include if ( isletter(ch) ) /* 判斷ch是否字母*/printf(“%c is a letter n”, ch);printf(“thank you.n”);形式2:if (e) s1; else s2;e的值非 0, 執(zhí)行 s1, 否則執(zhí)行 s2sample : 輸入g, 0,兩個printf 語句的執(zhí)行情況如何?if ( isletter(c
6、h) ) printf(“%c is a letter n”, ch);else printf(“%c is not a letter n”, ch);s 可以是一個復(fù)合語句sample: 三個變量的排序(升序)if ( ab ) tmp=a; a=b; b=tmp; if ( ac ) tmp=a; a=c; c=tmp; if ( bc ) tmp=b; b=c; c=tmp; 形式3:多分枝的if語句注意下面語句的邏輯關(guān)系:if(n500) cost=0.15;else if(n300) cost=0.10;else if(n100) cost=0.075;else if(n50) co
7、st=0.05;else const=0.0;例如,第二行相當(dāng)于說:if(n300) cost=0.10;如果按n值從小到大的順序來寫多分枝的if語句,應(yīng)該怎么寫?形式4:嵌套的if語句if(e) s1; else s2 中,s1或s2本身又是一個if語句形式3也是嵌套的if語句,但它總是在s2中嵌套if ( e )if ( e1 ) s1 ;else s2 ;elseif ( e2 ) s3 ;else s4 ;寫法1if (x0) y = 1 ;語法、邏輯都沒有錯,運行也正確,但效率低寫法2和寫法3if (x=0) if (x0) y = 1 ;else y = 0 ;else y = -
8、1 ;if與else的匹配原則就近匹配:嵌套的if語句中,else總是跟離它最近的上一個尚無匹配的if匹配,不管縮進(jìn)形式是怎樣的:if ( e )if ( e1 ) s1 ; else s2 ; /* 跟匹配 */else /* 跟匹配 */if ( e2 ) s3 ; else s4 ; /* 跟匹配 */寫法4和寫法5y = -1 ;if (x!=0) if (x0) y = 1 ;else y = 0 ;y = 0;if (x=0) if (x0) y = 1 ;else y = -1 ;條件表達(dá)式e1 ? e2 : e3其中,? : 是一個條件運算符,三目的,優(yōu)先級為13(高于賦值運算
9、符),結(jié)合方向是自右至左條件表達(dá)式的值是這樣計算的:先對e1求值如果e1的值非0,則條件表達(dá)式的值為e2否則,條件表達(dá)式的值為e3條件表達(dá)式的應(yīng)用用于二分枝的選擇結(jié)構(gòu),例如:if ( ch 128 ) return 0;else return 1;可寫成以條件表達(dá)式為賓語的返回語句:return ch = 60 ) grade = Y ;else grade = N ;條件表達(dá)式的應(yīng)用條件運算符是自右至左結(jié)合的,例如:y = x = 0 ? 0 : x 0 ? 1 : -1相當(dāng)于y = x = 0 ? 0 : (x 0 ? 1 : -1)因此,條件表達(dá)式也可以用于多分枝選擇不過,為了容易理解,
10、一般應(yīng)該用if語句來表達(dá)switch 語句多分枝選擇 :switch ( grade ) case A : printf ( “85100”n”); break;case B : printf ( “7084n”); break;case C : printf ( “6069”n”); break;case D : printf ( “ 60 n”); break;default : printf ( “error n”);switch語句與多分枝if語句的關(guān)系一般來說,能用switch語句的也能用多分枝if語句來表達(dá),例如:if ( grade = A ) printf ( “85100”n
11、”); else if ( grade = B ) printf ( “7084n”); else if ( grade = C ) printf ( “6069”n”); else if ( grade = D ) printf ( “b ) if ( ac ) return a; else return c; else if ( bc ) return b; else return c; int m=a; if ( bm ) m=b; if ( cm ) m=c; return m; 你喜歡哪種寫法?例5.6 求一元二次方程的根輸入:系數(shù)a, b, c過程和輸出:a = 0 : 不是一元二
12、次方程disc = b*b 4*a*c ;if (disc絕對值近乎0) 打印兩個相等實根if (disc絕對值大于0) 打印兩個不等實根else 打印兩個共軛復(fù)根例5.6 教材分析程序的主體是一個嵌套的if語句,共有3層,層數(shù)多了,理解起來比較困難第一層的if只帶一個語句,而else卻帶了多層多個語句,不太般配第二層的if也只帶一個語句,而else卻帶了多層多個語句,不太般配第三層的if和else,在層次和語句數(shù)量上比較均衡例5.6 程序修改基本思路:減少層次,盡量不用嵌套的if語句void函數(shù)中可以有多個return語句,因此,如果已經(jīng)處理了某種情況,就可以及時返回,程序其余部分再處理其他情況例如,第一種情況,打印了“不是一元二次方程”之后,即可return,這樣就省掉了一個層次請自行修改這個程序例5.7 運費計算可以有多種寫法:如教材所示,用swit
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職市政工程技術(shù)(橋梁養(yǎng)護(hù)技術(shù))試題及答案
- 2025年高職新能源裝備技術(shù)(風(fēng)電設(shè)備維護(hù))試題及答案
- 2025年大學(xué)大一(計算機應(yīng)用技術(shù))數(shù)據(jù)庫開發(fā)實務(wù)階段測試題
- 財保職業(yè)發(fā)展路徑
- 神池介紹教學(xué)課件
- 2026新疆昌吉州檢察機關(guān)招聘聘用制書記員8人備考題庫及完整答案詳解一套
- 河北省滄州市吳橋中學(xué)2026屆高三一模語文試題(含答案)
- (九年級道德與法治)2025年秋綿陽市鹽亭縣九年級(上)期末教學(xué)質(zhì)量監(jiān)測試卷
- 2026國家知識產(chǎn)權(quán)局專利局專利審查協(xié)作北京中心福建分中心專利審查員招聘100人備考題庫帶答案詳解
- 2026云南迪慶州德欽縣公安局招聘警務(wù)輔助人員2人備考題庫含答案詳解
- GB/T 17213.4-2015工業(yè)過程控制閥第4部分:檢驗和例行試驗
- FZ/T 73009-2021山羊絨針織品
- JJF 1069-2012 法定計量檢定機構(gòu)考核規(guī)范(培訓(xùn)講稿)
- GB∕T 5900.2-2022 機床 主軸端部與卡盤連接尺寸 第2部分:凸輪鎖緊型
- 2011-2015廣汽豐田凱美瑞維修手冊wdl
- DFMEA編制作業(yè)指導(dǎo)書新版
- KTronics籃輸送式洗碗碟機操作手冊
- DB35∕T 1844-2019 高速公路邊坡工程監(jiān)測技術(shù)規(guī)程
- 城市管理綜合執(zhí)法局城管執(zhí)法與執(zhí)法程序PPT模板
- 閥門基礎(chǔ)知識上
- 第二章注射成型工藝與模具結(jié)構(gòu)
評論
0/150
提交評論