《二級C語言程序設(shè)計》第4章選擇結(jié)構(gòu)程序設(shè)計課件_第1頁
《二級C語言程序設(shè)計》第4章選擇結(jié)構(gòu)程序設(shè)計課件_第2頁
《二級C語言程序設(shè)計》第4章選擇結(jié)構(gòu)程序設(shè)計課件_第3頁
《二級C語言程序設(shè)計》第4章選擇結(jié)構(gòu)程序設(shè)計課件_第4頁
《二級C語言程序設(shè)計》第4章選擇結(jié)構(gòu)程序設(shè)計課件_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 選擇結(jié)構(gòu)程序設(shè)計4.1 關(guān)系表達(dá)式和邏輯表達(dá)式4.1.1 關(guān)系表達(dá)式1關(guān)系運算符關(guān)系運算符是比較兩個操作數(shù)大小的符號。兩個操作數(shù)一般為數(shù)值型數(shù)據(jù)。Turbo C的關(guān)系運算符及其優(yōu)先級、結(jié)合律如表所示:運算符功能優(yōu)先級(值小的優(yōu)先級高)結(jié)合律 =60 a+bb= =c b+4c-6關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”。C語言中,用1表示“真”,用0表示“假”。第4章 選擇結(jié)構(gòu)程序設(shè)計4.1 關(guān)系表達(dá)式和邏輯表達(dá)式4.1.2 邏輯表達(dá)式1邏輯運算符邏輯運算符是確定兩個操作數(shù)邏輯關(guān)系的符號。兩個操作數(shù)一般為邏輯型數(shù)據(jù)。Turbo C的邏輯運算符及其優(yōu)先級、結(jié)合律如表所示:運算符功能優(yōu)

2、先級(值小的優(yōu)先級高)結(jié)合律!邏輯非2從右向左&邏輯與11從左向右|邏輯或12第4章 選擇結(jié)構(gòu)程序設(shè)計4.1 關(guān)系表達(dá)式和邏輯表達(dá)式4.1.2 邏輯表達(dá)式1邏輯運算符各邏輯運算符的運算規(guī)則如表所示:數(shù)據(jù)a數(shù)據(jù)ba&ba|b!a!b111100100101010110000011第4章 選擇結(jié)構(gòu)程序設(shè)計4.1 關(guān)系表達(dá)式和邏輯表達(dá)式4.1.2 邏輯表達(dá)式1邏輯運算符2邏輯表達(dá)式由邏輯運算符將兩個表達(dá)式連接起來的有意義的式子稱為邏輯表達(dá)式。例如:!a+b&c a|b= =c a0|bb) max=a; else max=b; printf(max=%dn,max);程序2:main() int a

3、,b,max; scanf(%d%d,&a,&b); max=a; if(maxb) max=b; printf(max=%dn,max);第4章 選擇結(jié)構(gòu)程序設(shè)計4.2 if語句4.2.2 嵌套if語句在if 語句中又包含一個或多個if語句,稱為嵌套if語句。一般形式如下:if(表達(dá)式1) if(表達(dá)式2 ) 語句1 else 語句2else if(表達(dá)式3) 語句3 else 語句4第4章 選擇結(jié)構(gòu)程序設(shè)計4.2 if語句4.2.2 嵌套if語句說明:(1)if與else的配對關(guān)系從最內(nèi)層開始,else總是與離它最近的未曾配對的if配對。(2)if與else的個數(shù)最好相同,從內(nèi)層到外層一一

4、對應(yīng),以避免出錯。(3)如果if與else的個數(shù)不相同,可以用花括號來確定配對關(guān)系。例如:if (表達(dá)式1 ) if(表達(dá)式2 ) 語句1 else 語句2這時花括號限定了內(nèi)嵌if 語句的范圍,因此else與第一個if配對。例4.2 對任意x,根據(jù)以下函數(shù)關(guān)系求對應(yīng)y的值。 -1 (x0)程序:main( ) int x,y; scanf(%d,&x); if(x0) y=-1; else if(x=0) y=0; else y=1; printf(x=%d,y=%dn,x,y); 輸入:-3結(jié)果:x=-3,y=-1輸入:4結(jié)果:x=4,y=1第4章 選擇結(jié)構(gòu)程序設(shè)計4.3 條件表達(dá)式條件運算

5、符“?”和“:”兩個符號組成。由條件運算符構(gòu)成的條件表達(dá)式的一般形式是: ?:; 條件運算符的含義是:先求表達(dá)式1的值,如果為真,則求表達(dá)式2 的值并把它作為整個表達(dá)式的值;如果表達(dá)式1 的值為假,則求表達(dá)式3 的值并把它作為整個表達(dá)式的值。第4章 選擇結(jié)構(gòu)程序設(shè)計4.3 條件表達(dá)式例4.3 用條件表達(dá)式改寫例4.1(輸出兩個數(shù)中的較大者)。程序:main() int a,b,max; scanf(%d%d,&a,&b); max=(ab)?a:b; printf(max=%dn,max);第4章 選擇結(jié)構(gòu)程序設(shè)計4.4 復(fù)合語句與空語句4.4.1 復(fù)合語句復(fù)合語句是由左右花括號括起來的多條語

6、句,一個復(fù)合語句在語法上等同于一個語句。復(fù)合語句的一般形式如下:說明部分;語句部分在程序中,凡是單個語句能夠出現(xiàn)的地方,都可以出現(xiàn)復(fù)合語句。一個復(fù)合語句又可以出現(xiàn)在其他復(fù)合語句內(nèi)部。第4章 選擇結(jié)構(gòu)程序設(shè)計4.4.2 空語句空語句是只有一個分號的語句,其一般形式為: ;空語句在語法上占據(jù)一個語句的位置,但不做任何操作。4.4 復(fù)合語句與空語句第4章 選擇結(jié)構(gòu)程序設(shè)計4.5 開關(guān)語句開關(guān)語句的一般形式如下: switch(表達(dá)式) case 常量表達(dá)式1:語句1; case 常量表達(dá)式2:語句2; case 常量表達(dá)式n:語句n; default:語句n+1; 開關(guān)語句的功能是:首先計算swit

7、ch后面圓括號內(nèi)表達(dá)式的值,若此值等于某個case后面的常量表達(dá)式的值,則轉(zhuǎn)向該case后面的語句去執(zhí)行;若表達(dá)式的值不等于任何case后面的常量表達(dá)式的值,則轉(zhuǎn)向default后面的語句去執(zhí)行,如果沒有default部分,則將不執(zhí)行switch語句中的任何語句,而直接轉(zhuǎn)到switch語句后面的語句去執(zhí)行。第4章 選擇結(jié)構(gòu)程序設(shè)計4.5 開關(guān)語句說明:(1)switch后面圓括號內(nèi)的表達(dá)式的值和case后面的常量表達(dá)式的值都必須是整型或字符型,不允許是浮點型。(2)同一個switch語句中的所有case后面的常量表達(dá)式的值都必須互不相同。(3)switch語句中的case和default的出現(xiàn)

8、次序是任意的,也就是說default也可以位于case的前面,且case的次序也不要求按常量表達(dá)式的大小順序排列。(4)每個case或default后的語句可以是多條語句,但不需要使用“和”括起來。第4章 選擇結(jié)構(gòu)程序設(shè)計4.5 開關(guān)語句說明:(5)由于switch語句中的“case 常量表達(dá)式”部分只起標(biāo)號的作用,而不進(jìn)行條件判斷,所以在執(zhí)行完某個case后的語句后,將自動轉(zhuǎn)到該語句后面的語句去執(zhí)行,直到遇到switch語句的右花括號或break語句為止,而不再進(jìn)行條件判斷。如果在執(zhí)行完一個case分支后,要跳出switch語句轉(zhuǎn)到下一條語句執(zhí)行,可在一個case結(jié)束后、下一個case開始前

9、插入一個break語句。程序一且執(zhí)行到braek語句,將立即跳出switch語句。switch(n) case 1: x=1; case 2: x=2;當(dāng)n=1時,將連續(xù)執(zhí)行下面兩個語句:x=1;x=2;例如:switch(n) case 1:x=1; braek; case 2:x=2; braek;當(dāng)n=1時,將只執(zhí)行一個語句:x=1;第4章 選擇結(jié)構(gòu)程序設(shè)計4.5 開關(guān)語句說明:(6)多個case可以共用一組執(zhí)行語句。例如:switch(n) case 1: case 2: case 3: x=3;第4章 選擇結(jié)構(gòu)程序設(shè)計4.5 開關(guān)語句注意:(1)switch的表達(dá)式后不能有“;”。(

10、2)case和default與其后面的常量表達(dá)式間至少有一個空格。(3)switch語句可以嵌套,break語句只跳出它所在的switch語句。 (4)default語句可以省略。例4.4 給變量a,b,c輸入整數(shù),根據(jù)a的值確定對b、c的運算:當(dāng)a =1時:計算b+c的值。當(dāng)a=2時:計算b-c的值。當(dāng)a=3時:計算b*c的值。當(dāng)a=4時:計算b/c的值。其他值時:不做任何操作。main() int a,b,c; scanf(%d%d%d,&a,&b,&c); switch(a) case 1:printf(%d+%d=%dn,b,c,b+c); break; case 2:printf(%

11、d-%d=%dn,b,c,b-c); break; case 3:printf(%d*%d=%dn,b,c,b*c); break; case 4:printf(%d+%d=%dn,b,c,b/c); 程序:第4章 選擇結(jié)構(gòu)程序設(shè)計4.6 應(yīng)用舉例例4.5 輸入三個數(shù),按由小到大的順序輸出。分析:已知:輸入的三個數(shù)(分別用a,b,c來存放)。求:由小到大的順序輸出的三個數(shù)。處理:(1)a,b中的小者存入a,大者存入b。 (2)a,c中的小者存入a,大者存入c。 (3)b,c中的小者存入b,大者存入c。流程圖: 開始結(jié)束輸入a,b,c輸出a,b,c ab交換a,bNY ac交換a,cNY bc交

12、換b,cNY第4章 選擇結(jié)構(gòu)程序設(shè)計4.6 應(yīng)用舉例例4.5 輸入三個數(shù),按由小到大的順序輸出。開始結(jié)束輸入a,b,c輸出a,b,c ab交換a,bNY ac交換a,cNY bc) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%d,%d,%d,a,b,c);第4章 選擇結(jié)構(gòu)程序設(shè)計4.6 應(yīng)用舉例例4.6 輸入一個不多于4位的正整數(shù),求出它是幾位數(shù),逆序打印出各位數(shù)字分析:已知:一個不多于4位的正整數(shù)(用x來存放)。求:該正整數(shù)是幾位數(shù),該正整數(shù)的各位數(shù)字(分別用a、b、c、d來存放千位、百位、十位、個位上的數(shù)字,由a

13、、b、c、d的值確定該正整數(shù)是幾位數(shù))。處理:用算術(shù)運算/和%取出組成x的各位上的數(shù)字,再從高位到低位判斷各位上的數(shù)字是否不為零,據(jù)此確定該正整數(shù)是幾位數(shù)。流程圖: 取組成x的各位上的數(shù)字(a、b、c、d)開始結(jié)束輸入xNY輸出4位數(shù)及數(shù)字NY輸出3位數(shù)及數(shù)字NYc!=0輸出2位數(shù)及數(shù)字d!=0輸出1位數(shù)及數(shù)字a!=0b!=0程序:#includemain() int x,a,b,c,d; scanf(%d,&x); a=x/1000; b=x%1000/100; c=x%100/10; d=x%10; if(a!=0) printf(4:%d%d%d%dn,d,c,b,a); else if

14、(b!=0) printf(3:%d%d%dn,d,c,b); else if(c!=0) printf(2:%d%dn,d,c); else if(d!=0) printf(1:%dn,d);取組成x的各位上的數(shù)字(a、b、c、d)開始結(jié)束輸入xNY輸出4位數(shù)及數(shù)字NY輸出3位數(shù)及數(shù)字NYc!=0輸出2位數(shù)及數(shù)字d!=0輸出1位數(shù)及數(shù)字a!=0b!=0第4章 選擇結(jié)構(gòu)程序設(shè)計4.6 應(yīng)用舉例例4.7 輸入一個數(shù)字,輸出對應(yīng)的星期幾的英文單詞。分析:已知:一個數(shù)字(17,用n來存放)。求:對應(yīng)的星期幾的英文單詞(直接輸出)。處理:由于一個星期有7天,對輸入的數(shù)字進(jìn)行判斷,有8種情況(包括出錯)

15、,用開關(guān)語句進(jìn)行處理。開始輸出Sun輸出Mon輸出Tues輸出Wednes輸出Thurs輸出Fri輸出Satur輸出Error結(jié)束n其他=6=5=4=3=2=1=0流程圖:程序:#include main() int n; scanf(%d,&n); switch(n) case 0: printf(Sundayn); break; case 1: printf(Mondayn); break; case 2: printf(Tuesdayn); break; case 3: printf(Wednesdayn); break; case 4: printf(Thursdayn); break

16、; case 5: printf(Fridayn); break; case 6: printf(Saturdayn); break; default: printf(Error); 第4章 選擇結(jié)構(gòu)程序設(shè)計4.7 本章考點關(guān)系運算符和關(guān)系表達(dá)式。邏輯運算符和邏輯表達(dá)式。條件運算符和條件表達(dá)式。簡單if語句的格式與功能。嵌套if語句的格式與功能。switch語句的格式與功能。第4章 選擇結(jié)構(gòu)程序設(shè)計4.8 典型試題詳解1以下程序運行后的輸出結(jié)果是_。main() int p=30; printf(%dn,(p/30?p/10:p%3);正確答案:3(知識點:條件運算符和條件表達(dá)式)試題分析:表

17、達(dá)式p/3的值為10,大于0,所以條件表達(dá)式(p/30?p/10:p%3)的值取p/10的值3。第4章 選擇結(jié)構(gòu)程序設(shè)計4.8 典型試題詳解2有以下程序:main() int i=1,j=1,k=2; if(j+|k+)&i+) printf(%d,%d,%dn,i,j,k); 執(zhí)行后輸出結(jié)果是_。A)1,1,2B)2,2,1C)2,2,2D)2,2,3正確答案:C(知識點:邏輯運算符和邏輯表達(dá)式)試題分析:根據(jù)運算規(guī)則,對邏輯表達(dá)式(j+|k+)&i+應(yīng)先計算表達(dá)式j(luò)+的值,其結(jié)果是表達(dá)式j(luò)+的值為1,j的值為2,再將表達(dá)式j(luò)+的值1與k+進(jìn)行|運算,由邏輯運算符|構(gòu)成的邏輯表達(dá)式在已經(jīng)確定

18、一個運算對象的值為1時,其邏輯表達(dá)式的值即為1,此時不再處理其另一個運算對象,因此,不再計算k+,k的值仍為2。邏輯表達(dá)式(j+|k+)的值為1,再與i+進(jìn)行&運算,需要計算表達(dá)式i+的值,表達(dá)式i+為1,i的值為2,邏輯表達(dá)式(j+|k+)&i+的值1,執(zhí)行printf(%d,%d,%dn,i,j,k);語句,其結(jié)果為2,2,2。第4章 選擇結(jié)構(gòu)程序設(shè)計4.8 典型試題詳解3以下程序輸出的結(jié)果是_。main() int a=5,b=4 c=3,d; d=(abc); printf(%dn,d); 正確答案:0(知識點:關(guān)系運算符和關(guān)系表達(dá)式)試題分析:根據(jù)運算規(guī)則,對表達(dá)式(abc)應(yīng)先計算

19、表達(dá)式ab的值,其結(jié)果為1,再計算1c的值,其結(jié)果為0,故d的值為0。第4章 選擇結(jié)構(gòu)程序設(shè)計4.8 典型試題詳解4有定義語句:int a=1,b=2,c=3,x;,則以下選項中各程序段執(zhí)行后,x的值不等于3的是_。A)if(ca)x=1;B)if(a3)x=3; else if(ba) x=2; else if (a2) x=2; else x=3; else x=1;C)if(a3) x=3;D)if (ab) x=b; if(a2) x=2; if(bc) x=c; if(a1) x=1; if(ca) x=a;正確答案:C(知識點:簡單if語句和嵌套if語句的格式與功能)試題分析:根據(jù)

20、嵌套if語句的功能,對各程序段執(zhí)行后,A)的結(jié)果是x=3,B)的結(jié)果是x=3,C)的結(jié)果是x=2,D)的結(jié)果是x=3。在這類題目中,一定要注意其邏輯關(guān)系。第4章 選擇結(jié)構(gòu)程序設(shè)計4.8 典型試題詳解5以下程序運行后的結(jié)果是_。main() int a=1,b=3,c=5; if(c=a+b) printf(yesn); else printf(non); 正確答案:yes(知識點:簡單if語句的格式與功能、運算符=和=)試題分析:if語句后判斷的條件是c=a+b,即將a+b的值賦給c,再判斷c的值是否為真,而不是判斷c是否等于a+b。運算符=和=是不同的。第4章 選擇結(jié)構(gòu)程序設(shè)計4.8 典型試題詳解6若有以下程序:main() int a=4,b=3,c=5,t=0; if(ab)t=a;a=b;b=t; if(ac)t=a;a=c;c=t; printf(%d%d%d,a,b,c); 執(zhí)行后的輸出結(jié)果為_。正確答案:503(知識點:簡單if語句的格式與功能運算符=和=)試題分析:根據(jù)ab的值0,程序執(zhí)行a=b;b=t;,則a=3,b=0,再根據(jù)ac的值1,程序執(zhí)行t=a;,再執(zhí)行a=c;c=t;,則a=5,c=3。注意,第一個if語句在其后的t=a;后已經(jīng)結(jié)束,其后的a=b;b=t;是第一個if語句語法上下面的語句。同樣,第一個if語句也在其后的

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論