版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
邏輯運(yùn)算和判斷選取控制第一頁,共三十七頁,編輯于2023年,星期五4.1.1關(guān)系運(yùn)算符及其優(yōu)先次序
C語言提供6種關(guān)系運(yùn)算符:
(1)<(小于)
(2)<=(小于或等于)
(3)>(大于)
(4)>=(大于或等于)〕(5)==(等于)
(6)!=(不等于)關(guān)于優(yōu)先次序:1.前4種關(guān)系運(yùn)算符(<,<=,>,>=)的優(yōu)先級(jí)別相同,后兩種也相同。前4種高于后2種。例如,“>”優(yōu)先于“==”。而“>”與“<”優(yōu)先級(jí)相同。
2.關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。
3.關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符。高→低算術(shù)運(yùn)算符關(guān)系運(yùn)算符賦值運(yùn)算符例如:c>a+b等效于c>(a+b)a>b!=c等效于(a>b)!=ca==b<c等效于a==(b<c)第二頁,共三十七頁,編輯于2023年,星期五4.1.2關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式)連接起來的式子,稱關(guān)系表達(dá)式。例如,下面都是合法的關(guān)系表達(dá)式:a>b,a+b>b+c,(a=3)>(b=5),’a’<’b’,(a>b)>(b<c)關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。例如,關(guān)系表達(dá)式“5=3”的值為“假”“5>=0”的值為“真”。C語言沒有邏輯型數(shù)據(jù)(Pascal語言以True表示“真”,以Fa1se表示“假”。PASCAL和FORTRAN等語言都有邏輯型變量和邏輯型常量),以1代表“真”,以“0”代表“假”。例如,若a=3,b=2,c=1,則:
a>b的值為”真”,表達(dá)式的值為1。(a>b)==c的值為“真”(因?yàn)閍>b的值為1,等于c的值),表達(dá)式的值為1。
b+c<a的值為“假”,表達(dá)式的值為0。如果有以下賦值表達(dá)式:
d=a>bd的值為1。
f=a>b>cf的值為0(因?yàn)椤埃尽边\(yùn)算符是自左至右的結(jié)合方向,先執(zhí)行“a>b”,得值為1,再執(zhí)行關(guān)系運(yùn)算:“1>c”得值0,賦給f第三頁,共三十七頁,編輯于2023年,星期五
4.2邏輯運(yùn)算符和邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來就是邏輯表達(dá)式。下面介紹C語言中的邏輯運(yùn)算符和邏輯運(yùn)算。4.2.1邏輯運(yùn)算符及其優(yōu)先次序
C語言提供三種邏輯運(yùn)算符:
1.&&邏輯與(相當(dāng)于其它語言中的AND)
2.||邏輯或(相當(dāng)于其它語言中的OR)
3.!邏輯非(相當(dāng)于其它語言中的NOT)
&&和||”是“雙目(元)運(yùn)算符”,它要求有兩個(gè)運(yùn)算量(操作數(shù)),如(a>b)&&(x>y),(a>b)||(x>y)?!?!”是“一目(元)運(yùn)算符”,只要求有一個(gè)運(yùn)算量,如!(a>b)。邏輯運(yùn)算舉例如下:
a&&b若a,b為真,則a&&b為真。
a||b若a,b之一為真,則a||b為真。
!a若a為真,則!a為假。第四頁,共三十七頁,編輯于2023年,星期五下表為邏輯運(yùn)算的“真值表”。用它表示當(dāng)a和b的值為不同組合時(shí),各種邏輯運(yùn)算所得到的值。
ab!a!ba&&ba||bTTFFTTTFFTFF
在一個(gè)邏輯表達(dá)式中如果包含多個(gè)邏輯運(yùn)算符,如!a&&b||x>y&&c優(yōu)先次序:高→低!→算術(shù)運(yùn)算符→關(guān)系運(yùn)算符→&&→||→賦值運(yùn)算符!a&&b||x>y&&c((!a)&&b)||((x>y)&&c)(a>b)&&(x>y)可寫成:a>b&&x>y(a==b)||(x==y)可寫成:a==b||x>y(!a)||(a>b)可寫成:!a||a>b第五頁,共三十七頁,編輯于2023年,星期五4.2.2邏輯表達(dá)式如前所述,邏輯表達(dá)式的值應(yīng)該是一個(gè)邏輯量“真”或“假”。C語言編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時(shí),以數(shù)值1代表“真”,以0代表“假”,但在判斷一個(gè)量是否為“真”時(shí),以0代表“假”,以非0代表“真”。即將一個(gè)非零的數(shù)值認(rèn)作為“真”。例如:①若a=4,則!a的值為0。因?yàn)閍的值為非0,被認(rèn)作“真”,對(duì)它進(jìn)行“非”運(yùn)算,得“假”,“假”以0代表。②若a=4,b=5,則a&&b的值為1。因?yàn)閍和b均為非0,被認(rèn)為是“真”,因此a&&b的值也為“真”,值為1。③a、b值同前,a||b的值為1。④a、b值同前,!a||b的值為1。⑤4&&0||2的值為1。通過這幾個(gè)例子可以看出,由系統(tǒng)給出的邏輯運(yùn)算結(jié)果不是0就是1,不可能是其它數(shù)值。而在邏輯表達(dá)式中作為參加邏輯運(yùn)算的運(yùn)算對(duì)象(操作數(shù))可以是0(“假”)或任何非0的數(shù)值(按“真”對(duì)待)。如果在一個(gè)表達(dá)式中不同位置上出現(xiàn)數(shù)值,應(yīng)區(qū)分哪些是作為數(shù)值運(yùn)算或關(guān)系運(yùn)算的對(duì)象,哪些作為邏輯運(yùn)算的對(duì)象,第六頁,共三十七頁,編輯于2023年,星期五例如
5>3&&2||8<4-!0表達(dá)式自左至右掃描求解。首先處理“5>3”(因?yàn)殛P(guān)系運(yùn)算符優(yōu)先于&&)。在關(guān)系運(yùn)算符兩側(cè)的5和3作為數(shù)值參加關(guān)系運(yùn)算,”5>3”的值為:1。再進(jìn)行”1&&2”的運(yùn)算,此時(shí)1和2均是邏輯運(yùn)算對(duì)象,均作“真”處理,因此結(jié)果為1。再往下進(jìn)行“1||8<4-!0”的運(yùn)算。根據(jù)優(yōu)先次序,先進(jìn)行“!0”運(yùn)算得1,因此,要運(yùn)算的表達(dá)式變成:“1||8<4-1”,即“1||8<3”,關(guān)系運(yùn)算符“<”兩側(cè)的8和3作為數(shù)值參加比較,“8<3”的值為0(“假”)。最后得到“1||0”的結(jié)果1。實(shí)際上,邏輯運(yùn)算符兩側(cè)的運(yùn)算對(duì)象不但可以是0和1,或者是0和非0的整數(shù),也可以是任何類型的數(shù)據(jù)??梢允亲址?、實(shí)型或指針型等。系統(tǒng)最終以0和非0來判定它們屬于“真”或“假”。例如
‘c’&&’d’的值為1(因?yàn)椤痗’和’d’的Ascii值都不為0,按“真”處理)。在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例如:
1.a(chǎn)&&b&&c只有a為真(非0)時(shí),才需要判別b的值,只有a和b都為真的情況下才需要判別c的值。只要a為假,就不必判別b和c,(此時(shí)整個(gè)表達(dá)式已確定為假)。如果a為真,b為假,不判別c。
第七頁,共三十七頁,編輯于2023年,星期五2.a(chǎn)||b||c只要a為真(非0)就不必判別b和c對(duì)&&運(yùn)算符只有a≠0,才繼續(xù)進(jìn)行右面的運(yùn)算。對(duì)||運(yùn)算符來說,只有a=0才繼續(xù)進(jìn)行其右面的運(yùn)算。因此,如果有下面的邏輯表達(dá)式:(m=a>b)&&(n=c>d)當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時(shí),由于a>b的值為0,m=0,而n=c>d不被執(zhí)行,因此n的值不是0而仍保持原值1。這點(diǎn)請(qǐng)讀者注意。熟練掌握C語言的關(guān)系運(yùn)算符和邏輯運(yùn)算符后,可以巧妙地用一個(gè)邏輯表達(dá)式來表示一個(gè)復(fù)雜的條件。例如,判別某一年year是否閏年。閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除。②能被4整除,又能彼400整除??梢杂靡粋€(gè)邏輯表達(dá)式來表示:
year%4==0&&year%100!=0||year%400==0
當(dāng)year為某一整數(shù)值時(shí),上述表達(dá)式值為真(1),則year為閏年;否則為非閏年??梢约右粋€(gè)“!”用來判別非閏年:
!(year%4==0&&year%100!=0||year%400==0)
若表達(dá)式值為真(1),year為非閏年。也可以用下面邏輯表達(dá)式判別非閏年:(year%4!=0)||(year%100==0||year%400!=0)表達(dá)式為真,year為非閏年。請(qǐng)注意表達(dá)式中右面的括弧內(nèi)的不同運(yùn)算符(%,!,&&、==)的運(yùn)算優(yōu)先次序。第八頁,共三十七頁,編輯于2023年,星期五4.3if語句
if語句是用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。4.3.1if語句的三種形式
C語言提供了三種形式的if語句:
1.if(表達(dá)式)語句例如:if(x>y)printf(”%d”,x);
這種if語句的執(zhí)行過程見圖0表達(dá)式語句1第九頁,共三十七頁,編輯于2023年,星期五2.if(表達(dá)式)語句1else語句2
例如:if(x>y)printf(”%d”,x);
elseprintf(”%d”,y);見圖表達(dá)式語句1語句2真假第十頁,共三十七頁,編輯于2023年,星期五3.
if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3elseif(表達(dá)式m)語句melse語句n
流程圖表達(dá)式1FT表達(dá)式3FT表達(dá)式2FT表達(dá)式4FT語句4語句5語句3語句2語句1第十一頁,共三十七頁,編輯于2023年,星期五例如。
if(number>500)cost=0.15;
elseif(number>300)cost=0.10:
elseif(number>100)cost=0.075;
elseif(number>50)cost=0.05;elsecost=0;
說明:.三種形式的if語句中在if后面都有“表達(dá)式”,一般為邏輯表達(dá)式或關(guān)系表達(dá)式。例如,if(a==b&&.x==y)printf(”a=b,x=y”);系統(tǒng)對(duì)表達(dá)式的值進(jìn)行判斷,若為0,按“假”處理,若為非0,按“真”處理,執(zhí)行指定的語句。假如有以下語句:if(3)printf(“ok.”);是合法的,執(zhí)行結(jié)果輸出”ok”。因?yàn)楸磉_(dá)式的值為3,按“真”處理。由此可見,表達(dá)式的類型不限于邏輯表達(dá)式,可以是任意的數(shù)值類型(包括整型、實(shí)型、字符型、指針型數(shù)據(jù))。例如,下面的語句也是合法的:
if(’a’)printf(”%d”,’a’);執(zhí)行結(jié)果:輸出a的AscII碼97。第十二頁,共三十七頁,編輯于2023年,星期五
2.第二、第三種形式的討語句中,在每個(gè)else前面有一分號(hào),整個(gè)語句結(jié)束處有一分號(hào)。例如:
if(x>0)printf(“%f”,x);elseprintf(“%f”,-x);
這是由于分號(hào)是C語句中不可缺少的部分,這個(gè)分號(hào)是讓語句中的內(nèi)臥語句所要求的。如果無此分號(hào),則出現(xiàn)語法錯(cuò)誤。但應(yīng)注意,不要誤認(rèn)為上面是兩個(gè)語句(if語句和else語句)。它們都屬于同一個(gè)if語句。else子句不能作為語句單獨(dú)使用,它必須是if語句的一部分,與if配對(duì)使用。
3.在if和else后面可以只含一個(gè)內(nèi)嵌的操作語句(如上例),也可以有多個(gè)操作語句,此時(shí)用花括號(hào)“{}”將幾個(gè)語句括起來成為一個(gè)復(fù)合語句。如:
if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(”area=%6.2f”,area);}
elseprintf(”itisnotatrilateral”);注意在{}外面不需要再加分號(hào)。因?yàn)閧}內(nèi)是一個(gè)完整的復(fù)合語句,不需另附加分號(hào)。第十三頁,共三十七頁,編輯于2023年,星期五例4。1輸入兩個(gè)實(shí)數(shù),按代數(shù)值由小到大次序輸出這兩個(gè)數(shù)。
/*example4.1atpage53*/main(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f",a,b);}運(yùn)行情況如下。
3.6,-3.2一3.20.3.60第十四頁,共三十七頁,編輯于2023年,星期五[例4.2」輸入三個(gè)數(shù),按大小順序輸出。main(){floata,b,c,t;printf("Inputa,b,c\n");scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c);}
運(yùn)行情況如下:3,7,11.O0,3.00,7.00第十五頁,共三十七頁,編輯于2023年,星期五4.3.2語句的嵌套在if語句中又包含一個(gè)或多個(gè)if語句稱為if語句的嵌套。一般形式如下:
if()if()語句1else語句2elseif()語句3else語句4
應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。從最內(nèi)層開始,else總是與它上面最近的(未曾配對(duì)的)if配對(duì)。假如寫成:
1f()
if()語句1elseif()語句2else語句3編程序者把else寫在與第一個(gè)if(外層if)同一列上,希望else與第一個(gè)if對(duì)應(yīng),但實(shí)際上else是與第二個(gè)if配對(duì),因?yàn)樗鼈兿嗑嘧罱?。因此最好使?nèi)嵌if語句也包含else部分,這樣if的數(shù)目和else的數(shù)目相同,從內(nèi)層到外層一一對(duì)應(yīng),不致出措。第十六頁,共三十七頁,編輯于2023年,星期五如果if與else的數(shù)目不一樣,為實(shí)現(xiàn)程序設(shè)計(jì)者的企圖,可以加花括弧來確定配對(duì)關(guān)系。例如:
if(){if()語句1}
else
語句2這時(shí)if限定了內(nèi)嵌if語句的范圍,因此else與第一個(gè)讓配對(duì)?!咐?.3]有一函數(shù):
-1(x<0)y=0(x=0)1(x>0)編一程序,輸入一個(gè)x值,輸出y值。有以下幾種寫法,請(qǐng)讀者判斷哪些是正確的?第十七頁,共三十七頁,編輯于2023年,星期五程序1:
main()
{intx,y;scanf(”%d”,&x);
if(x<0)y=-1;
elseif(x==0)y=0;
elsey=1;
printf(”x=%d,y=%d\n”,x,y);}
程序2:將上面程序的if語句改為:
if(x>=0)
if(x>0)y=1;elsey=0;
elsey=一1;
第十八頁,共三十七頁,編輯于2023年,星期五程序3:將上述if語句改為:
y=一1;
if(x!=0)if(x>0)y=1:
elsey=0;程序4:
y=0;
if(x>=0)if(x>0)y=1;
elsey=-1;
只有程序1和2是正確的。一般把內(nèi)嵌的if語句放在外層的else子句中(如程序1那樣),這樣由于有外層的else相隔,內(nèi)嵌的else不會(huì)和外層的if配對(duì),而只能與內(nèi)嵌的讓配對(duì),從而不致搞混,如像程序3、4那樣就容易混淆。第十九頁,共三十七頁,編輯于2023年,星期五4.3.3條件運(yùn)算符若if語句中,在表達(dá)式為“真”和“假”時(shí),且都只執(zhí)行一個(gè)賦值語句給同一個(gè)變量賦值時(shí),可以用簡單的條件運(yùn)算符來處理。例如,若有以下if語句:
if(a>b)max=a;elsemax=b;可以用下面的條件運(yùn)算符(?:)來處理:
max=(a>b)?a:b;其中”(a>b)?a:b”是一個(gè)“條件表達(dá)式”。它是這樣執(zhí)行的。如果(a>b)條件為真,則條件表式取值a,否則取值b.
條件運(yùn)算符要求有三個(gè)操作對(duì)象,稱三目(元)運(yùn)算符。條件表達(dá)式的一般形式為
表達(dá)式1?表達(dá)式2:表達(dá)式3
它的執(zhí)行過程見圖4.7。表達(dá)式1表達(dá)式2表達(dá)式3T(1)F(0)第二十頁,共三十七頁,編輯于2023年,星期五說明
1.條件運(yùn)算符的執(zhí)行順序:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值。
max=(a>b)?a:b執(zhí)行結(jié)果就是將條件表達(dá)式的值賦給max,也就是將a和b二者中大者賦給max。
2.條件運(yùn)算符優(yōu)先于賦值運(yùn)算符,因此上面賦值表達(dá)式的求解過程是先求解條件表達(dá)式,再將它的值賦給max。條件運(yùn)算符的優(yōu)先級(jí)別比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符都低。因此,
max=(a>b)?a:b括號(hào)可以不要,可寫成max=a>b?a:b如果有a>b?a:b+1相當(dāng)于a>b?a:(b十1),而不相當(dāng)于(a>b?a:b)+1。第二十一頁,共三十七頁,編輯于2023年,星期五3。條件運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆薄H绻幸韵聴l件表達(dá)式:
a>b?a:c>d?c:d相當(dāng)于a>b?a:(c>d?c:d)a=1,b=2,c=3,d=4,則條件表達(dá)式的值等于4。
4.條件表達(dá)式不能取代一般的if語句,只有在if語句中內(nèi)嵌的語句為賦值語句(且兩個(gè)分支都給同一個(gè)變量賦值)時(shí)才能代替if語句。象下面的if語句就無法用一個(gè)條件表達(dá)式代替。
if(a>b)printf(“%d”,a);
elseprintf(“%d”,b);但可以用下面語句代替:printf(”%d”,a>b?a:b);即將條件表達(dá)式的值輸出。
5.條件表達(dá)式中,表達(dá)式1的類型可以與表達(dá)式2和表達(dá)式3的類型不同。如x?’a’:’b’x是整型變量,若x=0,則條件表達(dá)式的值為’b’。表達(dá)式2和表達(dá)式3的類型也可以不同,此時(shí)條件表達(dá)式的值的類型為二者中較高的類型。如x>y?1:1.5如x<=y,則條件表達(dá)式的值為1.5,若x>y值應(yīng)為1,由于1.5是實(shí)型,比整型高(見第二章2.7),因此,將1轉(zhuǎn)換成實(shí)型值1.0。第二十二頁,共三十七頁,編輯于2023年,星期五「例4.4」輸入一個(gè)字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。
/*example4.4atpage57*/main(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z')?(ch+32):ch;printf("%c",ch);}
運(yùn)行結(jié)果如下:條件表達(dá)式中的(ch+32),其中32是小寫字母和大寫字母ASCII碼的差值(請(qǐng)參閱附錄1)。第二十三頁,共三十七頁,編輯于2023年,星期五4.4switch語句
switch語句是多分支選擇語句。if語句只有兩個(gè)分支可供選擇,而實(shí)際問題中常常需要用到多分支的選擇。例如,學(xué)生成績分類(90分以為‘A’等,80~89分為‘B’等,70~79分為‘c’,等,……);人口統(tǒng)計(jì)分類(按年齡分為老、中、青、少、兒童);工資統(tǒng)計(jì)分類;銀行存款分類;……等。當(dāng)然這些都可以用嵌套的讓語句來處理,但如果分支較多,則嵌套的if語句層數(shù)多,程序冗長而且可讀性降低。C語言提供switch語句直接處理多分支選擇,它相當(dāng)于Pascal語言中的case語句。它的一般形式如下:
switch(表達(dá)式)
{case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2case常量表達(dá)式n:語句ndefault:語句n十1}
第二十四頁,共三十七頁,編輯于2023年,星期五例如,根據(jù)考試成績的等級(jí)打印出百分制分?jǐn)?shù)段:
switch(grade)
{case‘A’:printf(“85~100\n”);
case‘B’:printf(“70~84\n”);
case‘C’:printf(“60~69\n”);
case’D’:printf(“<60\n”);
default:printf(”error\n”);
}第二十五頁,共三十七頁,編輯于2023年,星期五說明:
1.switch后面括弧內(nèi)的“表達(dá)式”,可以是整型表達(dá)式或字符型表達(dá)式,也可以是枚舉型數(shù)據(jù)(見第十章)。對(duì)其它類型,原來的C標(biāo)準(zhǔn)是不允許的,而新的ANSI標(biāo)準(zhǔn)允許上述表達(dá)式和case常量表達(dá)式為任何類型。
2.當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行defau1t后面的語句。3。每一個(gè)case的常量表達(dá)式的值必須互不相同,否則就會(huì)出現(xiàn)互相矛盾的現(xiàn)象(對(duì)表達(dá)式的同一個(gè)值,有兩種或多種執(zhí)行方案)。
4.各個(gè)case的出現(xiàn)次序不影響執(zhí)行結(jié)果。例如,可以先出現(xiàn)case‘D’:…,然后是case‘A’:……5。執(zhí)行完一個(gè)case后面的語句后,流程控制轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行。“case常量表達(dá)式”只是起語句標(biāo)號(hào)作用,并不是在該處進(jìn)行條件判斷。在執(zhí)行switch語句時(shí),根據(jù)switch后面表達(dá)式的值找到匹配的人口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行下去,不再進(jìn)行判斷。第二十六頁,共三十七頁,編輯于2023年,星期五例如,上面的例子中,若grade的值等于‘A’,則將連續(xù)輸出:
85~10070~8460~69〈60error因此,應(yīng)該在執(zhí)行一個(gè)case分支后,使流程跳出switch結(jié)構(gòu),即終止switch語句的執(zhí)行,可以用了個(gè)break語句來達(dá)到此目的,將上面的switch結(jié)構(gòu)改寫如下:
switch(grade)
{case‘A’:printf(“85~100\n”);break;
case‘B’:printf(“70~84\n”);break;
case‘C’:printf(“160~69\n”);break;
case‘D’:printf(“<60\n”);break;defaultprintf(“error\n“);ABCD其它grade85~10070~8460~69<60error第二十七頁,共三十七頁,編輯于2023年,星期五最后一個(gè)分支(default)可以不加break語句。如果grade的值為‘B’,則只輸出“70~84。流程圖見圖4.8。在case后面中雖然包含一個(gè)以上執(zhí)行語句,但可以不必用花括弧括起來,會(huì)自動(dòng)順序執(zhí)行本case后面所有的執(zhí)行語句。當(dāng)然加上花括弧也可以。
6.多個(gè)case可以共用一組執(zhí)行語句,如:
case‘A’:
case‘B’:
case‘C’:printf(“>60\n”);break;grade的值為‘A’、‘B’或‘C’時(shí)都執(zhí)行同一組語句。第二十八頁,共三十七頁,編輯于2023年,星期五4.5程序舉例[例4.5」寫程序,判某一年是否閏年。判別某一年year是否閏年。閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除。②能被4整除,又能彼400整除。可以用一個(gè)邏輯表達(dá)式來表示:
year%4==0&&year%100!=0||year%400==0
當(dāng)year為某一整數(shù)值時(shí),上述表達(dá)式值為真(1),則year為閏年;否則為非閏年。以變量Leap代表是否閏年的信息。若閏年,令leap=1。非閏年,leap=0。最后判斷l(xiāng)eap是否1(真);若是,則輸出“閏年”信息。程序如下:第二十九頁,共三十七頁,編輯于2023年,星期五
/*example4.5atpage60*/main(){intyear,leap;printf("Inputayear\n");scanf("%d",&year);if(year%4==0){if(year%100==0){if(year%400==0) leap=1; elseleap=0;}elseleap=1;}elseleap=0;第三十頁,共三十七頁,編輯于2023年,星期五
if(leap)printf("%dis",year);elseprintf("%disnot",year);printf("aleapyear\n");}/*if((year%4==0&&year%100!=0)||(year%400==0))leap=1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版屋頂花園景觀設(shè)計(jì)施工合同4篇
- 二零二五年度大師級(jí)心理咨詢師團(tuán)隊(duì)合作協(xié)議4篇
- 2025年度文化旅游市場調(diào)研與開發(fā)委托合同協(xié)議書4篇
- 二零二五版綠色建筑項(xiàng)目施工企業(yè)節(jié)能減排合同2篇
- 二零二五版鋁材產(chǎn)業(yè)鏈上下游合作協(xié)議4篇
- 2025年度跨境電商合同欺詐賠償及糾紛解決機(jī)制4篇
- 2025年度新能源儲(chǔ)能技術(shù)研發(fā)與市場推廣服務(wù)合同范本4篇
- 2025年度寵物領(lǐng)養(yǎng)及養(yǎng)護(hù)服務(wù)合同范本4篇
- 2025年度教育培訓(xùn)機(jī)構(gòu)合作辦學(xué)協(xié)議規(guī)范文本3篇
- 2024版玩具工廠采購合同之歐陽理創(chuàng)編
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- 小學(xué)道德與法治學(xué)科高級(jí)(一級(jí))教師職稱考試試題(有答案)
- 申請(qǐng)使用物業(yè)專項(xiàng)維修資金征求業(yè)主意見表
- 河北省承德市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 實(shí)用性閱讀與交流任務(wù)群設(shè)計(jì)思路與教學(xué)建議
- 應(yīng)急柜檢查表
- 通風(fēng)設(shè)施標(biāo)準(zhǔn)
- 酒店市場營銷教案
- 房屋買賣合同簡單范本 房屋買賣合同簡易范本
- 無抽搐電休克治療規(guī)范
- 環(huán)保有限公司營銷策劃方案
評(píng)論
0/150
提交評(píng)論