第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)_第1頁
第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)_第2頁
第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)_第3頁
第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)_第4頁
第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1目錄頁選擇結(jié)構(gòu)程序設(shè)計(jì)第4章n 條件表達(dá)式n if語句n switch語句n 選擇結(jié)構(gòu)程序設(shè)計(jì)本章本章要點(diǎn)要點(diǎn)2目錄頁4.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式第4章 1 1關(guān)系運(yùn)算符關(guān)系運(yùn)算符 所謂“關(guān)系運(yùn)算”實(shí)際上就是“比較運(yùn)算”,即將兩個(gè)數(shù)據(jù)進(jìn)行比較,判定兩個(gè)數(shù)據(jù)是否符合給定的關(guān)系。 關(guān)系運(yùn)算符均為二目運(yùn)算符,共有以下6種:4.1.1 關(guān)系運(yùn)算符及其優(yōu)先次序關(guān)系運(yùn)算符及其優(yōu)先次序 n 大于大于n= 大于或等于大于或等于nc-6;(a=3)=b;(ab)=(bc); 2關(guān)系表達(dá)式的值關(guān)系表達(dá)式的值邏輯值(邏輯值(“真真”或或“假假”) 由于語言沒有邏輯型數(shù)據(jù),所以,用整數(shù)由于語言沒有邏輯型數(shù)據(jù),所以

2、,用整數(shù)“”表示表示“邏輯真邏輯真”,用整數(shù),用整數(shù)“0”表示表示“邏輯邏輯假假”。4.1.2 關(guān)系表達(dá)式關(guān)系表達(dá)式5目錄頁4.2 邏輯運(yùn)算符和邏輯表達(dá)式第4章 邏輯運(yùn)算符邏輯運(yùn)算符 C語言提供語言提供3種邏輯運(yùn)算符:種邏輯運(yùn)算符:4.2.1 邏輯運(yùn)算符及其優(yōu)先順序邏輯運(yùn)算符及其優(yōu)先順序n & 邏輯與(相當(dāng)于邏輯與(相當(dāng)于“同時(shí)同時(shí)”)n | 邏輯或(相當(dāng)于邏輯或(相當(dāng)于“或者或者”)n ! 邏輯非(相當(dāng)于邏輯非(相當(dāng)于“否定否定”)6目錄頁4.2 邏輯運(yùn)算符和邏輯表達(dá)式第4章 2邏輯運(yùn)算符的運(yùn)算優(yōu)先級邏輯運(yùn)算符的運(yùn)算優(yōu)先級 (1)在邏輯運(yùn)算符中,邏輯非!的優(yōu)先級最高,邏輯與)在邏輯運(yùn)算符中,

3、邏輯非!的優(yōu)先級最高,邏輯與&次之,邏輯或次之,邏輯或|最低。最低。 (2)與其它種類運(yùn)算符的優(yōu)先關(guān)系)與其它種類運(yùn)算符的優(yōu)先關(guān)系4.2.1 邏輯運(yùn)算符及其優(yōu)先順序邏輯運(yùn)算符及其優(yōu)先順序?。ǚ牵。ǚ牵?算術(shù)運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符&和和 | 賦值運(yùn)算符賦值運(yùn)算符7目錄頁4.2 邏輯運(yùn)算符和邏輯表達(dá)式第4章 1邏輯表達(dá)式的概念邏輯表達(dá)式的概念 所謂邏輯表達(dá)式是指,用邏輯運(yùn)算符將所謂邏輯表達(dá)式是指,用邏輯運(yùn)算符將1個(gè)或多個(gè)表達(dá)式連接起來,進(jìn)行邏輯運(yùn)算的式子。在個(gè)或多個(gè)表達(dá)式連接起來,進(jìn)行邏輯運(yùn)算的式子。在C語言中,可以用邏輯表達(dá)式表示多個(gè)條件的組合。語言中,可以用邏輯表達(dá)式表示多個(gè)條

4、件的組合。 例如,例如,(a+b)&(cy) printf(%d,x); 如果如果xy為真,則打印為真,則打印x的值,否則執(zhí)行下面的語句。的值,否則執(zhí)行下面的語句。4.3.1 if語句的三種形式語句的三種形式9目錄頁4.3 條件語句第4章 2. 第二種形式第二種形式: 雙分支雙分支if語句語句 格式:格式: if(表達(dá)式)(表達(dá)式) 語句語句1; else 語句語句2; 功能:首先判斷表達(dá)式的值,若表達(dá)式的值為功能:首先判斷表達(dá)式的值,若表達(dá)式的值為“真真”(非(非0),則執(zhí)行語句),則執(zhí)行語句1;否則,執(zhí)行語;否則,執(zhí)行語句句2。其流程圖如圖。其流程圖如圖4-1(b)所示。)所示。 例如:例

5、如: if(xy) printf(%d,x); else printf(%d,y); 4.3.1 if語句的三種形式語句的三種形式10目錄頁4.3 條件語句第4章 3 第三種形式:多分支第三種形式:多分支if語句語句 格式:格式: if(表達(dá)式(表達(dá)式1)語句)語句1; else if(表達(dá)式(表達(dá)式2)語句)語句2; else if(表達(dá)式(表達(dá)式n)語句)語句n; else 語句語句n+1; 功能:從表達(dá)式功能:從表達(dá)式1的值開始進(jìn)行判斷,當(dāng)出現(xiàn)某個(gè)表達(dá)式的值為真時(shí),則執(zhí)行其對應(yīng)分支的語的值開始進(jìn)行判斷,當(dāng)出現(xiàn)某個(gè)表達(dá)式的值為真時(shí),則執(zhí)行其對應(yīng)分支的語句,然后跳出整個(gè)句,然后跳出整個(gè)if

6、語句,執(zhí)行后續(xù)語句。若所有表達(dá)式的值都為語句,執(zhí)行后續(xù)語句。若所有表達(dá)式的值都為“假假”(為(為0),則執(zhí)行語句),則執(zhí)行語句n+1。4.3.1 if語句的三種形式語句的三種形式11目錄頁4.3 條件語句第4章4.3.1 if語句的三種形式語句的三種形式圖圖4-2 第三種形式第三種形式if語句的流程圖表示語句的流程圖表示 12目錄頁4.3 條件語句第4章 一個(gè)一個(gè)if語句又包含一個(gè)或多個(gè)語句又包含一個(gè)或多個(gè)if語句,稱為語句,稱為if語句的嵌套。在語句的嵌套。在if語句中可以根據(jù)需要,用語句中可以根據(jù)需要,用if語句語句的三種形式進(jìn)行互相嵌套。一般形式如下:的三種形式進(jìn)行互相嵌套。一般形式如下

7、: 1if( ) if( ) 語句語句1 else 語句語句2 else if( ) 語句語句3 else 語句語句4 4.3.2 if語句的嵌套語句的嵌套13目錄頁4.3 條件語句第4章 2if( ) if( ) 語句語句1 內(nèi)嵌內(nèi)嵌if單分支單分支 else if( ) 語句語句2 else 語句語句34.3.2 if語句的嵌套語句的嵌套14目錄頁4.3 條件語句第4章 1條件運(yùn)算符的格式:條件運(yùn)算符的格式: 變量變量=表達(dá)式表達(dá)式1?表達(dá)式表達(dá)式2:表達(dá)式:表達(dá)式3; 執(zhí)行過程:當(dāng)表達(dá)式執(zhí)行過程:當(dāng)表達(dá)式1的值為的值為“真真”時(shí),取表達(dá)式時(shí),取表達(dá)式2的值賦給變量;當(dāng)表達(dá)式的值賦給變量;

8、當(dāng)表達(dá)式1的值為的值為“假假”時(shí),取時(shí),取表達(dá)式表達(dá)式3的值賦給變量。的值賦給變量。 即:無論表達(dá)式即:無論表達(dá)式1為為“真真”還是為還是為“假假”,都執(zhí)行一個(gè)賦值語句且給同一個(gè)變量賦值。可以看出,都執(zhí)行一個(gè)賦值語句且給同一個(gè)變量賦值??梢钥闯?,用條件運(yùn)算符用條件運(yùn)算符“?:?:”的功能,可以實(shí)現(xiàn)的功能,可以實(shí)現(xiàn)if 語句的第語句的第2種格式。種格式。4.3.3 條件運(yùn)算符條件運(yùn)算符(?(? :):)15目錄頁4.3 條件語句第4章 2分析:分析: “表達(dá)式表達(dá)式3”又是一個(gè)條件表達(dá)式,因條件表達(dá)式其結(jié)合性為又是一個(gè)條件表達(dá)式,因條件表達(dá)式其結(jié)合性為“從右到左從右到左”,所以,應(yīng)該先計(jì),所以,

9、應(yīng)該先計(jì)算右邊的表達(dá)式算右邊的表達(dá)式3,公式相當(dāng)于:,公式相當(dāng)于: q=wx?w:(yz?y:z); 執(zhí)行步驟如下:執(zhí)行步驟如下: 表達(dá)式表達(dá)式y(tǒng)z?y:z,因?yàn)?,因?yàn)閥x?w:3;因?yàn)?;因?yàn)閣x 的值為的值為“假假”,所以取,所以取3賦值給變量賦值給變量q。 運(yùn)行結(jié)果:運(yùn)行結(jié)果:q=34.3.3 條件運(yùn)算符條件運(yùn)算符(?(? :):)16目錄頁4.4 多分支語句第4章 if語句一般適用于兩個(gè)分支的情況,即在兩個(gè)分支中選擇其中一個(gè)執(zhí)行。盡管可以通過語句一般適用于兩個(gè)分支的情況,即在兩個(gè)分支中選擇其中一個(gè)執(zhí)行。盡管可以通過if語句語句的嵌套形式來實(shí)現(xiàn)多路選擇的目的,但這樣做的結(jié)果使得的嵌套形式來

10、實(shí)現(xiàn)多路選擇的目的,但這樣做的結(jié)果使得if語句的嵌套層次太多,降低了程序的語句的嵌套層次太多,降低了程序的可讀性??勺x性。C語言中的語言中的switch語句,提供了更方便地進(jìn)行多路選擇的功能語句,提供了更方便地進(jìn)行多路選擇的功能。 一般形式一般形式: switch(表達(dá)式)(表達(dá)式) case 常量表達(dá)式常量表達(dá)式1:語句語句1;break; case 常量表達(dá)式常量表達(dá)式2:語句語句2;break; case 常量表達(dá)式常量表達(dá)式n:語句語句n;break; default:語句語句n+1; 17目錄頁4.4 多分支語句第4章 執(zhí)行過程:首先計(jì)算執(zhí)行過程:首先計(jì)算switch后面圓括號內(nèi)表達(dá)

11、式的值,若此值等于某個(gè)后面圓括號內(nèi)表達(dá)式的值,若此值等于某個(gè)case后面的常量表達(dá)式后面的常量表達(dá)式的值,則轉(zhuǎn)向該的值,則轉(zhuǎn)向該case后面的語句去執(zhí)行;若表達(dá)式的值不等于任何后面的語句去執(zhí)行;若表達(dá)式的值不等于任何case后面的常量表達(dá)式的值,后面的常量表達(dá)式的值,則轉(zhuǎn)向則轉(zhuǎn)向default后面的語句去執(zhí)行;如果沒有后面的語句去執(zhí)行;如果沒有default部分,則將不執(zhí)行部分,則將不執(zhí)行switch語句中的任何語句,語句中的任何語句,直接轉(zhuǎn)到直接轉(zhuǎn)到switch語句后面的語句去執(zhí)行。其流程圖如圖語句后面的語句去執(zhí)行。其流程圖如圖4-3所示。所示。18目錄頁4.4 多分支語句第4章 【例【例4

12、.5】輸入某年某月,計(jì)算出該月的的天數(shù)?!枯斎肽衬昴吃?,計(jì)算出該月的的天數(shù)。 分析:利用分析:利用switch語句多個(gè)語句多個(gè)case的后面可以共用一組執(zhí)行語句的規(guī)定來簡化本程序。的后面可以共用一組執(zhí)行語句的規(guī)定來簡化本程序。 判斷閏年的條件是:判斷閏年的條件是: 某年能被某年能被4整除、但不能被整除、但不能被100整除,或者能被整除,或者能被400整除,條件為真整除,條件為真2月是閏年月是閏年29天,否則,非天,否則,非閏年閏年28天。一般用取余來判斷某數(shù)能否被某數(shù)整除。天。一般用取余來判斷某數(shù)能否被某數(shù)整除。 條件表達(dá)式條件表達(dá)式((year%4=0 and year%100!=0)或)或

13、 (year%400=0)為真是閏年,否則非閏年。為真是閏年,否則非閏年。19目錄頁4.4 多分支語句第4章程序思路與框架:程序思路與框架: main() 定義變量定義變量year,month; 輸入年,月輸入年,月scanf(%d%d”,&year,&month); switch(month) 1,3,5, 7, 8, 10,12月共用一個(gè)語句月共用一個(gè)語句days=31;break;; 4,6,9,11月共用一條語句月共用一條語句days=30;break; 2月進(jìn)行判斷是否閏年,閏年月進(jìn)行判斷是否閏年,閏年2月月29天,非閏年天,非閏年2月月28天天 打印結(jié)果打印結(jié)果printf(“n

14、days =%dn”,days); 20目錄頁4.4 多分支語句第4章程序代碼程序代碼(見教材(見教材72頁)頁)運(yùn)行結(jié)果圖運(yùn)行結(jié)果圖 21目錄頁4.4 多分支語句第4章 【例【例4.6】計(jì)算手機(jī)話費(fèi)。神州行用戶月租費(fèi)】計(jì)算手機(jī)話費(fèi)。神州行用戶月租費(fèi)30元,話費(fèi)每分鐘元,話費(fèi)每分鐘0.22元,全球通用戶無元,全球通用戶無月租費(fèi),話費(fèi)每分鐘月租費(fèi),話費(fèi)每分鐘0. 6元。要求輸入一個(gè)月大約通話時(shí)間,分別計(jì)算出兩種方式的費(fèi)用,元。要求輸入一個(gè)月大約通話時(shí)間,分別計(jì)算出兩種方式的費(fèi)用,判斷出使用哪一種最合適。判斷出使用哪一種最合適。 分析:用大約總通話時(shí)間分別計(jì)算出兩種不同的收費(fèi)標(biāo)準(zhǔn),神州行用變量分析

15、:用大約總通話時(shí)間分別計(jì)算出兩種不同的收費(fèi)標(biāo)準(zhǔn),神州行用變量x代替代替, 全球全球通用變量通用變量y代替,用分支語句判斷哪種數(shù)值小,即價(jià)位低的就建議采用。代替,用分支語句判斷哪種數(shù)值小,即價(jià)位低的就建議采用。22目錄頁4.4 多分支語句第4章程序代碼:程序代碼:#include main() float a,x,y; printf(n請您輸入一個(gè)月大約通話總時(shí)數(shù):請您輸入一個(gè)月大約通話總時(shí)數(shù):); scanf(%f,&a); /*輸入大約通話總時(shí)數(shù)輸入大約通話總時(shí)數(shù)*/ x=30+0.22*a; /*計(jì)算神州行費(fèi)用計(jì)算神州行費(fèi)用*/ y=0.6*a; /*計(jì)算全球通費(fèi)用計(jì)算全球通費(fèi)用*/ pr

16、intf (神州行話費(fèi)為神州行話費(fèi)為: %.2fn,x); printf (全球通話費(fèi)為全球通話費(fèi)為: %.2fn,y); if (xy) /*進(jìn)行條件判斷進(jìn)行條件判斷 */ printf(建議您使用神州行。建議您使用神州行。n); else printf(建議您使用全球通。建議您使用全球通。n);23目錄頁4.4 多分支語句第4章 【例例4.7】某市不同型號的出租車某市不同型號的出租車3公里的起步價(jià)和計(jì)費(fèi)分別為:夏利公里的起步價(jià)和計(jì)費(fèi)分別為:夏利7元元/公里,公里,3公里以外公里以外2.1元元/公里;富康公里;富康8元元/公里,公里,3公里以外公里以外2.4元元/公里;桑塔納公里;桑塔納9元

17、,元,3公里以外公里以外2.7元元/公里。編程:公里。編程:從鍵盤輸入乘車的車型及行車公里數(shù),輸出應(yīng)付車資。從鍵盤輸入乘車的車型及行車公里數(shù),輸出應(yīng)付車資。 分析:可設(shè)三個(gè)變量,分別表示出租車的車型、行車公里數(shù)和應(yīng)付車資,根據(jù)乘車的車型分析:可設(shè)三個(gè)變量,分別表示出租車的車型、行車公里數(shù)和應(yīng)付車資,根據(jù)乘車的車型和行車公里數(shù),計(jì)算出應(yīng)付的車資。和行車公里數(shù),計(jì)算出應(yīng)付的車資。24目錄頁4.4 多分支語句第4章程序思路與框架程序思路與框架:main( )定義乘車的車型定義乘車的車型cx,定義行車公里數(shù)變量定義行車公里數(shù)變量gl、應(yīng)付車資變量、應(yīng)付車資變量cf ;設(shè)計(jì)用菜單提示的方式輸入數(shù)據(jù)設(shè)計(jì)用

18、菜單提示的方式輸入數(shù)據(jù):1-夏利夏利 2-富康富康 3-桑塔納桑塔納輸入車型(輸入車型(1-3): scanf(%d,&cx); 輸入行車公里數(shù)輸入行車公里數(shù): );scanf(%f,&gl);多分支語句多分支語句switch(cx) 1: 夏利車資計(jì)算夏利車資計(jì)算; 2: 富康車資計(jì)算富康車資計(jì)算; 3: 桑塔納車資計(jì)算桑塔納車資計(jì)算; 打印應(yīng)付金額打印應(yīng)付金額printf(nt應(yīng)付車資為應(yīng)付車資為%.1fn,cf);25目錄頁4.4 多分支語句第4章程序代碼:程序代碼:#include main( ) int cx; /*定義乘車的車型變量定義乘車的車型變量cx */ float gl,

19、cf; /*定義行車公里數(shù)變量定義行車公里數(shù)變量gl、應(yīng)付車資變量、應(yīng)付車資變量cf */ printf(nt出租車收費(fèi)出租車收費(fèi)n); printf(t1-夏利夏利n t2-富康富康n t3-桑塔納桑塔納n); printf(t請輸入車型(請輸入車型(1-3): ); scanf(%d,&cx); printf(nt請輸入行車公里數(shù)請輸入行車公里數(shù): ); scanf(%f,&gl); switch(cx) case 1: if(gl=3) cf=7.0; else cf=7+(gl-3)*2.1 ;break; 26目錄頁4.4 多分支語句第4章程序代碼:程序代碼: case 2: if(

20、gl=3) cf=8.0; else cf=8+(gl-3)*2.4 ;break; case 3: if(gl12,x=200+(n-12)*20 (3)外校學(xué)生:)外校學(xué)生: n12,x=600 n12,x=600+(n-12)*6028目錄頁4.4 多分支語句第4章 程序思路與框架程序思路與框架:main() 定義變量定義變量int n,x,number,p; 用菜單方式設(shè)計(jì)輸入提示用菜單方式設(shè)計(jì)輸入提示: 學(xué)生收費(fèi)管理系統(tǒng)學(xué)生收費(fèi)管理系統(tǒng); = = = = = = = = = = = = 1-本校全日制學(xué)生本校全日制學(xué)生 2- 本校夜大學(xué)生本校夜大學(xué)生 3- 外校學(xué)生外校學(xué)生 = = = = = = = = = = = = 請輸入學(xué)生的類別(請輸入學(xué)生的類別(13) 輸入學(xué)生的類別:輸入學(xué)生的類別:scanf(%d,&p); 29目錄頁4.4 多分支語句第4章 程序思路與框架程序思路與框架: 輸入學(xué)生的編號和學(xué)分輸入學(xué)生的編號和學(xué)分:scanf(%d,%d,&number,&n); 用用if條件語句進(jìn)行判斷條件語句進(jìn)行判斷: 如果類型如果類型=1,不收費(fèi);,不收費(fèi); 否則,如果類型否則,如果類型=2,收費(fèi)計(jì)算;,收費(fèi)計(jì)算; 否

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論