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

下載本文檔

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

文檔簡介

第五章 選擇結(jié)構(gòu)程序設(shè)計(jì),5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 5.2 邏輯運(yùn)算符和邏輯表達(dá)式 5.3 if語句 5.4 switch語句 5.5 程序舉例,5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式,注意 : (1) 字符數(shù)據(jù)按其ASCII碼值進(jìn)行比較 (2) 應(yīng)避免兩個(gè)實(shí)數(shù)作 = = 或 != 的比較,一、關(guān)系運(yùn)算符 = = = != 1. 優(yōu)先級 : 低于純算術(shù)類, 高于賦值類 2. 結(jié)合性 : 左結(jié)合性,二、關(guān)系表達(dá)式: 用關(guān)系運(yùn)算符連接起來的式子 關(guān)系表達(dá)式的值 : 只有2個(gè), 真以 1 表示 , 假以 0 表示,注意: (3) 表達(dá)式 5278 是允許的 , 它相當(dāng)于 (52)7)8 (4) 可以將關(guān)系表達(dá)式看成是一種整型表達(dá)式,關(guān)系表達(dá)式: 注意: 關(guān)系表達(dá)式的值應(yīng)是邏輯值, 在C中無邏輯型 數(shù)據(jù)。 若關(guān)系表達(dá)式成立,其值為1;在C中非零的值均 表示邏 輯真 若關(guān)系表達(dá)式不成立, 其值為零;零表示邏輯假。,5.2 邏輯運(yùn)算符和邏輯表達(dá)式,一、 邏輯運(yùn)算符 & | ! (與 或 非) 3個(gè)運(yùn)算符的優(yōu)先級由高到低為 ! & | ! 的優(yōu)先級高于關(guān)系運(yùn)算, &和 | 的優(yōu)先級 低于關(guān)系運(yùn)算 ! 是右結(jié)合性, & 和 | 是左結(jié)合性 ,二、邏輯表達(dá)式 1.邏輯表達(dá)式的值應(yīng)該是“邏輯真”或“邏輯假”, 邏輯運(yùn)算的結(jié)果以數(shù)值1代表“真”, 以數(shù)值0代表“假”; 進(jìn)行判斷時(shí), 非零值代表“真”, 零值代表“假”,例: 表示 x -1,1區(qū)間 應(yīng)寫為: x=-1 & x=1,2.邏輯運(yùn)算中的規(guī)律 (1) 在& 表達(dá)式中, 若左端為0, 則不必再計(jì)算右端, 表達(dá)式值為0 即: 0 & a = 0 (2) 類似有 1 | a = 1,規(guī)律: 0|a =a 0&a=0 1|a=1 1&a=a a|a=a a&a=a a|!a=1 a&!a=0 !(a|b)=!a&!b !(a&b)=!a|!b,已知:c (char); i, j, k (int); x,y (double) ; c = w, i = 1, j = 2, k = -7, x = 7e+033, y = 0.001 a+1c (a+1)c 1 3j5 (3j)5 1 1-0= =1 (1-0)= =1 1 1= =0+1 1= =(0+1) 1 xx+y x(x+y) 1 i+j+k =-2*j (i+j)+k) =-2*j 1 ij= =xy (ij)= =(xy) 0 i=j= =ky i=(j= =(ky) ) 0,表達(dá)式 等價(jià)表達(dá)式 表達(dá)式值,i=ky i=(ky) 1,表達(dá)式 等價(jià)表達(dá)式 表達(dá)式的值,2.邏輯表達(dá)式: (C的任何一種表達(dá)式均可) 已知: c(char); i,j,k (int); x,y (double), c=w, i=j=k=3, x=0.0,y=2.3 i & j & k (i & j) & k 1 x & i | j -2 (x & i) | (j-2) 1 x | i & j -3 x | (i & (j-3) 0 i j & x y (ij) & (xy) 0 i = = j & x = y (i= =j) & (x=y) 1 x!=y&j+1= =!k+4 (x!=y) & (j+1)= = (!k)+4) 1 A=c & c=Z (A = c) & (c = Z) 0 i=i= =2|j= =4|k=6 i=(i= =2) | (j= = 4) | (k= =6) 0,! + - 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 = = != & |,已學(xué)過的運(yùn)算符優(yōu)先級如下:,賦值和復(fù)合賦值符 逗號運(yùn)算符,運(yùn)算符和結(jié)合性,優(yōu)先級 運(yùn)算符 含義 要求運(yùn)算 結(jié)合方向 對象的個(gè)數(shù),圓括號 下標(biāo)運(yùn)算符 指向結(jié)構(gòu)體 成員運(yùn)算符 結(jié)構(gòu)體成員運(yùn)算符 邏輯非運(yùn)算符 按位取反運(yùn)算符 自增運(yùn)算符 自減運(yùn)算符 負(fù)號運(yùn)算符 類型轉(zhuǎn)換運(yùn)算符 指針運(yùn)算符 地址,與運(yùn)算符 長度運(yùn)算符 乘法運(yùn)算符 除法運(yùn)算符 求余運(yùn)算符 加法運(yùn)算符 減法運(yùn)算符,1,2,3,4,( ) . ! + - - - (類型) * & sizeof * / % + -,1 (單目運(yùn)算符),2 (雙目運(yùn)算符),2 (雙目運(yùn)算符),自右至左,5,9,10,11,2 (雙目運(yùn)算符),2 (雙目運(yùn)算符),2 (雙目運(yùn)算符),優(yōu)先級 運(yùn)算符 含義 要求運(yùn)算 結(jié)合方向 對象的個(gè)數(shù),左移運(yùn)算符 右移運(yùn)算符 關(guān)系運(yùn)算符 等于運(yùn)算符 不等于運(yùn)算符 按位與運(yùn)算符 按位異或運(yùn)算符 按位或運(yùn)算符 邏輯與運(yùn)算符 邏輯或運(yùn)算符 條件運(yùn)算符 賦值運(yùn)算符 逗號運(yùn)算符 (順序求值運(yùn)算符),6,7,8,12,13,14,15, = = = != & ! & |,? :,= += &=,2 (雙目運(yùn)算符),2 (雙目運(yùn)算符),2 (雙目運(yùn)算符),2 (雙目運(yùn)算符),2 (雙目運(yùn)算符),3 (三目運(yùn)算符),2,自右至左,自右至左,5.3 if語句,一、if 語句的兩種形式 1. 單分支形式: if ( 表達(dá)式 ) 語句,2. 雙分支形式: if ( 表達(dá)式 ) 語句1 else 語句2,執(zhí)行過程: 先計(jì)算表達(dá)式的值, 如果值為1, 就執(zhí)行其后的 語句, 如果值為0, 就繼續(xù)向下執(zhí)行.,執(zhí)行過程: 先計(jì)算表達(dá)式的值, 如果值為1, 就執(zhí)行其后的 語句1, 如果值為0, 就執(zhí)行else后的語句2,說明: 1. 語句可以是簡單語句或復(fù)合語句 2. 表達(dá)式一般為邏輯或關(guān)系表達(dá)式, 且應(yīng)用( )括起來,#include #include void main( ) int x, y; scanf(“%d”, ,#include #include void main( ) int x, y; scanf(“%d”, ,格式 功能 if (表達(dá)式) 語句 if (表達(dá)式) 語句1 else 語句2 if(表達(dá)式1)語句1 else if (表達(dá)式2) 語句2 else if(表達(dá)式n) 語句n else 語句n+1,-,表達(dá)式值非0?,表達(dá)式值非0?,表達(dá)式值非0?,表達(dá)式值非0?,表達(dá)式1值非0?,表達(dá)式2值非0?,表達(dá)式3值非0?,表達(dá)式n值非0?,語句,語句,語句 1,語句2,語句1,語句2,語句2,語句n+1,語句3,語句n,語句1,Y,N,Y,Y,Y,Y,Y,Y,Y,N,N,N,N,N,N,.,條件語句,例: 輸入3個(gè)數(shù), 按由小到大的順序輸出,#include void main( ) int a,b,c,t; scanf(“%d%d%d”, ,二、 if 語句的嵌套 : 在if 語句中又包括一個(gè)或多個(gè)if 語句,規(guī)定: 在if 嵌套結(jié)構(gòu)中, else是與其前面最近的尚未配對的if 配對(就近原則),所以第一種理解是正確的。,1. if (表達(dá)式1) if (表達(dá)式2) 語句,4. if (表達(dá)式1) if (表達(dá)式2) 語句1 else 語句2,2. if (表達(dá)式1) 語句1 else if (表達(dá)式2) 語句2,3. if (表達(dá)式件1) 語句1 else if (表達(dá)式2) 語句2 else 語句3,對第4種形式可以有兩種理解方式: (1) if (表達(dá)式1) if (表達(dá)式2) 語句1 else 語句2 ,(2) if (表達(dá)式1) if (表達(dá)式2) 語句1 else 語句2,方法1 if (x0) y=-1; else if (x=0) y=0; else y=1;,方法2 if (x=0) if (x0) y=1; else y=0; else y=-1;,方法3 y=-1; if(x!=0) if(x0) y=1; else y=0;,修改方法3 y=-1; if(x!=0) if(x0) y=1; else y=0;,例: 試編程,當(dāng)鍵入+,-,*,/ 時(shí), 分別計(jì)算并輸出x+y, x-y, x*y, x/y的值 main ( ) int x,y ; char c1; scanf (“x=%d, y=%d, c1=%c”, ,三、 條件運(yùn)算,例 max=ab? a : b+1 ab? a : cd? c : d,注意: (1) 表達(dá)式1, 表達(dá)式2和表達(dá)式3 的數(shù)據(jù)類型可以互不相同 (2) 條件表達(dá)式的值的數(shù)據(jù)類型與表達(dá)式2, 表達(dá)式 3中數(shù) 據(jù)類型較高的那個(gè)保持一致 如 75? 10 : 1.4 條件表達(dá)式的值為10.0,ab? a : (cd? c : d ),1. 條件運(yùn)算符 ? : ( 唯一的三目運(yùn)算符) 優(yōu)先級僅高于賦值類, 是右結(jié)合性,執(zhí)行過程: 先計(jì)算表達(dá)式1 , 若其值為非零值(真), 則計(jì)算表達(dá)式2 的值, 該條件表達(dá)式的值即為表達(dá)式2 的值; 若表達(dá)式1的值為零(假), 則計(jì)算表達(dá)式3 的值, 該條件表達(dá)式的值即為表達(dá)式3 的值,2. 條件表達(dá)式的一般形式 : 表達(dá)式1? 表達(dá)式2 : 表達(dá)式3,max=(ab? a : b+1),用條件表達(dá)式實(shí)現(xiàn) #include void main( ) int max; max=xy? x : y ; max=zmax? z : max; printf(“max=%d”,max); ,當(dāng)if中的語句為簡單賦值語句時(shí),我們可以用條件表達(dá)式 來取代if 語句,例 求3個(gè)數(shù)中的最大數(shù) #include void main( ) int max; if (xy) max=x; else max=y; if (zmax) max=z; printf(“max=%d”,max); ,5.4 switch語句,一、switch語句的格式 switch ( 表達(dá)式 ) case 常量表達(dá)式1 : 語句1 case 常量表達(dá)式2 : 語句2 : : : case 常量表達(dá)式n : 語句n default : 語句n+1 ,注意: 1. 表達(dá)式一般多為整型或字符型表達(dá)式 2. case后常量表達(dá)式的值必須互不相同 3. case和default的出現(xiàn)次序不影響結(jié)果 4. 語句1至語句n+1為復(fù)合語句時(shí)可省略 5. 多個(gè)case可以共用一組執(zhí)行語句 6. Switch語句可以嵌套,格式: switch (表達(dá)式) case 常量表達(dá)式1: 語句系列1 case 常量表達(dá)式2: 語句系列2 . . . case 常量表達(dá)式n: 語句系列n default : 語句系列n+1 功能: (條件: 語句系列1-語句系列n 后均有 break 語句 ),表達(dá)式值=時(shí)該開關(guān)合上,計(jì)算表達(dá)式值,.,語系1,語系2,語系n,語系n+1,表達(dá)式值與某 常量表達(dá)式值 相匹配,則對應(yīng)開關(guān)合上,執(zhí)行對應(yīng)語句系列,switch語句的執(zhí)行過程 : 計(jì)算switch后表達(dá)式的值 如果表達(dá)式的值與某個(gè)case常量表達(dá)式的值相等時(shí), 就執(zhí)行此case后的語句, 執(zhí)行完后將繼續(xù)執(zhí)行下一個(gè)case后的語句, 如果表達(dá)式的值與所有case常量表達(dá)式的值都不同, 就執(zhí)行default后的語句,例 void main ( ) int x, y ; scanf(“%d” , ,如果輸入x為 2 則輸出: 20 30 0,如果輸入x為 6 則輸出: 0,注意 : 在執(zhí)行一個(gè)case 分支后, 應(yīng)用break語句結(jié)束switch語句,void main ( ) int x, y ; scanf(“%d” , ,如果輸入x為 2 則輸出: 20,如果輸入x為 6 則輸出: 0,例:用 switch 編程,當(dāng)鍵入+ , - , * ,/ 時(shí), 分別計(jì)算并輸出x+y, x-y, x*y, x/y的值 main( ) int x,y; char c1; scanf(“x=%d, y=%d, c1=%c”, ,課 后 作 業(yè),課本P104 習(xí)題5.3 5.5 5.6 5.9,習(xí)題5.3 (1)a+bc成立但是b=c不成立,所以表達(dá)式的值為0 (2)等價(jià)于a|(b+c)&(b-c),a=3成立,所以值為1 (3)值為1 (4)值為0 (5)等價(jià)于(!(a+b)+c-1)&(b+c/2),值為1,習(xí)題5.5 main() int x,y; scanf(“%d”, ,X1,否,y=x,1=x10,是,是,否,y= 2x-1,y= 3x-11,習(xí)題5.6 main() float s; char c; int i; printf(“ninput a score:“); scanf(“%f“, ,習(xí)題5.9 main() int a5,x,i; printf(“ninput 4 numbers:“); scanf(“%d%d%d%d“, 為a3的值*/,if(xa4) /*若x大于a4,則將x中的改 x=a4;i=4; 為a4的值*/ (總之,保證x中是四個(gè)數(shù)中最小的數(shù)的值) if(i!=1) /*若i的值不等于1,則說明x中的 ai=a1; 不再是a1的值,將a1的值與 a1=x; 四個(gè)數(shù)中最小值相交換*/ x=a2;i=2; if(xa3) /*從x=a2開始,依次與a3和 x=a3;i=3; a4比較,保證x中存放三個(gè)數(shù) if(xa4) 中的最小值。將x的傳給a2 */ x=a4;i=4; ,if(i!=2) ai=a2;a2=x; x=a3;i=3; if(xa4) /*從x=a3開始,與a4比較, x=a4;i=4; 使x中存放a3 和a4中的 if(i!=3) 最小值。將x的傳給a3 */ ai=a3,a3=x; printf(“a1=%d,a2=%d,a3=%d,a4=%d“,a1,a2,a3,a4); ,設(shè)置C語言編程環(huán)境: 1、若機(jī)器中沒有TC.EXE,則到網(wǎng)上下載。地址是:48,其中有一個(gè)名為“system”的文件夾,打開之后找名為“教學(xué)軟件”的文件夾,打開

溫馨提示

  • 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

提交評論