版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第五章l 本章要點(diǎn)本章要點(diǎn)n 關(guān)系表達(dá)式n 邏輯表達(dá)式n 選擇結(jié)構(gòu)程序設(shè)計l 主要內(nèi)容主要內(nèi)容5.1 5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式5.2 5.2 邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式5.3 if5.3 if語句語句5.4 switch5.4 switch語句語句5.5 5.5 程序舉例程序舉例 5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式1.1.關(guān)系運(yùn)算符及其優(yōu)先次序關(guān)系運(yùn)算符及其優(yōu)先次序1.1. ( (小于小于) )2.2. = ( ( (大于大于) )4.4. = (= (大于或等于大于或等于) )5.5. = (= (等于等于) )6.6. != (!= (不等于不等于
2、) )優(yōu)先級相同(高)優(yōu)先級相同(高)優(yōu)先級相同(低)優(yōu)先級相同(低)說明:關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符 5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 2.關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個表達(dá)式(可以是算術(shù)表達(dá)式或 關(guān)系表達(dá)式,邏輯表達(dá)式,賦值表達(dá)式,字符表達(dá)式) 接起來的式子,稱關(guān)系表達(dá)式例:ab,a+bb+c,(a=3)(b=5),ab)(bb”的值為“真”,表達(dá)式的值為1。C C語言中沒有專用語言中沒有專用的邏輯值,的邏輯值,1 1代表代表真,真,0 0代表假代表假 5.2 邏輯運(yùn)算符和邏輯表達(dá)式1.邏輯運(yùn)算符及其優(yōu)先次序(1)& (邏輯與) 相當(dāng)于其他語言中的
3、AND(2)| (邏輯或) 相當(dāng)于其他語言中的OR(3)! (邏輯非) 相當(dāng)于其他語言中的NOT例:a&b 若a,b為真,則a&b為真。 a|b 若a,b之一為真,則a|b為真。 !a 若a為真,則!a為假。優(yōu)先次序:!(非)-&()-|()邏輯運(yùn)算符中的“&”和“|”低于關(guān)系運(yùn)算符,“!”高于算 術(shù)運(yùn)算符 5.2 邏輯運(yùn)算符和邏輯表達(dá)式 2.邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來的式子就 是邏輯表達(dá)式。邏輯表達(dá)式的值應(yīng)該是一個邏輯量“真”或“假”。例:設(shè)a=4,b=5:!a的值為0 a&b的值為1a|b的值為1 !a|b的值為14&
4、0|2的值為1任何非零的數(shù)值被認(rèn)作任何非零的數(shù)值被認(rèn)作“真真” 5.2 邏輯運(yùn)算符和邏輯表達(dá)式 例:53&84-!0 自左向右運(yùn)算 1&0邏輯值為083邏輯值為1表達(dá)式值為0 5.2 邏輯運(yùn)算符和邏輯表達(dá)式 在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都要被執(zhí)行。在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都要被執(zhí)行。(1)a&b&c (1)a&b&c 只有只有a a為真時,才需要判斷為真時,才需要判斷b b的值,只有的值,只有a a和和b b都為真時,都為真時, 才需要判斷才需要判斷c c的值。的值。(2)a|b|c (2)a|b|c 只要只要
5、a a為真,就不必判斷為真,就不必判斷b b和和c c的值,只有的值,只有a a為假,才為假,才 判斷判斷b b。a a和和b b都為假才判斷都為假才判斷c c例:(m=ab)&(n=cd)當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時,由于“ab”的值為0,因此m=0,而“n=cd”不被執(zhí)行,因此n的值不是0而仍保持原值1。 5.2 邏輯運(yùn)算符和邏輯表達(dá)式 用邏輯表達(dá)式來表示閏年的條件能被4整除,但不能被100整除。能被100整除,又能被400整除。答答(year%4=0&year%100!=0)(year%4=0&year%100!=0) |year%400=
6、0 |year%400=0案案 值為真(1)是閏年,否則為非閏年。 5.3 if語句1.if語句的三種基本形式(1)if (表達(dá)式) 語句例: if(xy) printf(“%d”,x);表達(dá)式語句真(非0)假(0) 5.3 if語句 (2)if(表達(dá)式) 語句1 else 語句2例: if (xy) printf(“%d”,x); else printf(“%d”,y); 條件條件 語句語句1 語句語句2YN 5.3 if語句 (3)if(表達(dá)式1)語句1 else if(表達(dá)式2)語句2 else if(表達(dá)式3)語句3 else if(表達(dá)式m)語句m else 語句n 5.3 if語句
7、 例: if (number500)cost=0.15; else if(number300)cost=0.10; else if(number100)cost=0.075; else if(number50)cost=0.05; else cost=0; 5.3 if語句 說明:(1)3種形式的if語句中在if后面都有表達(dá)式, 一般為邏輯表達(dá)式或關(guān)系表達(dá)式。(2)第二,第三種形式的if語句中,在每個 else前面有一個分號,整個語句結(jié)束處有一 個分號。(3)在if和else后面可以只含有一個內(nèi)嵌的操 作語句,也可以由多個操作語句,此時用花 括號將幾個語句括起來成為一個復(fù)合語句。 5.3 if
8、語句 例例5.1 5.1 輸入兩個實(shí)數(shù),按代數(shù)值由小到大的順序輸出這兩輸入兩個實(shí)數(shù),按代數(shù)值由小到大的順序輸出這兩個數(shù)。個數(shù)。#includestdio.h#include void main()void main()float a,b,t;float a,b,t;scanf(%f,%f,&a,&bscanf(%f,%f,&a,&b););if(ab)if(ab)t=a;t=a;a=b;a=b;b=t;b=t;printf(printf(%5.2f,%5.2fn%5.2f,%5.2fn,a,b);,a,b); ynabT=aA=bB=t 5.3 if語句 例例5
9、.2 5.2 輸入三個數(shù)輸入三個數(shù)a,b,c,a,b,c,要求按由小到大的順序輸出。要求按由小到大的順序輸出。If ab 將a和b對換If ac 將a和c對換If bc 將b和c對換abacbca和b交換a和c交換c和b交換yyynn 5.3 if語句 #include #include void main ( ) void main ( ) float a,b,c,t; float a,b,c,t; scanf( scanf(%f,%f,%f%f,%f,%f,&a,&b,&c);,&a,&b,&c); if(ab)if(ab) t=a;a=b;
10、b=t; t=a;a=b;b=t; if(ac) if(ac) t=a;a=c;c=t; t=a;a=c;c=t;if(bc) if(bc) t=b;b=c;c=t; t=b;b=c;c=t; printf(%5.2f,%5.2f,%5.2fn,a,b,c); printf(%5.2f,%5.2f,%5.2fn,a,b,c); 5.3 if語句 2.if語句的嵌套在if語句中又包含一個或多個if語句稱為if語句的嵌套。形式:if()if() 語句1else 語句2elseif() 語句3else 語句4內(nèi)嵌內(nèi)嵌ifif 5.3 if語句 匹配規(guī)則:else總是與它上面的,最近的,統(tǒng)一復(fù)合語句中
11、的,未配對的if語句配對。例:if()if() 語句1elseif() 語句2else 語句3例:if()if() 語句1elseif() 語句2else 語句3當(dāng)當(dāng)ifif和和elseelse數(shù)目不同時,可以加數(shù)目不同時,可以加花括號花括號來確定配對關(guān)系。來確定配對關(guān)系。 5.3 if語句 -1 (x0)算法1: 算法1:輸入x 輸入x若x0,則y=-1 若x0,則y=1 若x=0,則y=0輸出y 若x0,則y=1 輸出y 5.3 if語句 #includevoid main() int x,y; scanf(“%d”,&x); 程序段 printf(“x=%d,y=%dn”,x,y
12、); 5.3 if語句 上例中的程序段有四個,請判斷哪個是正確的?程序1: 程序2: if(x=0) Y=-1; if(x0) y=1; else else y=0; if(x=0) y=0; else y=-1; else y=1;程序3: 程序4: Y=-1; y=0; if(x!=0) if(x=0) if(x0) y=1; if(x0) y=1; else y=0; Else y=-1;正確正確 5.3 if語句 3.條件運(yùn)算符格式: 表達(dá)式?表達(dá)式表達(dá)式 功能: 判斷表達(dá)式1的值,如果成立就執(zhí)行表 達(dá)式2,否則就執(zhí)行表達(dá)式3使用場合:若在語句中,當(dāng)被判別的表達(dá)式的 值為“真”或“假”
13、 時,都執(zhí)行一個賦值語 句且向同一個變量賦值時,可以用一個 條件運(yùn)算符來處理。 5.3 if語句 例: () =; ;當(dāng)ab時將a的值賦給max,當(dāng)ab時將b的值賦給max,可以看到無論ab是否滿足,都是向同一個變量賦值。 可以用下面的條件運(yùn)算符來處理: ()?; 5.3 if語句 說明:(1)(1)條件運(yùn)算符的執(zhí)行順序:先求解表達(dá)式,若為非(真)條件運(yùn)算符的執(zhí)行順序:先求解表達(dá)式,若為非(真) 則求解表達(dá)式,此時表達(dá)式的值就作為整個條件表達(dá)式則求解表達(dá)式,此時表達(dá)式的值就作為整個條件表達(dá)式 的值。若表達(dá)式的值為(假),則求解表達(dá)式,表達(dá)的值。若表達(dá)式的值為(假),則求解表達(dá)式,表達(dá) 式的值就
14、是整個條件表達(dá)式的值。式的值就是整個條件表達(dá)式的值。 (2)(2)條件運(yùn)算符優(yōu)先級高于賦值運(yùn)算符條件運(yùn)算符優(yōu)先級高于賦值運(yùn)算符 ,低于關(guān)系運(yùn)算符,低于關(guān)系運(yùn)算符 和算術(shù)運(yùn)算符。和算術(shù)運(yùn)算符。 (3)(3)條件運(yùn)算符的結(jié)合方向?yàn)闂l件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷笞杂抑磷蟆薄?( (4)“4)“表達(dá)式表達(dá)式2”2”和和“表達(dá)式表達(dá)式3”3”不僅可以是數(shù)值表達(dá)式,還可以不僅可以是數(shù)值表達(dá)式,還可以 是賦值表達(dá)式或函數(shù)表達(dá)式。是賦值表達(dá)式或函數(shù)表達(dá)式。(5)(5)條件表達(dá)式中,表達(dá)式的類型可以與表達(dá)式和表達(dá)條件表達(dá)式中,表達(dá)式的類型可以與表達(dá)式和表達(dá) 式的類型不同。式的類型不同。 5.3 if語句 例例
15、5.45.4輸入一個字符,判別它是否大寫字母,如果是,將輸入一個字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。得到的字符。 #include stdio.h#include void main ( ) void main ( ) char ch char ch; ; scanf(%c scanf(%c,& ch,& ch);); ch ch= =(ch(ch=A& ch=A& ch=Z)?(ch+32):ch;=Z)?(ch+32):ch; printf(%cn,c
16、h printf(%cn,ch);); 如果字符變量ch的值為大寫字母,則條件表達(dá)式的值為(),即相應(yīng)的小寫字母。如果ch的值不是大寫字母,則條件表達(dá)式的值為,即不進(jìn)行轉(zhuǎn)換。 5.4 switch語句switch語句的格式:switch (表達(dá)式) case常量表達(dá)式:語句 case常量表達(dá)式:語句 case常量表達(dá)式:語句 default :語句 5.4 switch語句 例例: :要求按照考試成績的等級輸出百分制分?jǐn)?shù)段,用要求按照考試成績的等級輸出百分制分?jǐn)?shù)段,用switchswitch語句實(shí)現(xiàn):語句實(shí)現(xiàn):switch(gradegrade) case printfprintf(););
17、case printf printf ();); case printf printf ();); case printf printf ();); default( printfprintf );); 5.4 switch語句 說明: switchswitch后面括弧內(nèi)的后面括弧內(nèi)的“表達(dá)式表達(dá)式”, 標(biāo)準(zhǔn)允許它為任何類型。標(biāo)準(zhǔn)允許它為任何類型。(2) (2) 當(dāng)表達(dá)式的值與某一個當(dāng)表達(dá)式的值與某一個casecase后面的常量表達(dá)后面的常量表達(dá)式的值相等時,就執(zhí)行此式的值相等時,就執(zhí)行此casecase后面的語句,若后面的語句,若所有的所有的casecase中的常量表達(dá)式的值都沒有與表達(dá)中的
18、常量表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行式的值匹配的,就執(zhí)行defaultdefault后面的語句。后面的語句。(3) (3) 每一個每一個casecase的常量表達(dá)式的值必須互不相同,的常量表達(dá)式的值必須互不相同,否則就否則就 會出現(xiàn)互相矛盾的現(xiàn)象(對表達(dá)式會出現(xiàn)互相矛盾的現(xiàn)象(對表達(dá)式的同一個值,有兩種或多種執(zhí)行方案)。的同一個值,有兩種或多種執(zhí)行方案)。 5.4 switch語句 (4) 各個各個case和和default的出現(xiàn)次序不影響執(zhí)行結(jié)的出現(xiàn)次序不影響執(zhí)行結(jié) 果。例如,可以先出現(xiàn)果。例如,可以先出現(xiàn)“default:”,再出現(xiàn),再出現(xiàn) “case :”,然后是,然后是“ca
19、se:”。(5) 執(zhí)行完一個執(zhí)行完一個case后面的語句后,流程控制轉(zhuǎn)移到后面的語句后,流程控制轉(zhuǎn)移到下一下一 個個case繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。“case常量表達(dá)式常量表達(dá)式”只是起只是起語句標(biāo)號作用,并不是在條件判斷。在執(zhí)行語句標(biāo)號作用,并不是在條件判斷。在執(zhí)行 switch語句時,根據(jù)語句時,根據(jù)switch后面表達(dá)式的值后面表達(dá)式的值 找到匹配的找到匹配的入口標(biāo)號,就從此標(biāo)號開始執(zhí)行下去,不再進(jìn)行判入口標(biāo)號,就從此標(biāo)號開始執(zhí)行下去,不再進(jìn)行判斷。斷。應(yīng)該在執(zhí)行一個應(yīng)該在執(zhí)行一個case分支后分支后,可以用一個可以用一個 break語句來終止語句來終止switch語句的執(zhí)行。語句的執(zhí)行。
20、(6) 多個可以共用一組執(zhí)行語句。多個可以共用一組執(zhí)行語句。 5.5 程序舉例例例5 55 5 寫程序,判斷某一年是否閏年。用下圖來表示判斷閏年的算法。 5.5 程序舉例 #include #include void main()void main()intint year, leap; year, leap; scanf(%d,&year); scanf(%d,&year); if (year%4=0) if (year%4=0)if (year%100=0)if (year%100=0) if (year%400=0) leap=1; if (year%400=0) lea
21、p=1; else leap=0; else leap=0; else leap=1; else leap=1; else leap=0; else leap=0; if (leap) printf(%dif (leap) printf(%d is ,year); is ,year); else printf(%d else printf(%d is not ,year); is not ,year); printf(a printf(a leap year.n); leap year.n);(?。?; (?。?; (!); ; 運(yùn)行情況: . . 5.5 程序舉例 例例5 56 6 求方程的
22、解。求方程的解?;镜乃惴ǎ夯镜乃惴ǎ?,不是二次方程。,不是二次方程。 ,有兩個相等實(shí)根。,有兩個相等實(shí)根。 ,有兩個不等實(shí)根。,有兩個不等實(shí)根。 ,有兩個共軛復(fù)根。,有兩個共軛復(fù)根。 5.5 程序舉例 #include #include void main ( ) float a,b,c,disc,x1,x2,realpart,imagpart; scanf(%f,%f,%f,&a,&b,&c); printf(the equation ); if(fabs(a)=1e-6)printf(is not a quadraticn); else disc=b*b-4*a*c; if(fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(has distinct real roots:%8.4f and %8.4fn,x1,x2); elserealpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(has complex rootsn); printf(%8.4f+%8.4fin,real
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年西安城市建設(shè)職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 2025年滬科版必修3生物上冊階段測試試卷含答案
- 2025年湘教版九年級科學(xué)下冊月考試卷
- 2025年滬教版七年級化學(xué)上冊階段測試試卷含答案
- 2024消防分包專業(yè)合同范本
- 2025年人教版(2024)九年級化學(xué)上冊階段測試試卷含答案
- 二零二五年金融衍生品交易合同參考2篇
- 2025年外研銜接版共同必修2物理下冊階段測試試卷含答案
- 2025年人教版選修2地理下冊階段測試試卷含答案
- 個人與個人之間2024年度健身器材購銷合同3篇
- 農(nóng)村開荒土地承包權(quán)轉(zhuǎn)讓協(xié)議書
- 牙科門診病歷
- 2023年小學(xué)科學(xué)教研組教研工作總結(jié)(5篇)
- 三年級上冊遞等式計算練習(xí)300題及答案
- 政治畫像品德操守自我評價3篇
- 奶茶督導(dǎo)述職報告
- 山東萊陽核電項目一期工程水土保持方案
- 白熊效應(yīng)(修訂版)
- 視頻監(jiān)控維保項目投標(biāo)方案(技術(shù)標(biāo))
- 社會組織能力建設(shè)培訓(xùn)
- 立項報告蓋章要求
評論
0/150
提交評論