版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第4章 選擇結(jié)構(gòu)程序設(shè)計(jì),4.1 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 4.2 邏輯運(yùn)算符和邏輯表達(dá)式 4.3 if語句 4.4 switch語句 4.5 選擇程序設(shè)計(jì)實(shí)例,關(guān)系運(yùn)算符,1.關(guān)系運(yùn)算符的運(yùn)算對象、規(guī)則與結(jié)果、結(jié)合性如下表所示:,2.關(guān)系運(yùn)算符的優(yōu)先級, 算術(shù)運(yùn)算符 優(yōu)先于 關(guān)系運(yùn)算符 ,= 優(yōu)先于 ,! ,= 同級,結(jié)合性是自左向右 ,!同級,結(jié)合性是自左向右,3.關(guān)系運(yùn)算符的使用實(shí)例,設(shè)變量定義如下: char c1a,c2A; (c1,c2可看成整型,其值為97,65),int n165,n297; float f10.3E1,f23.0001;,則: c1c2,n1n2,f1f2的值依
2、次是 1.,0,0 c1n1,c2n2,c1n2的值依次是 1,0,1 f1c1,f2c2,f1n162的值依次是 0,1,1, c1c21c2n1n2f1!f2的值是 1,關(guān)系表達(dá)式,用關(guān)系運(yùn)算符將兩個表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式、邏輯表達(dá)式、字符表達(dá)式)連接起來的式子,稱關(guān)系表達(dá)式。 例如,下面都是合法的關(guān)系表達(dá)式: ab,abbc,(a=3)(b=5), ab,(ab)(bc),關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”。 例如, 關(guān)系表達(dá)式“5=3”的值為“假”,“5=0”的值為“真”。 C語言沒有邏輯型數(shù)據(jù),以1代表“真”,以“0”代表“假”。 例如,a=3,b=2,c=1
3、,則: 關(guān)系表達(dá)式“ab”的值為“真”,表達(dá)式的值為1。 關(guān)系表達(dá)式“(ab)=c”的值為“真”(因?yàn)閍b的值為1,等于c的值),表達(dá)式的值為1。 關(guān)系表達(dá)式“bca”的值為“假”,表達(dá)式的值為0。,如果有以下賦值表達(dá)式: d=ab d的值為1。 f=abc f的值為0 (因?yàn)椤啊边\(yùn)算符是自左至右的結(jié)合方向,先執(zhí)行“ab”得值為1, 再執(zhí)行關(guān)系運(yùn)算“1c”,得值0,賦給f)。,邏輯運(yùn)算符,邏輯運(yùn)算符是對兩個關(guān)系式或邏輯值進(jìn)行運(yùn)算的,運(yùn)算結(jié) 果仍是邏輯值。,在C語言中,邏輯值用數(shù)值非0和0來表示邏輯真和假的, 所以邏輯運(yùn)算符也可以對兩個數(shù)值型數(shù)據(jù)進(jìn)行運(yùn)算,包括 整型、實(shí)型、字符型等數(shù)據(jù)。,1.邏
4、輯運(yùn)算符,2.運(yùn)算規(guī)則,3.邏輯運(yùn)算符的優(yōu)先級, !優(yōu)先于雙目算術(shù)運(yùn)算符 優(yōu)先于 關(guān)系運(yùn)算符 優(yōu)先于 scanf (“%f,%f”, ,運(yùn)行情況如下: 3.6,3.2 3.20,3.60,例41 設(shè)計(jì)程序,劃分學(xué)生的成績優(yōu),良,及格,不及格,輸入成績,輸出等級。 #include stdio.h main() int score; char grade; scanf(%d, ,例42 輸入三個整數(shù),按從小到大的順序輸出。 #include stdio.h main() int a,b,c,t; scanf(%d %d %d, ,2. 嵌套的if語句,在 if()語句1 else 語句2 中,其
5、中語句1,語句2本身又 可以是if語句,從而構(gòu)成了嵌套的if語句。C規(guī)定,else 也必 須與最近的if相匹配。,例1: if ( ) if ( ) 語句 1; else 語句 2; else if ( ) 語句3 ;,有以下幾個程序,請判斷哪個是正確的?,程序1:,main() int x,y; scanf(“%d”, ,程序2:將上面程序的if語句(第46行)改為:,if (x=0) if (x0) y=1; else y=0; else y=1;,程序3:將上述if語句改為:,y=1; if (x!0) if (x0) y=1; else y=0;,程序4:,y0; if (x=0) i
6、f (x0) y=1; else y=1;,只有程序1和程序2是正確的,switch 語句,1switch的一般形式:,switch(表達(dá)式) case常量表達(dá)式1:語句 1 case常量表達(dá)式2:語句 2 : : case常量表達(dá)式n:語句 n default:語句 n1 ,例44 根據(jù)輸入的百分制成績,轉(zhuǎn)換成相應(yīng)的等級。 #include stdio.h main() int score,mark; printf(請輸入成績n); scanf(%d,case 5: case 4: case 3: case 2: case 1: case 0: printf(%d-En,score);bre
7、ak; ,2關(guān)于switch的說明:,(1)switch后面括弧內(nèi)的“表達(dá)式”,ANSI標(biāo)準(zhǔn)允許它為任 何類型。,(2)當(dāng)表達(dá)式的值與某一個case后面的常量表達(dá)式的值相等 時(shí),就執(zhí)行此case后面的語句,若所有的 case中的常量 表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行default 后面的語句。,(3)每一個case的常量表達(dá)式的值必須互不相同,否則就會出 現(xiàn)互相矛盾的現(xiàn)象。,(4)各個case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。,(5)執(zhí)行完一個case后面的語句后,流程控制轉(zhuǎn)移到下一個 case繼續(xù)執(zhí)行。“case常量表達(dá)式”只是起語句標(biāo)號作用, 并不是在該處進(jìn)行條件判斷。在
8、執(zhí)行switch語句時(shí),根 據(jù)switch后面表達(dá)式的值找到匹配的入口標(biāo)號,就從此 標(biāo)號開始執(zhí)行下去,不再進(jìn)行判斷。因此,應(yīng)該在執(zhí)行 一個case分支后,使流程跳出switch結(jié)構(gòu),即終止 switch語句的執(zhí)行??梢杂靡粋€break語句來達(dá)到此目 的。,選擇結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中的三種基本結(jié)構(gòu)之一。 在大多數(shù)程序中都會包含選擇結(jié)構(gòu)。它的作用是,根據(jù)所指定的條件是否滿足,決定從給定的兩組或多組操作選擇其一。,選擇程序設(shè)計(jì)舉例,寫程序,判斷某一年是否是閏年。以變量leap代表是否閏年的 信息。若閏年,令leap1;非閏年,leap0。最后判斷 leap 是否為1(真),若是,則輸出“閏年”信息。
9、,編寫程序如下: main () int year, leap; scanf (“%d”,else printf(“%d is not ”,year); printf (“a leap year.n”); ,運(yùn)行情況如下: 1989,1989 is not a leap year.,2000,2000 is a leap year.,可以將程序中第513行改寫成以下的if語句,if (year%4!=0) leap=0; else if (year%100!=0) leap=1; else if (year%400!=0) leap=0; else leap=1;,也可以用一個邏輯表達(dá)式包含所
10、有的閏年條件,將上述if語句 用下面的if語句代替: if (year%40,寫程序。運(yùn)輸公司對用戶計(jì)算運(yùn)費(fèi)。路程(s)越遠(yuǎn),每公 里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:,S250km 沒有折扣 250S500 2%折扣 500S1000 5%折扣 1000S2000 8%折扣 2000S3000 10折扣 3000S 15折扣,0,2,4,6,8,10,12,250,500,750,1000,1250,2000,3000,14,16,設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為p,貨物重為w,距離為s,折扣 為d,則總運(yùn)費(fèi)f的計(jì)算公式為 f=p*w*s*(1-d),main() int c,s; float p,w,d,f; scanf (“%f,%f,%d”, else c=s/250 switch(c) case 0:d0;break; case 1:d2;break; case 2: case 3:d5
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年空運(yùn)中介貨物合同
- 2024建設(shè)項(xiàng)目監(jiān)管與服務(wù)協(xié)議一
- 專業(yè)仿真綠植訂購協(xié)議2024版版B版
- 2025年度全國重點(diǎn)工程安全員專項(xiàng)聘用合同3篇
- 2025采礦權(quán)轉(zhuǎn)讓合同示范文本:礦業(yè)權(quán)整合項(xiàng)目3篇
- 2024建設(shè)工程合同講義
- 專業(yè)婚介機(jī)構(gòu)服務(wù)合同2024版版B版
- 2024年食品原材料長期供應(yīng)合同3篇
- 2025年玻璃幕墻工程勞務(wù)分包及售后服務(wù)協(xié)議3篇
- 2024攝影工作室產(chǎn)品攝影及電商平臺推廣合作合同3篇
- 教育管理學(xué)課件-管理、教育管理和教育管理學(xué)之概述
- 酒店住宿投標(biāo)書
- 東方電影學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 某27層高層住宅樓施工組織設(shè)計(jì)方案
- 安徽省安慶市迎江區(qū)2023-2024學(xué)年四年級上學(xué)期期末數(shù)學(xué)試卷
- 護(hù)理教學(xué)基本方法與技巧
- 銘心集團(tuán)校企合作訂單班實(shí)施方案
- 名師工作室考核評價(jià)表.doc
- 長廊工程施工計(jì)劃方案
- 大地構(gòu)造分區(qū)重點(diǎn)講義
- 課程銜接理論的研究梳理與應(yīng)用前瞻
評論
0/150
提交評論