付費(fèi)下載
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《C程序設(shè)計(jì)》
作者:譚浩強(qiáng) 主講:小甲魚
第四章分支程序設(shè)計(jì)
——最常用的C程序設(shè)計(jì)更多資源下載:
關(guān)系運(yùn)算符和表達(dá)式關(guān)系運(yùn)算符:在程序中經(jīng)常需要比較兩個(gè)量的大小關(guān)系,以決定程序下一步的工作。比較兩個(gè)量的運(yùn)算符稱為關(guān)系運(yùn)算符。復(fù)習(xí)運(yùn)算符的優(yōu)先次序……關(guān)系運(yùn)算符及其優(yōu)先次序在C語(yǔ)言中有以下關(guān)系運(yùn)算符:1)<小于2)<=小于或等于3)>大于4)>=大于或等于5)==等于6)!=不等于關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性均為左結(jié)合。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。在六個(gè)關(guān)系運(yùn)算符中,前四個(gè)<,<=,>,>=的優(yōu)先級(jí)相同,高于==和!=,==和!=的優(yōu)先級(jí)相同。關(guān)系表達(dá)式關(guān)系表達(dá)式的一般形式為: 表達(dá)式關(guān)系運(yùn)算符表達(dá)式例如:a+b
>
c-dx
>
3/2‘a(chǎn)’+1
<
c-i-5*j
==
k+1都是合法的關(guān)系表達(dá)式。由于表達(dá)式也可以又是關(guān)系表達(dá)式。因此也允許出現(xiàn)嵌套的情況。例如:a>(b>c)a!=(c==d)等。關(guān)系表達(dá)式關(guān)系表達(dá)式的值是真”和“假”,用“1”和“0”表示。如:5
>
0的值為“真”,即為1。(a=3)
>
(b=5)由于3
>
5不成立,故其值為假,即為0。【例5.1】voidmain(){charc='k';inti=1,j=2,k=3;floatx=3e+5,y=0.85;printf("%d,%d\n",’a’+5<c,-i-2*j>=k+1);printf("%d,%d\n",1<j<5,x-5.25<=x+y);printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);}在本例中求出了各種關(guān)系運(yùn)算符的值。字符變量是以它對(duì)應(yīng)的ASCII碼參與運(yùn)算的。對(duì)于含多個(gè)關(guān)系運(yùn)算符的表達(dá)式,如k==j==i+5,根據(jù)運(yùn)算符的左結(jié)合性,先計(jì)算k==j,該式不成立,其值為0,再計(jì)算0==i+5,也不成立,故表達(dá)式值為0。邏輯運(yùn)算符和表達(dá)式邏輯運(yùn)算符極其優(yōu)先次序C語(yǔ)言中提供了三種邏輯運(yùn)算符:1)&&與運(yùn)算2)||或運(yùn)算3)!非運(yùn)算與運(yùn)算符&&和或運(yùn)算符||均為雙目運(yùn)算符。具有左結(jié)合性。非運(yùn)算符!為單目運(yùn)算符,具有右結(jié)合性。邏輯運(yùn)算符和其它運(yùn)算符優(yōu)先級(jí)的關(guān)系可表示如下:!(非)→&&(與)→||(或)“&&”和“||”低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符。邏輯運(yùn)算符極其優(yōu)先次序按照運(yùn)算符的優(yōu)先順序可以得出: a>b&&c>d等價(jià)于(a>b)&&(c>d)!b==c||d<a等價(jià)于((!b)==c)||(d<a)a+b>c&&x+y<b等價(jià)于((a+b)>c)&&((x+y)<b)邏輯運(yùn)算的值邏輯運(yùn)算的值也為“真”和“假”兩種,用“1”和“0”來(lái)表示。其求值規(guī)則如下:1.與運(yùn)算&&:參與運(yùn)算的兩個(gè)量都為真時(shí),結(jié)果才為真,否則為假。例如:5>0&&4>2由于5>0為真,4>2也為真,相與的結(jié)果也為真。2.或運(yùn)算||:參與運(yùn)算的兩個(gè)量只要有一個(gè)為真,結(jié)果就為真。兩個(gè)量都為假時(shí),結(jié)果為假。例如:5>0||5>8由于5>0為真,相或的結(jié)果也就為真。邏輯運(yùn)算的值3.非運(yùn)算!:參與運(yùn)算量為真時(shí),結(jié)果為假;參與運(yùn)算量為假時(shí),結(jié)果為真。例如:!(5>0)的結(jié)果為假。雖然C編譯在給出邏輯運(yùn)算值時(shí),以“1”代表“真”,“0”代表“假”。但反過(guò)來(lái)在判斷一個(gè)量是為“真”還是為“假”時(shí),以“0”代表“假”,以非“0”的數(shù)值作為“真”。例如:由于5和3均為非“0”因此5&&3的值為“真”,即為1。又如:5||0的值為“真”,即為1。邏輯表達(dá)式邏輯表達(dá)式的一般形式為: 表達(dá)式邏輯運(yùn)算符表達(dá)式其中的表達(dá)式可以又是邏輯表達(dá)式,從而組成了嵌套的情形。例如:(a&&b)&&c根據(jù)邏輯運(yùn)算符的左結(jié)合性,上式也可寫為:a&&b&&c邏輯表達(dá)式的值是式中各種邏輯運(yùn)算的最后值,以“1”和“0”分別代表“真”和“假”。邏輯表達(dá)式【例5.2】voidmain(){charc='k';inti=1,j=2,k=3;floatx=3e+5,y=0.85;printf("%d,%d\n",!x*!y,!!!x);printf("%d,%d\n",x||i&&j-3,i<j&&x<y);printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);}if語(yǔ)句用if語(yǔ)句可以構(gòu)成分支結(jié)構(gòu)。它根據(jù)給定的條件進(jìn)行判斷,以決定執(zhí)行某個(gè)分支程序段。C語(yǔ)言的if語(yǔ)句有三種基本形式。if語(yǔ)句的三種形式……if語(yǔ)句的三種形式第一種形式為基本形式:
if(表達(dá)式)語(yǔ)句其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行其后的語(yǔ)句,否則不執(zhí)行該語(yǔ)句。其過(guò)程可表示為下圖。if語(yǔ)句的三種形式【例5.3】voidmain(){inta,b,max;printf("\ninputtwonumbers:");scanf("%d%d",&a,&b);max=a;if(max<b)max=b;printf("max=%d",max);}if語(yǔ)句的三種形式第二種形式為:if-else
if(表達(dá)式)語(yǔ)句1;else語(yǔ)句2;if語(yǔ)句的三種形式【例5.4】voidmain(){inta,b;printf("inputtwonumbers:");scanf("%d%d",&a,&b);if(a>b)printf("max=%d\n",a);elseprintf("max=%d\n",b);}if語(yǔ)句的三種形式
第三種形式為if-else-if形式前二種形式的if語(yǔ)句一般都用于兩個(gè)分支的情況。當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語(yǔ)句,其一般形式為:if語(yǔ)句的三種形式【例5.5】#include"stdio.h"voidmain(){charc;printf("inputacharacter:");c=getchar();if(c<32)
printf("Thisisacontrolcharacter\n");elseif(c>='0'&&c<='9'printf("Thisisadigit\n");elseif(c>='A'&&c<='Z')printf("Thisisacapitalletter\n");elseif(c>='a'&&c<='z')printf("Thisisasmallletter\n");elseprintf("Thisisanothercharacter\n");}在使用if語(yǔ)句中還應(yīng)注意以下問(wèn)題:1)在三種形式的if語(yǔ)句中,在if關(guān)鍵字之后均為表達(dá)式。該表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是其它表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個(gè)變量。例如:if(a=5)語(yǔ)句;if(b)語(yǔ)句;都是允許的。只要表達(dá)式的值為非0,即為“真”。在使用if語(yǔ)句中還應(yīng)注意以下問(wèn)題:比較如下程序段:voidmain(){if(a=b){printf("%d\n",a);}}voidmain(){if(a==b){printf("%d\n",a);}}在使用if語(yǔ)句中還應(yīng)注意以下問(wèn)題:2)在if語(yǔ)句中,條件判斷表達(dá)式必須用括號(hào)括起來(lái),在語(yǔ)句之后必須加分號(hào)。3)在if語(yǔ)句的三種形式中,所有的語(yǔ)句應(yīng)為單個(gè)語(yǔ)句,如果要想在滿足條件時(shí)執(zhí)行一組(多個(gè))語(yǔ)句,則必須把這一組語(yǔ)句用{}括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。但要注意的是在}之后不能再加分號(hào)。例如:if(a>b){
a++;b++;}else{
a=0;
b=10;}if語(yǔ)句的三種形式補(bǔ)充例題:寫一個(gè)程序完成下列功能:1、輸入一個(gè)分?jǐn)?shù)score2、score<60 輸出E3、60<=score<70輸出D4、75<=score<80輸出C5、80<=score<90輸出B5、90<=score輸出Aif語(yǔ)句的三種形式補(bǔ)充例題2:輸入三個(gè)數(shù)a,b,c,要求按由小到大的順序輸出。提示:Ifa>b將a和b對(duì)換Ifa>c將a和c對(duì)換Ifb>c將b和c對(duì)換if語(yǔ)句的嵌套當(dāng)if語(yǔ)句中的執(zhí)行語(yǔ)句又是if語(yǔ)句時(shí),則構(gòu)成了if語(yǔ)句嵌套的情形。其一般形式可表示如下:
if(表達(dá)式)if語(yǔ)句;或者為
if(表達(dá)式)if語(yǔ)句;
elseif語(yǔ)句;if(
){ if(
) ……;}if() if()語(yǔ)句1 else語(yǔ)句2else if()語(yǔ)句3 else語(yǔ)句4if語(yǔ)句的嵌套在嵌套內(nèi)的if語(yǔ)句可能又是if-else型的,這將會(huì)出現(xiàn)多個(gè)if和多個(gè)else重疊的情況,這時(shí)要特別注意if和else的配對(duì)問(wèn)題。例如:其中的else究竟是與哪一個(gè)if配對(duì)呢?if語(yǔ)句的嵌套為了避免這種二義性,C語(yǔ)言規(guī)定,else總是與它前面最近的if配對(duì),因此對(duì)上述例子應(yīng)按前一種情況理解。if語(yǔ)句的嵌套比較以下兩題目:哪一個(gè)是運(yùn)用嵌套方法?【例5.6】voidmain(){inta,b;printf("pleaseinputA,B:");scanf("%d%d",&a,&b);if(a!=b)if(a>b)printf("A>B\n");elseprintf("A<B\n");elseprintf("A=B\n");}if語(yǔ)句的嵌套【例5.7】voidmain(){inta,b;printf("pleaseinputA,B:");scanf("%d%d",&a,&b);if(a==b)
printf("A=B\n");elseif(a>b)
printf("A>B\n");else
printf("A<B\n");}采用嵌套結(jié)構(gòu)實(shí)質(zhì)上是為了進(jìn)行多分支選擇,實(shí)際上有三種選擇即A>B、A<B或A=B。這種問(wèn)題用if-else-if語(yǔ)句也可以完成。而且程序更加清晰。因此,在一般情況下較少使用if語(yǔ)句的嵌套結(jié)構(gòu)。以使程序更便于閱讀理解
條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符為“?和:”,它是一個(gè)三目運(yùn)算符,即有三個(gè)參與運(yùn)算的量。由條件運(yùn)算符組成條件表達(dá)式的一般形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3其求值規(guī)則為:如果表達(dá)式1的值為真,則以表達(dá)式2的值作為條件表達(dá)式的值,否則以表達(dá)式2的值作為整個(gè)條件表達(dá)式的值。
條件運(yùn)算符和條件表達(dá)式條件表達(dá)式通常用于賦值語(yǔ)句之中。例如條件語(yǔ)句:
if(a>b)max=a;elsemax=b;可用條件表達(dá)式寫為
max=(a>b)?a:b;執(zhí)行該語(yǔ)句的語(yǔ)義是:如a>b為真,則把a(bǔ)賦予max,否則把b賦予max。條件運(yùn)算符和條件表達(dá)式使用條件表達(dá)式時(shí),還應(yīng)注意以下幾點(diǎn):1)條件運(yùn)算符的運(yùn)算優(yōu)先級(jí)低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,但高于賦值符。因此
max=(a>b)?a:b可以去掉括號(hào)而寫為
max=a>b?a:b2)條件運(yùn)算符?和:是一對(duì)運(yùn)算符,不能分開單獨(dú)使用。3)條件運(yùn)算符的結(jié)合方向是自右至左。例如:a>b?a:c>d?c:d應(yīng)理解為a>b?a:(c>d?c:d)這也就是條件表達(dá)式嵌套的情形,即其中的表達(dá)式3又是一個(gè)條件表達(dá)式。條件運(yùn)算符和條件表達(dá)式【例5.8】voidmain(){inta,b,max;printf("\ninputtwonumbers:");scanf("%d%d",&a,&b);printf("max=%d",a>b?a:b);}條件運(yùn)算符和條件表達(dá)式補(bǔ)充:輸入一個(gè)字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。#include<stdio.h>
voidmain()
{
charch;
scanf("%c",
&ch);
ch=(ch>='A'&&ch<='Z')
?
(ch+32)
:
ch;
printf("%c\n",
ch);
}switch語(yǔ)句C語(yǔ)言還提供了另一種用于多分支選擇的switch語(yǔ)句,其一般形式為:其語(yǔ)義是:計(jì)算表達(dá)式的值。并逐個(gè)與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語(yǔ)句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語(yǔ)句。如表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語(yǔ)句。switch語(yǔ)句【例4.9】voidmain(){inta;printf("inputintegernumber:");scanf("%d",&a);switch(a)
{case1:printf("Monday\n");case2:printf("Tuesday\n");case3:printf("Wednesday\n");case4:printf("Thursday\n");case5:printf("Friday\n");case6:printf("Saturday\n");case7:printf("Sunday\n");default:printf("error\n");}}為了避免上述情況,C語(yǔ)言還提供了一種break語(yǔ)句,專用于跳出switch語(yǔ)句,break語(yǔ)句只有關(guān)鍵字break,沒(méi)有參數(shù)。請(qǐng)看后邊例子……switch語(yǔ)句【例4.10】voidmain(){inta;printf("inputintegernumber:");scanf("%d",
&a);switch(a)
{case1:printf("Monday\n");
break;case2:printf("Tuesday\n");break;case3:printf("Wednesday\n");
break;case4:printf("Thursday\n");
break;case5:printf("Friday\n");
break;case6:printf("Saturday\n");
break;case7:printf("Sunday\n");
break;default:printf("error\n");}}switch語(yǔ)句在使用switch語(yǔ)句時(shí)還應(yīng)注意以下幾點(diǎn):1)在case后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。2)在case后,允許有多個(gè)語(yǔ)句,可以不用{}括起來(lái)。3)各case和default子句的先后順序可以變動(dòng),而不會(huì)影響程序執(zhí)行結(jié)果。4)default子句可以省略不用。switch語(yǔ)句【例4.11】輸入三個(gè)整數(shù),輸出最大數(shù)和最小數(shù)。答案與解析:voidmain(){inta,b,c,max,min;printf("inputthreenumbers:");scanf("%d%d%d",&a,&b,&c);if(a>b){max=a;min=b;}else{max=b;min=a;}if(max<c)max=c;elseif(min>c)min=c;printf("max=%d\nmin=%d",max,min);}switch語(yǔ)句【例4.12】計(jì)算器程序。用戶輸入運(yùn)算數(shù)和四則運(yùn)算符,輸出計(jì)算結(jié)果。答案與解析:voidmain(){floata,b;charc;printf("inputexpression:a+(-,*,/)b\n");scanf("%f%c%f
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026屆銀川市重點(diǎn)中學(xué)高三英語(yǔ)第一學(xué)期期末達(dá)標(biāo)測(cè)試試題含解析
- 票據(jù)管理制度適用范圍(3篇)
- 藥品紙箱管理制度范本(3篇)
- 設(shè)計(jì)工時(shí)管理制度范本(3篇)
- 輔材配件管理制度范本(3篇)
- 野生種質(zhì)資源圃管理制度(3篇)
- 防疫臨時(shí)駐場(chǎng)人員管理制度(3篇)
- 食品品質(zhì)責(zé)任管理制度內(nèi)容(3篇)
- 疾病預(yù)防與安全應(yīng)急 溺水的預(yù)防與急救 課件2025-2026學(xué)年人教版初中+體育與健康七年級(jí)全一冊(cè)
- 中學(xué)學(xué)生社團(tuán)財(cái)務(wù)管理制度
- 2026年藥店培訓(xùn)計(jì)劃試題及答案
- 2026春招:中國(guó)煙草真題及答案
- 六年級(jí)寒假家長(zhǎng)會(huì)課件
- 物流鐵路專用線工程節(jié)能評(píng)估報(bào)告
- 2026河南省氣象部門招聘應(yīng)屆高校畢業(yè)生14人(第2號(hào))參考題庫(kù)附答案
- 2026天津市南開區(qū)衛(wèi)生健康系統(tǒng)招聘事業(yè)單位60人(含高層次人才)備考核心試題附答案解析
- 2025江蘇無(wú)錫市宜興市部分機(jī)關(guān)事業(yè)單位招聘編外人員40人(A類)備考筆試試題及答案解析
- 卵巢過(guò)度刺激征課件
- 漢服行業(yè)市場(chǎng)壁壘分析報(bào)告
- 重瞼手術(shù)知情同意書
- 2026華潤(rùn)燃?xì)庑@招聘(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案解析
評(píng)論
0/150
提交評(píng)論