第4章 選擇結構程序設計_第1頁
第4章 選擇結構程序設計_第2頁
第4章 選擇結構程序設計_第3頁
第4章 選擇結構程序設計_第4頁
第4章 選擇結構程序設計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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條件運算符的格式:條件運算符的格式: 變量變量=表達式表達式1?表達式表達式2:表達式:表達式3; 執(zhí)行過程:當表達式執(zhí)行過程:當表達式1的值為的值為“真真”時,取表達式時,取表達式2的值

8、賦給變量;當表達式的值賦給變量;當表達式1的值為的值為“假假”時,取時,取表達式表達式3的值賦給變量。的值賦給變量。 即:無論表達式即:無論表達式1為為“真真”還是為還是為“假假”,都執(zhí)行一個賦值語句且給同一個變量賦值。可以看出,都執(zhí)行一個賦值語句且給同一個變量賦值。可以看出,用條件運算符用條件運算符“?:?:”的功能,可以實現(xiàn)的功能,可以實現(xiàn)if 語句的第語句的第2種格式。種格式。4.3.3 條件運算符(?條件運算符(? :):)15目錄頁4.3 條件語句第4章 2分析:分析: “表達式表達式3”又是一個條件表達式,因條件表達式其結合性為又是一個條件表達式,因條件表達式其結合性為“從右到左從

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

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

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

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

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

14、2月月28天天 打印結果打印結果printf(“n days =%dn”,days); 20目錄頁4.4 多分支語句第4章程序代碼程序代碼(見教材(見教材72頁)頁)運行結果圖運行結果圖 21目錄頁4.4 多分支語句第4章 【例【例4.6】計算手機話費。神州行用戶月租費】計算手機話費。神州行用戶月租費30元,話費每分鐘元,話費每分鐘0.22元,全球通用戶無元,全球通用戶無月租費,話費每分鐘月租費,話費每分鐘0. 6元。要求輸入一個月大約通話時間,分別計算出兩種方式的費用,元。要求輸入一個月大約通話時間,分別計算出兩種方式的費用,判斷出使用哪一種最合適。判斷出使用哪一種最合適。 分析:用大約總通

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

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

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

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

19、 cx; /*定義乘車的車型變量定義乘車的車型變量cx */ float gl, cf; /*定義行車公里數(shù)變量定義行車公里數(shù)變量gl、應付車資變量、應付車資變量cf */ printf(nt出租車收費出租車收費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.

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論