




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章選擇結構程序設計4.2if語句4.2if語句4.2.1單分支結構if語句
4.2.2雙分支結構if…else…語句4.2.3多分支結構if…elseif…語句4.2.4if語句的嵌套4.2.1單分支結構if語句
單分支結構if語句,即if語句中條件成立就執行相應的語句,否則不執行。單分支結構if語句的特點:該語句只有條件成立才執行,否則就什么也不做。
4.2.1單分支結構if語句1、單分支結構if語句執行流程如圖4-2-1所示2、單分支結構if語句的一般格式為:if(表達式)語句3、單分支結構if語句的語法含義是:若表達式的值為非0(真),則執行語句;否則不執行該語句而直接執行下一條語句。表達式語句真(非0)假(0)4.2.1單分支結構if語句【例4.1】輸入兩個整數,要求比較其大小并將較大者輸出。#include<stdio.h>voidmain(){inta,b,max;//定義整型變量scanf("%d,%d",&a,&b);//接受用戶鍵盤輸入變量a,b的值max=a;//賦值運算if(max<b) //單分支條件語句max=b;printf("max=%d\n",max);//輸出運算結果}4.2.1單分支結構if語句程序說明:(1)如果表達式(max<b)的值為真,則執行if語句的語句塊,即“max=b;”語句,然后執行控制語句的后續語句;(2)如果表達式的值為假,則不執行if語句控制的語句塊,而直接跳轉執行控制語句的后續語句。4.2.2雙分支結構if…else…語句雙分支結構if…else…語句,即if語句中條件成立,執行緊跟if條件之后的語句,否則執行緊跟else之后的語句。
雙分支結構if…else…語句的特點:
無論條件是否成立,都會執行一條語句。4.2.2雙分支結構if…else…語句1、雙分支結構的if語句,執行流程如圖4-2-2所示2、雙分支結構的if語句的一般格式為:if(表達式)語句1else語句23、雙分支結構的if語句的語法含義是:如果表達式的值為非0(真),則執行語句1,否則執行語句2。4.2.2雙分支結構if…else…語句【例4.2】輸入一個數,求該數的絕對值。#include<stdio.h>voidmain(){intx;scanf("%d",&x);if(x>=0)printf("|x|=%d\n",x);elseprintf("|x|=%d\n",-x);}程序運行結果:-5↙|x|=54.2.2雙分支結構if…else…語句程序說明:(1)如果表達式的值為非0,即x>=0成立,則執行if所控制的語“printf("|x|=%d\n",x);”,否則,執行else語句所控制的語句“printf("|x|=%d\n",-x);”。4.2.3多分支結構if…elseif…else語句多分支結構if…elseif…else語句,即首先判斷第一個表達式1,如果其值為真,則執行表達式1之后的語句,然后結束if語句;如果表達式1的值為假,則判斷表達式2,如果其值為真,則執行表達式2之后的語句,然后結束if語句;如果表達式2的值為假,再繼續往下判斷其他表達式的值;如果所有表達式的值都為假,則執行else之后的語句。多分支結構if…elseif…else語句的特點:有多個條件選擇,從上至下逐個對條件進行判斷,一旦發現某個表達式的值為非0就執行緊跟該表達式后面的語句,該語句執行完后跳過整個if結構,執行后續語句。4.2.3多分支結構if…elseif…else語句1、多分支結構if語句執行流程如圖4-2-3所示表達式1表達式2表達式n語句1語句2語句n語句n+1000非0非0非0非04.2.3多分支結構if…elseif…else語句2、多分支結構if語句的一般格式為:if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3……elseif(表達式n)語句n[else語句n+1]4.2.3多分支結構if…elseif…else語句這種結構執行流程是從上至下逐個對條件進行判斷,一旦發現某個表達式的值為非0就執行緊跟該表達式后面的語句,該語句執行完后跳過整個if結構,執行后續語句;若沒有表達值為非0,則執行“語句n+1”。最后這個else常起著“缺省條件”的作用,當然也可以根據實際情況省略“else語句n+1”。但是建議使用時盡量加上else子句,以保證整個條件判斷的嚴密性,不至于漏掉某種情況。3、多分支結構if語句的語法含義是:4.2.3多分支結構if…elseif…else語句【注意】無論是if…else結構還是if…elseif結構,盡量將它們分寫在多行之上,但它們仍然使一條語句,而不是多條語句。4.2.3多分支結構if…elseif…else語句【例4.3】輸入一個學生的成績(分數),輸出該成績對應的等級。#include<stdio.h>voidmain(){intx;scanf("%d",&x);if(x>=90)printf("優秀");elseif(x>=80)printf("良好");elseif(x>=70)printf("中");elseif(x>=60)printf("及格");elseprintf("不及格");}程序運行結果:
91↙優秀4.2.3多分支結構if…elseif…else語句(1)在此例的if語句中,各表達式先后次序都不能顛倒,不能寫成如下形式:if(x<60)printf("不及格");elseif(x>=60)printf("及格");elseif(x>=70)printf("中");elseif(x>=80)printf("良好");elseprintf("優秀");這樣,程序運行將得不到正確的運行結果。(2)如果寫成:if(x<60)printf("不及格");elseif(x>=60&&x<70)printf("及格");elseif(x>=70&&x<80)printf("中");elseif(x>=80&&x<90)printf("良好");elseprintf("優秀");則先后次序就可以任意。程序說明:4.2.3多分支結構if…elseif…else語句4、使用if應該注意以下幾方面:(1)三種形式的if語句中在if關鍵字后面都有“表達式”,該表達式通常是邏輯表達式或關系表達式。(2)在if語句中,條件表達式必須用括號括起來,在語句之后必須加分號。在每一個else語句之前必須加分號,整個語句結束處也必須有分號。(3)在if語句的三種形式中,所有的語句應為單條語句,如果在條件成立時需要執行多條語句,則必須把多條語句用“{}”括起來形成一個復合語句,因為復合語句在邏輯上視為一條語句。但要注意的是在“}”之后不能再加分號。4.2.3多分支結構if…elseif…else語句(4)else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用,即有else肯定有與之匹配的if,有if不一定有else。(5)多分支結構if…elseif…語句中,else與if之間需留有空格,為了便于閱讀,書寫時每個else應對齊。4.2.4if語句的嵌套4.2.4if語句的嵌套
多分支結構實現的是復雜條件的判斷,即在一定的條件下,又需要滿足其它的條件才能確定相應的動作。這需要在判斷結構中再嵌入另一個判斷結構,稱為選擇結構的嵌套。4.2.4if語句的嵌套1、嵌套的if語句一般格式為:if(表達式1)
else
if(表達式2)
語句1;else
語句2;if(表達式3)
語句3;else
語句4;內部的(嵌套)if內部的(嵌套)if2、匹配規則:else總是與它上面的,最近的,統一復合語句中的,未配對的if語句配對。4.2.4if語句的嵌套3x+8(x≤-3)y=5-x(-3<x<0)x2+5(x≥0)【例4.4】根據下列分段函數,輸入x的值,計算輸出y的值。方法一:#include<stdio.h>voidmain(){intx,y;printf("請輸入x的值:");scanf("%d",&x);if(x<=-3)y=3*x+8;elseif(x<0)y=5-x;elsey=x*x+5;printf("x=%d,y=%d\n",x,y);}4.2.4if語句的嵌套方法二:
#include<stdio.h>voidmain(){intx,y;printf("請輸入x的值:");scanf("%d",&x);if(x>-3)if(x<0)y=5-x;elsey=x*x+5;elsey=3*x+8;printf("x=%d,y=%d\n",x,y);}方法三:#include<stdio.h>voidmain(){intx,y;printf("請輸入x的值:");scanf("%d",&x);if(x>=0)y=x*x+5elseif(x>-3)y=5-x;elsey=3*x+8;printf("x=%d,y=%d\n",x,y);}4.2.4if語句的嵌套程序說明:(1)程序通過執行scanf("%d",&x);語句,得到x的值,方法一是先判斷如果x<=-3,則將3*x+8賦給y,否則繼續判斷,如果x<0,則將5-x賦給y,否則將x*x+5賦給y。(2)方法二是先判斷x>-3,如果條件成立,直接執行嵌套的if……else,否則直接執行最后一個else,將3*x+8賦給y。(3)方法三是采用多分支結構if語句,x的值直接與判斷條件匹配,x與哪一條匹配,與之對應就執行后面的語句,該語句執行完后跳過整個if結構,執行后續語句。4.2.4if語句的嵌套3、使用嵌套if語句的注意事項(1)書寫嵌套結構時要有層次。內層的嵌套結構要相對外層有一定的縮進
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 花店出入庫管理制度
- 茶包裝標識管理制度
- 重要接待車管理制度
- 落地式卸料平臺施工方案的專家驗證
- 課外讀物進校園管理實施方案
- 江門市房地產市場調研分析報告(案例)
- 財經英語華為手機
- 視覺感知行業發展歷程分析
- 山東省德州市寧津縣育新中學等2024-2025學年七年級下學期5月期中考試數學試題(含部分答案)
- 試題【python二級】知識點-題型練習
- 2025年行政能力測驗考試真題及答案
- 2024年寧夏中衛沙坡頭區招聘社區專職工作者真題
- 2025年江蘇省南京市中考物理模擬練習卷(含答案)
- 人教部編版三年級下冊語文各單元【習作范文】
- 教師普法考試題及答案
- 水冷空調項目可行性研究報告
- 2025年小產權房的買賣合同5篇
- 清運垃圾污水合同范本
- 夫妻婚內財產財產協議書
- 天耀中華合唱簡譜大劇院版
- 戴爾電腦培訓課件
評論
0/150
提交評論