第5章選擇分支結(jié)構(gòu)--C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng)第三版)_第1頁(yè)
第5章選擇分支結(jié)構(gòu)--C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng)第三版)_第2頁(yè)
第5章選擇分支結(jié)構(gòu)--C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng)第三版)_第3頁(yè)
第5章選擇分支結(jié)構(gòu)--C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng)第三版)_第4頁(yè)
第5章選擇分支結(jié)構(gòu)--C語(yǔ)言程序設(shè)計(jì)(譚浩強(qiáng)第三版)_第5頁(yè)
已閱讀5頁(yè),還剩45頁(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)介

1、第5章 選擇結(jié)構(gòu)程序設(shè)計(jì)v 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式v 邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式v ifif語(yǔ)句語(yǔ)句v switchswitch語(yǔ)句語(yǔ)句v 程序舉例程序舉例引例:1/x 1/x 當(dāng)當(dāng)x0 x0時(shí)時(shí) 10000 10000 當(dāng)當(dāng)x=0 x=0時(shí)時(shí)y=y= 選擇結(jié)構(gòu)是3種基本結(jié)構(gòu)之一,經(jīng)常牽涉到:根據(jù)所指定的條件是否相同,從兩組(或多組)操作中選擇其一。 要考慮兩個(gè)方面的問(wèn)題:1、C語(yǔ)言中如何表示條件? 一般用關(guān)系表達(dá)式或邏輯表達(dá)式2、C語(yǔ)言中實(shí)現(xiàn)選擇結(jié)構(gòu)用什么語(yǔ)句?用if語(yǔ)句或switch語(yǔ)句。if(x!=0) y=1/x;if(x!=0) y=1/x;e

2、lse y=10000;else y=10000;此處:用if語(yǔ)句來(lái)表示選擇結(jié)構(gòu) 用一個(gè)關(guān)系表達(dá)式x!=0來(lái)表示條件5.1 關(guān)系運(yùn)算符和表達(dá)式1 1、關(guān)系運(yùn)算: 實(shí)質(zhì)是兩個(gè)量“比較運(yùn)算”。2、關(guān)系運(yùn)算符 : 種類(lèi):6種 = !=結(jié)合方向:自左向右優(yōu)先級(jí)別:前4種優(yōu)先級(jí)相同,高于后2種 由高到低:算術(shù)運(yùn)算關(guān)系運(yùn)算賦值運(yùn)算=!=優(yōu)先級(jí)6(高)優(yōu)先級(jí)7(低)例例 ca+b c(a+b)ca+b c(a+b) ab!=c (ab)!=c ab!=c (ab)!=c a=bc a=(bc) a=bc a=(bc a=(bc) a=bc a=(bc)算術(shù)運(yùn)算符算術(shù)運(yùn)算符賦值運(yùn)算符賦值運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)

3、算符高高低低/表達(dá)式值1/表達(dá)式值1/表達(dá)式值0/ab值為1,所以d=1/ab為1, abc為0,所以f=0例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc3、關(guān)系表達(dá)式:用用關(guān)系運(yùn)算符關(guān)系運(yùn)算符將將兩個(gè)表達(dá)式兩個(gè)表達(dá)式連接起來(lái)式子。連接起來(lái)式子。4 4、關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示1 結(jié)果為真 (關(guān)系成立)0 結(jié)果為假 (關(guān)系不成立)注意:其中“= =”表示相等,而 “=”表示賦值(1)關(guān)系運(yùn)算符左右兩邊類(lèi)型不一致,自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,轉(zhuǎn)換成兩邊的類(lèi)型相同,然后進(jìn)行比較。 例如:若a=0,b=0.5,轉(zhuǎn)換成a=0.0,則 a=b的值

4、為1 (2) 應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷,而只能使用“”,原因在于舍入誤差可能造成兩個(gè)邏輯上應(yīng)該相等的數(shù)不相等。 例如:如果x、y均為實(shí)數(shù),要避免使用 x=y 應(yīng)使用 fabs(x-y)b&bc+3 x=( (!a)b)&(b(c+3)x= !ab&bc+3 x=( (!a)b)&(b(c+3) )2、邏輯表達(dá)式和邏輯表達(dá)式的值(1)邏輯表達(dá)式:用邏輯運(yùn)算符將關(guān)系表達(dá)式、邏輯量連接起來(lái)的式子。 例如: !a&bxy & c(2)邏輯表達(dá)式的值:1或0,表示邏輯值“真”或“假”例 a=4;b=5; !a a&b a|b !a|b 4&a

5、mp;0|2 53&83)&(8b)&(n=cd) 判斷m,n的值 :結(jié)果m=0,n=1,表達(dá)式為0例如: a&b&c 當(dāng)a=0(假)時(shí), b,c不需判斷。 當(dāng)a=1,b=0, c不需判斷。例如: a b c 當(dāng)a=1時(shí), b, c均不必判別。1&0邏輯值為083邏輯值為1(53)&(8y) printf( %d, x) ;形式1: if(表達(dá)式) 語(yǔ)句5.3 if語(yǔ)句(三種形式三種形式)表達(dá)式語(yǔ)句非0=01.if語(yǔ)句的三種基本形式表達(dá)式的值:1 結(jié)果為真 (條件成立)0 結(jié)果為假 (條件不成立)例2 輸入兩個(gè)實(shí)數(shù),按其值由小到大次序輸出

6、這兩個(gè)數(shù)。表達(dá)式表達(dá)式語(yǔ)句語(yǔ)句非0=0 main( ) float a, b, t; scanf (%f, %f, &a, &b); if (ab) t=a; a=b; b=t; printf (%5.2f, %5.2f, a, b); 形式1: if(表達(dá)式) 語(yǔ)句1.if語(yǔ)句的三種基本形式例例3 輸入三個(gè)數(shù),按從小到大的順序輸出。輸入三個(gè)數(shù),按從小到大的順序輸出。 表達(dá)式表達(dá)式語(yǔ)句語(yǔ)句非0=0main ( )float a, b, c,t; scanf(“ %f,%f,%f”, &a, &b,&c); if (ab) t=a; a=b; b=t; i

7、f (ac) t=a; a=c; c=t; if (bc) t=b; b=c; c=t; printf(%5.2f, %5.2f, %5.2f, a, b, c);形式形式1: if(表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句1.if語(yǔ)句的三種基本形式例如例如: if(xy) printf(%d, x);else printf( %d, y);表達(dá)式表達(dá)式語(yǔ)句語(yǔ)句1語(yǔ)句語(yǔ)句2非0=0執(zhí)行過(guò)程執(zhí)行過(guò)程: 當(dāng)表達(dá)式當(dāng)表達(dá)式值值為非為非0, 執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句1; 當(dāng)當(dāng)表達(dá)式表達(dá)式值值為為0, 執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句2。形式形式2: if(表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句1 else 語(yǔ)句語(yǔ)句21.if語(yǔ)句的三種基本形式表達(dá)式表達(dá)式

8、語(yǔ)句語(yǔ)句1語(yǔ)句語(yǔ)句2非0=0例4 輸入一個(gè)數(shù),判斷它是否能被3整除。 若能,則打印“YES”, 否則,打印“NO”。形式形式2: if(表達(dá)式表達(dá)式) 語(yǔ)句語(yǔ)句1 else 語(yǔ)句語(yǔ)句2 main( ) int n; printf(“input n: ”); scanf(“%d”,&n); if (n%3=0) printf(“YESn”); else printf(“NOn”);1.if語(yǔ)句的三種基本形式執(zhí)行過(guò)程執(zhí)行過(guò)程: :從上向下逐一對(duì)從上向下逐一對(duì)if后面的表達(dá)式進(jìn)行檢測(cè)。后面的表達(dá)式進(jìn)行檢測(cè)。當(dāng)某一個(gè)表達(dá)式的值為非當(dāng)某一個(gè)表達(dá)式的值為非0時(shí),就執(zhí)行與此有關(guān)的子句中的時(shí),就執(zhí)行與

9、此有關(guān)的子句中的語(yǔ)句,其余部分就被越過(guò)去。語(yǔ)句,其余部分就被越過(guò)去。如果所有表達(dá)式的值都是如果所有表達(dá)式的值都是0,則執(zhí)行最后的,則執(zhí)行最后的else子句;子句;1) 如果沒(méi)有最后的那個(gè)如果沒(méi)有最后的那個(gè)else子句,那么,將不進(jìn)行任何操作。子句,那么,將不進(jìn)行任何操作。形式形式3:3:ifif(表達(dá)式表達(dá)式1) 語(yǔ)句語(yǔ)句1 else if (表達(dá)式表達(dá)式2) 語(yǔ)句語(yǔ)句2 else if (表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句3 else if(表達(dá)式表達(dá)式n) 語(yǔ)句語(yǔ)句n else 語(yǔ)句語(yǔ)句n+11.if語(yǔ)句的三種基本形式0表達(dá)式表達(dá)式1 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式n語(yǔ)句語(yǔ)句n+100語(yǔ)句語(yǔ)句n 語(yǔ)

10、句語(yǔ)句2 語(yǔ)句語(yǔ)句1 非非0 非非0 非非0 形式形式3:3:ifif(表達(dá)式表達(dá)式1) 語(yǔ)句語(yǔ)句1 else if (表達(dá)式表達(dá)式2) 語(yǔ)句語(yǔ)句2 else if (表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句3 else if(表達(dá)式表達(dá)式n) 語(yǔ)句語(yǔ)句n else 語(yǔ)句語(yǔ)句n+1例如:例如:if (number500) cost=0.15;else if (number300) cost=0.10;else if (number100) cost=0.075;else if (number50) cost=0.05;else costcost=0;0表達(dá)式表達(dá)式1 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式n語(yǔ)句語(yǔ)句n

11、+100語(yǔ)句語(yǔ)句n 語(yǔ)句語(yǔ)句2 語(yǔ)句語(yǔ)句1 非非0 非非0 非非0 1.if語(yǔ)句的三種基本形式形式形式3:if(表達(dá)式表達(dá)式1) 語(yǔ)句語(yǔ)句1 else if (表達(dá)式表達(dá)式2) 語(yǔ)句語(yǔ)句2 else if (表達(dá)式表達(dá)式3) 語(yǔ)句語(yǔ)句3 else if(表達(dá)式表達(dá)式n) 語(yǔ)句語(yǔ)句n else 語(yǔ)句語(yǔ)句n+1例例5:輸入一個(gè)學(xué)生成績(jī),輸入一個(gè)學(xué)生成績(jī),當(dāng)成績(jī)當(dāng)成績(jī)90時(shí),輸出時(shí),輸出 verygood,當(dāng)當(dāng)80成績(jī)成績(jī)90時(shí)時(shí), 輸出輸出 good, 當(dāng)當(dāng)60成績(jī)成績(jī)80時(shí)時(shí), 輸出輸出pass, 當(dāng)成績(jī)當(dāng)成績(jī)=90) printf(“very good);else if (score=80)

12、printf(“good);else if (score=60) printf(“pass);else printf(“fail);1.if語(yǔ)句的三種基本形式0表達(dá)式表達(dá)式1 表達(dá)式表達(dá)式2 表達(dá)式表達(dá)式n語(yǔ)句語(yǔ)句n+100語(yǔ)句語(yǔ)句n 語(yǔ)句語(yǔ)句2 語(yǔ)句語(yǔ)句1 非非0 非非0 非非0 例例6:輸入一個(gè)字符,請(qǐng):輸入一個(gè)字符,請(qǐng)判斷是字母、數(shù)字還判斷是字母、數(shù)字還是特殊字符。是特殊字符。#include main( ) char ch; printf(Please input a character:n); ch=getchar( ); if(ch=a&ch=A&ch=0&

13、chb) if (3) if (a+88) 1. 表達(dá)式可以是邏輯表達(dá)式、關(guān)系表達(dá)式、算術(shù)表達(dá)式。表達(dá)式可以是邏輯表達(dá)式、關(guān)系表達(dá)式、算術(shù)表達(dá)式。 2. 語(yǔ)句必須以分號(hào)結(jié)束。語(yǔ)句必須以分號(hào)結(jié)束。 3. 若語(yǔ)句不止一條若語(yǔ)句不止一條,則必須用則必須用 括起來(lái)。在括起來(lái)。在 外不加分外不加分號(hào)。號(hào)。注意的問(wèn)題注意的問(wèn)題5.3 if語(yǔ)句語(yǔ)句2、if語(yǔ)句的嵌套語(yǔ)句的嵌套: 在在if語(yǔ)句中語(yǔ)句中, 又又包含一個(gè)或多個(gè)包含一個(gè)或多個(gè)if語(yǔ)句語(yǔ)句。if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1 else 語(yǔ)句2else if(表達(dá)式3) 語(yǔ)句3 else 語(yǔ)句4內(nèi)嵌if內(nèi)嵌ifif (表達(dá)式1) if (表

14、達(dá)式2) 語(yǔ)句1 else 語(yǔ)句2內(nèi)嵌ifif (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1else 語(yǔ)句3 內(nèi)嵌ifif (表達(dá)式1) 語(yǔ)句1else if(表達(dá)式3) 語(yǔ)句3 else 語(yǔ)句4內(nèi)嵌if5.3 5.3 ifif語(yǔ)句(語(yǔ)句(三種形式三種形式)2、if語(yǔ)句的嵌套語(yǔ)句的嵌套if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1else 語(yǔ)句3 內(nèi)嵌ifif else 配對(duì)原則:配對(duì)原則:缺省缺省 時(shí),時(shí),else總是和它上面離它總是和它上面離它最近最近的未配對(duì)的的未配對(duì)的if 配對(duì)。配對(duì)。if()if()if()else.else.else.if (表達(dá)式1) if (表達(dá)式2) 語(yǔ)句1els

15、e 語(yǔ)句3 內(nèi)嵌if如果沒(méi)有如果沒(méi)有 時(shí)的配對(duì)時(shí)的配對(duì)2、if語(yǔ)句的嵌套語(yǔ)句的嵌套if else 配對(duì)原則配對(duì)原則修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);實(shí)現(xiàn)實(shí)現(xiàn)if else 正確配對(duì)方法:必要時(shí),加正確配對(duì)方法:必要時(shí),加 例例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);例例7 7 有一函數(shù)有一函數(shù): :y=1 (x0)編一程序,輸入一個(gè)編一程序,輸入一個(gè)x值,輸出值,輸出 y 值。值。有以下幾種寫(xiě)法,請(qǐng)判斷哪些是正確有以下幾種寫(xiě)法,請(qǐng)判斷哪

16、些是正確的?的?2、if語(yǔ)句的嵌套語(yǔ)句的嵌套程序程序2:將程序:將程序1的的if語(yǔ)句改為:語(yǔ)句改為: main ( ) int x, y; scanf(d, &x); if (x=0) if (x0) y=1; else y=0; else y=-1; printf (x=%d, y=%dn, x, y);程序程序1: main ( ) int x, y; scanf(d, &x); if (x=0) if(x0) y=1; else y=-1; printf(x=%d,y=%dn,x,y); 程序程序3:將程序?qū)⒊绦?的的if語(yǔ)句改為語(yǔ)句改為main( ) int x,y;

17、scanf(%d,&x); y=-1; if(x!=0) if(x0) y=1; else y=0; printf(x=%d,y=%dn,x,y);2、if語(yǔ)句的嵌套語(yǔ)句的嵌套y= 0 (x0)1. 程序程序1 和程序和程序2 是正確的。是正確的。 它們代表的函數(shù)為它們代表的函數(shù)為:2. 程序程序3 和程序和程序4 是錯(cuò)誤的。是錯(cuò)誤的。 它們代表的函數(shù)為它們代表的函數(shù)為:y= 0 (x0)y=1 (x0)結(jié)論:結(jié)論:5.3 if語(yǔ)句語(yǔ)句 C語(yǔ)言提供了一個(gè)簡(jiǎn)單的條件賦值語(yǔ)句或條件表達(dá)式。語(yǔ)言提供了一個(gè)簡(jiǎn)單的條件賦值語(yǔ)句或條件表達(dá)式。問(wèn)題問(wèn)題: 當(dāng)判斷條件不論是當(dāng)判斷條件不論是“真真”是是

18、“ 假假”, 均給同一變量賦值均給同一變量賦值時(shí)時(shí)簡(jiǎn)化條件語(yǔ)句簡(jiǎn)化條件語(yǔ)句 運(yùn)算符書(shū)寫(xiě)方式:運(yùn)算符書(shū)寫(xiě)方式: ? : 屬三目運(yùn)算符。屬三目運(yùn)算符。3、條件運(yùn)算符、條件運(yùn)算符5.3 if語(yǔ)句語(yǔ)句執(zhí)行過(guò)程執(zhí)行過(guò)程: 先求解表達(dá)式先求解表達(dá)式1, 若非若非0(真真),則值為表達(dá)式則值為表達(dá)式2的值的值, 否則,為表達(dá)式否則,為表達(dá)式3的值。的值。一般形式:一般形式:表達(dá)式表達(dá)式1 ? 表達(dá)式表達(dá)式2 : 表達(dá)式表達(dá)式3例如:例如:max=ab? a:b;當(dāng)當(dāng)ab, max a; 否則否則, maxb3、條件運(yùn)算符、條件運(yùn)算符表達(dá)式表達(dá)式1取取表達(dá)式表達(dá)式2值值取取表達(dá)式表達(dá)式3值值非0=05.3 i

19、f語(yǔ)句語(yǔ)句注意注意:條件運(yùn)算符條件運(yùn)算符優(yōu)先于優(yōu)先于賦值運(yùn)算符。賦值運(yùn)算符。 例如例如: max=(ab? a:b) 可去掉可去掉( )條件運(yùn)算符條件運(yùn)算符低于低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。 例如例如: max=ab? a:b+1max= ab? a:(b+1) 而不是而不是 max=(ab? a:b)+1條件運(yùn)算符結(jié)合性為條件運(yùn)算符結(jié)合性為從右至左從右至左。 例如例如: ab? a:cd ? c:d 相當(dāng)于相當(dāng)于 ab? a:(cd? c:d)條件表達(dá)式不能取代一般的條件表達(dá)式不能取代一般的if語(yǔ)句語(yǔ)句,只有當(dāng)只有當(dāng)if 的兩的兩 個(gè)分支為個(gè)分支為給給同一變量同一變量賦

20、值時(shí)才可替代賦值時(shí)才可替代if. 例如例如:求求 y=a+|b| printf(“y=%dn”,b0?a+b:a-b);表達(dá)式表達(dá)式1、表達(dá)式、表達(dá)式2、表達(dá)式、表達(dá)式3的類(lèi)型可以不同。的類(lèi)型可以不同。 例如例如: xy? 1 : 1.53、條件運(yùn)算符、條件運(yùn)算符5.3 if語(yǔ)句語(yǔ)句3、條件運(yùn)算符、條件運(yùn)算符例例8 輸入一個(gè)字符,判別它是否大寫(xiě)字母輸入一個(gè)字符,判別它是否大寫(xiě)字母。 如果是,將它轉(zhuǎn)換成小寫(xiě)字母;如果是,將它轉(zhuǎn)換成小寫(xiě)字母; 如果不是,不轉(zhuǎn)換。如果不是,不轉(zhuǎn)換。 然后輸出最后得到的字符。然后輸出最后得到的字符。main ( ) char ch; scanf (%c, &c

21、h); ch=(ch=A & ch=Z ? (ch+32):ch; printf(%c, ch) 5.3 if語(yǔ)句語(yǔ)句switchswitch語(yǔ)句是語(yǔ)句是多分支選擇語(yǔ)句多分支選擇語(yǔ)句,也叫,也叫開(kāi)關(guān)語(yǔ)句開(kāi)關(guān)語(yǔ)句一般形式:一般形式: switch (表達(dá)式表達(dá)式) case常量表達(dá)式常量表達(dá)式1:語(yǔ)句語(yǔ)句 1 break; case常量表達(dá)式常量表達(dá)式2: 語(yǔ)句語(yǔ)句 2 break; case常量表達(dá)式常量表達(dá)式n:語(yǔ)句語(yǔ)句 n break; default: 語(yǔ)句語(yǔ)句 n+1 5.4 switch語(yǔ)句語(yǔ)句switch表達(dá)式語(yǔ)句1語(yǔ)句2語(yǔ)句n語(yǔ)句n+1式 1式2式ndefaultcase

22、 執(zhí)行過(guò)程:執(zhí)行過(guò)程:當(dāng)表達(dá)式的值與某一個(gè)當(dāng)表達(dá)式的值與某一個(gè) case 后面的常量表達(dá)式后面的常量表達(dá)式的值相等時(shí),就執(zhí)行的值相等時(shí),就執(zhí)行此此 case 后面的語(yǔ)句。后面的語(yǔ)句。若所有的若所有的 case 中中的常量表達(dá)式的值都沒(méi)有與表達(dá)式的值匹配,則執(zhí)行的常量表達(dá)式的值都沒(méi)有與表達(dá)式的值匹配,則執(zhí)行 default 后面的語(yǔ)句。后面的語(yǔ)句。 例例9 9 根據(jù)成績(jī)等級(jí),打印出成績(jī)范圍。根據(jù)成績(jī)等級(jí),打印出成績(jī)范圍。5.4 switch語(yǔ)句語(yǔ)句main( ) char grade; printf(Enter your graden); scanf(%c,&grade); switch

23、(grade) case A: printf(“90100n); break; case B: printf(“8089n); break; case C: printf(“7079n); break; case D: printf(6069 n); break; case E: printf(60n); break; default: printf(errorn); 沒(méi)有沒(méi)有breakbreak將是將是錯(cuò)誤的。錯(cuò)誤的。例如輸入例如輸入B B,打,打印出:印出:80897079606960error注意注意:case:case常量表達(dá)式只起語(yǔ)句標(biāo)號(hào)作用常量表達(dá)式只起語(yǔ)句標(biāo)號(hào)作用; ; 必須用必

24、須用breakbreak語(yǔ)句終止多個(gè)語(yǔ)句終止多個(gè)casecase連續(xù)執(zhí)行,否則只要有一連續(xù)執(zhí)行,否則只要有一個(gè)個(gè)casecase滿(mǎn)足后滿(mǎn)足后, ,以下的語(yǔ)句全部無(wú)條件執(zhí)行。除非以下的語(yǔ)句全部無(wú)條件執(zhí)行。除非遇到遇到“ ”或或breakbreak語(yǔ)句來(lái)終止語(yǔ)句來(lái)終止switchswitch語(yǔ)句的執(zhí)行。語(yǔ)句的執(zhí)行。 例例10 10 根據(jù)成績(jī)范圍,打印出成績(jī)等級(jí)。根據(jù)成績(jī)范圍,打印出成績(jī)等級(jí)。5.4 switch語(yǔ)句語(yǔ)句main( ) int score,num; char grade; scanf(%d,&score); num=score/10; switch(num) case 10:

25、 case 9 : grade=A; break; case 8 : grade=B; break; case 7 : grade=C; break; case 6 : grade=D; break; default : grade=E; printf(%d %c,score,grade);鑒于上述原因,鑒于上述原因,2個(gè)或多個(gè)個(gè)或多個(gè)case可可以共用一組執(zhí)行以共用一組執(zhí)行語(yǔ)句語(yǔ)句1. 表達(dá)式的類(lèi)型和常量表達(dá)式的類(lèi)型必須一致;表達(dá)式的類(lèi)型和常量表達(dá)式的類(lèi)型必須一致;switchswitch后面后面的表達(dá)式一般情況下是的表達(dá)式一般情況下是整型整型或或字符型字符型。2. 每一個(gè)每一個(gè) case

26、的常量表達(dá)式的值必須互不相同。的常量表達(dá)式的值必須互不相同。3. 多個(gè)多個(gè)case和和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。的出現(xiàn)次序不影響執(zhí)行結(jié)果。4. case常量表達(dá)式只起語(yǔ)句標(biāo)號(hào)作用常量表達(dá)式只起語(yǔ)句標(biāo)號(hào)作用; 必須用必須用break語(yǔ)句終止多個(gè)語(yǔ)句終止多個(gè)case連續(xù)執(zhí)行,連續(xù)執(zhí)行, 否則只要有一個(gè)否則只要有一個(gè)case滿(mǎn)足后滿(mǎn)足后,以下的語(yǔ)句全部無(wú)條件執(zhí)行。以下的語(yǔ)句全部無(wú)條件執(zhí)行。 說(shuō)明:說(shuō)明:5.4 switch語(yǔ)句語(yǔ)句 main( ) int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; ca

27、se 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(na=%d,b=%d,a,b); switch的嵌套的嵌套5.4 switch語(yǔ)句語(yǔ)句 5.5 5.5 程序舉例程序舉例例 寫(xiě)程序,判斷某一年是否閏年。閏年的算法。用一個(gè)標(biāo)志用一個(gè)標(biāo)志leap代表閏年與否。代表閏年與否。leap=1,代表閏年,代表閏年,leap=0,代表,代表非閏年。非閏年。#include #include void main()void main() int year, leap; int year, leap; scanf(%d,&year)

28、; scanf(%d,&year); if (year%4=0) if (year%4=0) if (year%100=0)if (year%100=0) if (year%400=0) leap=1;if (year%400=0) leap=1; else leap=0; else leap=0; else leap=1;else leap=1; else leap=0;else leap=0; if (leap)if (leap) printf(%d is a leap year.n ,year); printf(%d is a leap year.n ,year); else e

29、lse printf(%d is not a leap year.n ,year); printf(%d is not a leap year.n ,year); (?。ǎ。?; (?。ǎ。?; (?。。?; ; 運(yùn)行情況: . . if (year%4=0&year%100!=0)|year%400=0)if (year%4=0&year%100!=0)|year%400=0) 1 1; 0 0;例例 求求x x2 2方程的解。方程的解?;镜乃惴ǎ夯镜乃惴ǎ?,不是二次方程。,不是二次方程。 b b2 2,有兩個(gè)相等實(shí)根。,有兩個(gè)相等實(shí)根。 b b2 2 ,有兩個(gè)不等

30、實(shí)根。,有兩個(gè)不等實(shí)根。 b b2 2 ,有兩個(gè)共軛復(fù)根。,有兩個(gè)共軛復(fù)根。#include #include void main ( ) float a,b,c,disc,x1,x2,realpart,imagpart; scanf(“%f,%f,%f”,&a,&b,&c); printf(“the equation ”); if(fabs(a)=1e-6) printf(“is not a quadraticn”); else disc=b*b-4*a*c; if(fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqr

31、t(disc)/(2*a); printf(has distinct real roots:%8.4f and %8.4fn,x1,x2); else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(has complex rootsn); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart); 例 運(yùn)輸公司對(duì)用戶(hù)計(jì)算運(yùn)費(fèi)。 路程()越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下: 沒(méi)有折扣 折扣 折扣 折扣 折扣 1折扣 設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為,貨物重為, 距離為,折扣為,則總運(yùn)費(fèi)的計(jì)算公式為: *() 分析:用if else分支方法,可以完成,但區(qū)間太多。 用switch,尋找合適的表達(dá)式以及對(duì)應(yīng)的常量 分析折扣變化的規(guī)律性: 折扣的“變化點(diǎn)”都是的倍數(shù),在橫軸上加一種坐標(biāo),c的值為s/250。c代表250的倍數(shù)。 , 無(wú)折扣;

溫馨提示

  • 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)論