《C語言程序設計》 課件 第3章 選擇結構程序設計_第1頁
《C語言程序設計》 課件 第3章 選擇結構程序設計_第2頁
《C語言程序設計》 課件 第3章 選擇結構程序設計_第3頁
《C語言程序設計》 課件 第3章 選擇結構程序設計_第4頁
《C語言程序設計》 課件 第3章 選擇結構程序設計_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第3章選擇結構程序設計信息工程學院主講人:XXX內容提要41選擇結構程序舉例2選擇結構和條件判斷423if語句實現選擇結構42選擇結構的嵌套425switch語句多分支選擇結構24443.1選擇結構程序舉例實際的生活中往往存在選擇分支的情況,一般來說,像拋硬幣之類的事件存在著正面和反面兩個分支,像選擇出行路徑之類的事件,往往存在多個分支,分支的不同將決定程序的不同行為表現。在C語言中,存在著兩種選擇語句:(1)if語句。if語句主要應用在判斷條件為一個區間,一般為兩個分支的程序選擇中。(2)switch語句。switch語句主要應用在判別條件為具體值時,常用在具有多個分支的程序選擇中。上面兩個語句都是應用選擇程序結構,后面章節將從簡單的開始,先介紹兩個選擇分支的if語句,再從雙分支程序進行擴展,介紹多個選擇分支的switch語句。3.1選擇結構程序舉例【例3.1】從一元二次方程的求根計算過程,演示選擇程序如何解決實際問題。

要求:編程序求解一元二次方程的根,若無實根則打印說明。

分析:如果要求一元二次方程

的根,則需要判斷

的值,如果

則有實根,如果

則沒有實根,然后再根據求根公式進行計算。

算法流程:(1)獲得鍵盤輸入,得到三個系數a,b,c;(2)計算判斷條件

,若判斷條件

,跳轉到步驟(3),若判斷條件

,跳轉到步驟(4);(3)打印該二元一次方程沒有實根;(4)進行求根公式計算,輸出一元二次方程的實根。3.1選擇結構程序舉例編寫程序:3.2選擇結構和條件判斷一個選擇結構將伴隨著多個分支,這些分支代表著程序的執行在不同條件下表現出不同的行為。假設一個程序需要輸出一個數的絕對值,可以得到如下的算法步驟。步驟一:從程序外輸入整數X步驟二:判斷輸入的整數X是否小于0若小于0執行步驟三否則執行步驟四步驟三:返回-X步驟四:返回X3.2選擇結構和條件判斷代碼實現:3.2選擇結構和條件判斷如上代碼所示,條件判斷對應的代碼為: if(x<0)其雙分支為: if(x<0) return-x; else returnx;當x<0的條件為真,則返回-x,條件為假,則返回x。3.3if語句實現條件判斷-3.3.1if語句處理選擇結構舉例【例3.2】明天不下雨就去郊游(條件為不下雨)算法的步驟:步驟一:獲取天氣輸入,將輸入進來的字符串保存在str_weather變量中;步驟二:判斷str_weather是否不等于“rainday”,若為真則執行步驟三,否則不執行任何操作。

步驟三:打印明天去郊游:Goforanoutingtomorrow!3.3.1if語句處理選擇結構舉例編寫代碼:3.3.1if語句處理選擇結構舉例例3.2中if語句的執行順序流程如下圖3-2:開關型if圖3-2開關型if3.3.1if語句處理選擇結構舉例if語句的三種應用與程序流程圖:簡化的if語句if-else雙分支語句if-else-if雙分支語句3.3.2簡單的if結構if語句的最簡單形式 if(表達式)語句1【例3.3】考試分數低于60分為不及格(條件為分數大小)。3.3.3if-else語句結構if-else分支結構形式 if(表達式)語句1[else語句2]【例3.4】考試分數低于60分為不及格,大于或等于60分為及格(條件以分數超過60為界)。3.3.4if-else-if語句結構【例3.5】考試分數小于60分為不及格,大于或等于60分小于70分為合格,大于或等于70分小于80分為良好,大于80分為優秀(條件為分數大小)這是一個擁有多重判斷條件的問題,思路分析如下:(1)對于分數的評價是與分數的區間有關(2)分數區間的邊界為具體的某個整數(3)分數區間具有左關右開的特征,具體為:[0,60),[60,70),[70,80),[80,100]根據上面的三點,可以理清程序的二分設計思路步驟一:選擇某個數值進行判斷步驟二:將這個數值左邊的視為某一個評價區間,右邊的為多個區間進行混合,重復步驟一、二,最終將分數區間進行判斷。3.3.4if-else-if語句結構編寫代碼:3.4選擇結構的嵌套-3.4.2嵌套if語句與程序流程圖if語句的嵌套。具體的代碼模式如下:if(<!--判斷條件1-->)//外層if{ if(<!--判斷條件2-->)//內層if {/*判斷條件2為真*/} else {/*判斷條件2為假*/}

if(<!--判斷條件3-->)//內層if {/*判斷條件3為真*/} else {/*判斷條件3為假*/}}else{...}3.4.2嵌套if語句與程序流程圖圖3-5:if語句嵌套流程圖3.4.2if語句的嵌套應用【例3.6】比較復雜的行李托運情景:

低于20公斤的行李免托運費,高于20公斤低于40公斤部分收1.5元/公斤,高于40公斤部分則按2.0元/公斤(條件為行李重量)

會員托運消費打八折(條件為會員身份)定義算法步驟:步驟一:獲得用戶輸入的行李重量,保存在整型變量weight中步驟二:創建運費計量變量money,使用整型類型聲明步驟三:創建會員身份標識vip,使用整形類型聲明(1為會員,0不為會員)步驟四:獲取用戶輸入行李重量以及會員身份標識步驟五:判斷weight是否高于20,若為否執行步驟六,否則執行步驟十一步驟六:判斷(weight-20)是否高于20,若為是,執行步驟七,否則執行步驟八步驟七:計算20與1.5的乘積加上(weight-40)與2的乘積并將結果賦值給money步驟八:計算(weight-20)與1.5的乘積并將結果賦值給money步驟九:判斷vip值是否等于1,是執行步驟十,否則執行步驟十一步驟十:計算money與0.8的乘積并將結果賦值給money步驟十一:打印所需要的運費

3.4.2if語句的嵌套應用編寫代碼:

3.4.2if語句的嵌套應用針對上面的結果做簡單的驗證,由于是vip會員身份,可以得到下列的計算公式代入數值為

可以驗算計算結果的正確性。

注意:在這里涉及到整型與浮點數的數據類型的轉換,在c語言中要聲明一個常量的數據類型可以在常量后面加上數據類型相關的縮寫,例如:2.f(單精度常量),123456789012345L(長整形常量)。同時if語句的嵌套特性決定了if語句可以進行多重嵌套,但是在實際應用場景中,應該注意設計程序算法流程,在能夠使用if-else-if解決問題的時候,不建議使用if語句的嵌套,以提高代碼的可讀性。

3.5switch語句實現多分支選擇結構由于在邏輯結構上,分支的形式不止雙分支。在C語言中可以通過switch關鍵字進行多分支結構的實現。例如,監控用戶的輸入,如果輸入為大寫’A’,’B’,’C’則替換為小寫,否則直接返回。

3.5.1多分支結構一般形式switch語句的一般形式如下:switch(表達式){ case常量1:語句1 case常量2:語句2 case常量3:語句3 ……… case常量n:語句n default:語句n+1}3.5.1多分支結構一般形式switch語句的一般形式如下:switch(表達式){ case常量1:語句1 case常量2:語句2 case常量3:語句3 ……… case常量n:語句n default:語句n+1}3.5.1多分支結構一般形式(5)每個case后面的常量必須互不相同,否則會出現矛盾的現象(同值不同的入口沖突)。(6)case標號只起標記作用,在執行switch語句時,根據switch表達式的值找到入口,在執行一個case語句后會順序執行下去,直到遇到break語句跳出順序執行。(7)在case語句中如果包含了一個以上的執行語句,可不必加花括號,程序執行的時候會順序執行。當然加花括號括起來也不會有影響。(8)多個case語句可以共用一個執行語句,例如:case‘A’:case‘B’:case‘C’:b++;3.5.1多分支結構一般形式使用switch應注意以下問題:要注意以下幾點switch括號內的“表達式”,應該為整形(包括字符型)。(2)switch下面的花括號是一個復合語句。意味著包含若干語句,它是switch語句的語句體。語句體內包括多個以關鍵字case開頭的語句行和一個以default開頭的語句行,case后面跟著一個常量或常量表達式,在表達式后面需要跟一個冒號。如case’A’:,case0:等。(3)switch語句執行的時候,先計算括號內表達的值,將這個值與case后面的常量作匹配,如果匹配成功,則進入該case所表3.5.2多分支語句的實際應用示的分支。(4)如果沒有與任何case后面的常量相匹配,則執行default后面的(n+1)語句。可以沒有default標號及后面的(n+1)語句,此時如果沒有與任何case后面的常量相匹配,則不執行任何語句。3.5.2多分支語句的實際應用在前面的章節中曾經用if語句介紹過成績分段評價的例子,以下程序的目的是輸入一個成績然后判斷該成績的區間段位。由于成績的分段之間不存在層級的邏輯關系,同時分段為多段分段,可以采用多分支結構來編程。if語句適合于區間分段,而switch只適合以點分段。但仔細觀察分數分段的結構[0,60),[60,70),[70,80),[80,100],會發現分段的邊界都是10的整數倍,利用整數除法的性質做歸一化處理,得出判斷表達式以及入口常量。3.5.2多分支語句的實際應用【例3.7】下面是使用switch解決問題的代碼:本章小結本節闡述了選擇結構控制語句:if、if-else、if-else和switch語句的具體用法。

1.在if語句中,應該注意if語句中的表達式可以為所有的合法的表達式。

例如:

inta=1;

if(a=0)printf(“Yes

溫馨提示

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

評論

0/150

提交評論