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

下載本文檔

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

文檔簡(jiǎn)介

第五章 選擇結(jié)構(gòu)程序設(shè)計(jì),5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 5.2 邏輯運(yùn)算符和邏輯表達(dá)式 5.3 if語(yǔ)句 5.4 switch語(yǔ)句 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)先級(jí) : 低于純算術(shù)類(lèi), 高于賦值類(lèi) 2. 結(jié)合性 : 左結(jié)合性,二、關(guān)系表達(dá)式: 用關(guān)系運(yùn)算符連接起來(lái)的式子 關(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中無(wú)邏輯型 數(shù)據(jù)。 若關(guān)系表達(dá)式成立,其值為1;在C中非零的值均 表示邏 輯真 若關(guān)系表達(dá)式不成立, 其值為零;零表示邏輯假。,5.2 邏輯運(yùn)算符和邏輯表達(dá)式,一、 邏輯運(yùn)算符 & | ! (與 或 非) 3個(gè)運(yùn)算符的優(yōu)先級(jí)由高到低為 ! & | ! 的優(yōu)先級(jí)高于關(guān)系運(yùn)算, &和 | 的優(yōu)先級(jí) 低于關(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)寫(xiě)為: x=-1 & x=1,2.邏輯運(yùn)算中的規(guī)律 (1) 在& 表達(dá)式中, 若左端為0, 則不必再計(jì)算右端, 表達(dá)式值為0 即: 0 & a = 0 (2) 類(lèi)似有 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é)過(guò)的運(yùn)算符優(yōu)先級(jí)如下:,賦值和復(fù)合賦值符 逗號(hào)運(yùn)算符,運(yùn)算符和結(jié)合性,優(yōu)先級(jí) 運(yùn)算符 含義 要求運(yùn)算 結(jié)合方向 對(duì)象的個(gè)數(shù),圓括號(hào) 下標(biāo)運(yùn)算符 指向結(jié)構(gòu)體 成員運(yùn)算符 結(jié)構(gòu)體成員運(yùn)算符 邏輯非運(yùn)算符 按位取反運(yùn)算符 自增運(yùn)算符 自減運(yùn)算符 負(fù)號(hào)運(yùn)算符 類(lèi)型轉(zhuǎn)換運(yùn)算符 指針運(yùn)算符 地址,與運(yùn)算符 長(zhǎng)度運(yùn)算符 乘法運(yùn)算符 除法運(yùn)算符 求余運(yùn)算符 加法運(yùn)算符 減法運(yùn)算符,1,2,3,4,( ) . ! + - - - (類(lèi)型) * & 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)先級(jí) 運(yùn)算符 含義 要求運(yùn)算 結(jié)合方向 對(duì)象的個(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)算符 逗號(hào)運(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語(yǔ)句,一、if 語(yǔ)句的兩種形式 1. 單分支形式: if ( 表達(dá)式 ) 語(yǔ)句,2. 雙分支形式: if ( 表達(dá)式 ) 語(yǔ)句1 else 語(yǔ)句2,執(zhí)行過(guò)程: 先計(jì)算表達(dá)式的值, 如果值為1, 就執(zhí)行其后的 語(yǔ)句, 如果值為0, 就繼續(xù)向下執(zhí)行.,執(zhí)行過(guò)程: 先計(jì)算表達(dá)式的值, 如果值為1, 就執(zhí)行其后的 語(yǔ)句1, 如果值為0, 就執(zhí)行else后的語(yǔ)句2,說(shuō)明: 1. 語(yǔ)句可以是簡(jiǎn)單語(yǔ)句或復(fù)合語(yǔ)句 2. 表達(dá)式一般為邏輯或關(guān)系表達(dá)式, 且應(yīng)用( )括起來(lái),#include #include void main( ) int x, y; scanf(“%d”, ,#include #include void main( ) int x, y; scanf(“%d”, ,格式 功能 if (表達(dá)式) 語(yǔ)句 if (表達(dá)式) 語(yǔ)句1 else 語(yǔ)句2 if(表達(dá)式1)語(yǔ)句1 else if (表達(dá)式2) 語(yǔ)句2 else if(表達(dá)式n) 語(yǔ)句n else 語(yǔ)句n+1,-,表達(dá)式值非0?,表達(dá)式值非0?,表達(dá)式值非0?,表達(dá)式值非0?,表達(dá)式1值非0?,表達(dá)式2值非0?,表達(dá)式3值非0?,表達(dá)式n值非0?,語(yǔ)句,語(yǔ)句,語(yǔ)句 1,語(yǔ)句2,語(yǔ)句1,語(yǔ)句2,語(yǔ)句2,語(yǔ)句n+1,語(yǔ)句3,語(yǔ)句n,語(yǔ)句1,Y,N,Y,Y,Y,Y,Y,Y,Y,N,N,N,N,N,N,.,條件語(yǔ)句,例: 輸入3個(gè)數(shù), 按由小到大的順序輸出,#include void main( ) int a,b,c,t; scanf(“%d%d%d”, ,二、 if 語(yǔ)句的嵌套 : 在if 語(yǔ)句中又包括一個(gè)或多個(gè)if 語(yǔ)句,規(guī)定: 在if 嵌套結(jié)構(gòu)中, else是與其前面最近的尚未配對(duì)的if 配對(duì)(就近原則),所以第一種理解是正確的。,1. if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句,4. if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1 else 語(yǔ)句2,2. if (表達(dá)式1) 語(yǔ)句1 else if (表達(dá)式2) 語(yǔ)句2,3. if (表達(dá)式件1) 語(yǔ)句1 else if (表達(dá)式2) 語(yǔ)句2 else 語(yǔ)句3,對(duì)第4種形式可以有兩種理解方式: (1) if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1 else 語(yǔ)句2 ,(2) if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1 else 語(yǔ)句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ù)類(lèi)型可以互不相同 (2) 條件表達(dá)式的值的數(shù)據(jù)類(lèi)型與表達(dá)式2, 表達(dá)式 3中數(shù) 據(jù)類(lèi)型較高的那個(gè)保持一致 如 75? 10 : 1.4 條件表達(dá)式的值為10.0,ab? a : (cd? c : d ),1. 條件運(yùn)算符 ? : ( 唯一的三目運(yùn)算符) 優(yōu)先級(jí)僅高于賦值類(lèi), 是右結(jié)合性,執(zhí)行過(guò)程: 先計(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中的語(yǔ)句為簡(jiǎn)單賦值語(yǔ)句時(shí),我們可以用條件表達(dá)式 來(lái)取代if 語(yǔ)句,例 求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語(yǔ)句,一、switch語(yǔ)句的格式 switch ( 表達(dá)式 ) case 常量表達(dá)式1 : 語(yǔ)句1 case 常量表達(dá)式2 : 語(yǔ)句2 : : : case 常量表達(dá)式n : 語(yǔ)句n default : 語(yǔ)句n+1 ,注意: 1. 表達(dá)式一般多為整型或字符型表達(dá)式 2. case后常量表達(dá)式的值必須互不相同 3. case和default的出現(xiàn)次序不影響結(jié)果 4. 語(yǔ)句1至語(yǔ)句n+1為復(fù)合語(yǔ)句時(shí)可省略 5. 多個(gè)case可以共用一組執(zhí)行語(yǔ)句 6. Switch語(yǔ)句可以嵌套,格式: switch (表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句系列1 case 常量表達(dá)式2: 語(yǔ)句系列2 . . . case 常量表達(dá)式n: 語(yǔ)句系列n default : 語(yǔ)句系列n+1 功能: (條件: 語(yǔ)句系列1-語(yǔ)句系列n 后均有 break 語(yǔ)句 ),表達(dá)式值=時(shí)該開(kāi)關(guān)合上,計(jì)算表達(dá)式值,.,語(yǔ)系1,語(yǔ)系2,語(yǔ)系n,語(yǔ)系n+1,表達(dá)式值與某 常量表達(dá)式值 相匹配,則對(duì)應(yīng)開(kāi)關(guān)合上,執(zhí)行對(duì)應(yīng)語(yǔ)句系列,switch語(yǔ)句的執(zhí)行過(guò)程 : 計(jì)算switch后表達(dá)式的值 如果表達(dá)式的值與某個(gè)case常量表達(dá)式的值相等時(shí), 就執(zhí)行此case后的語(yǔ)句, 執(zhí)行完后將繼續(xù)執(zhí)行下一個(gè)case后的語(yǔ)句, 如果表達(dá)式的值與所有case常量表達(dá)式的值都不同, 就執(zhí)行default后的語(yǔ)句,例 void main ( ) int x, y ; scanf(“%d” , ,如果輸入x為 2 則輸出: 20 30 0,如果輸入x為 6 則輸出: 0,注意 : 在執(zhí)行一個(gè)case 分支后, 應(yīng)用break語(yǔ)句結(jié)束switch語(yǔ)句,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,則說(shuō)明x中的 ai=a1; 不再是a1的值,將a1的值與 a1=x; 四個(gè)數(shù)中最小值相交換*/ x=a2;i=2; if(xa3) /*從x=a2開(kāi)始,依次與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開(kāi)始,與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語(yǔ)言編程環(huán)境: 1、若機(jī)器中沒(méi)有TC.EXE,則到網(wǎng)上下載。地址是:48,其中有一個(gè)名為“system”的文件夾,打開(kāi)之后找名為“教學(xué)軟件”的文件夾,打開(kāi)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論