版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章順序與分支結(jié)構(gòu)3.1程序結(jié)構(gòu)框圖3.2順序結(jié)構(gòu)3.3二分支結(jié)構(gòu)3.4多分支結(jié)構(gòu)3.5分支結(jié)構(gòu)的綜合示例本章小結(jié)
3.1程序結(jié)構(gòu)框圖
3.1.1算法的表示程序設(shè)計(jì)的關(guān)鍵是算法。那什么是算法?算法就是求解實(shí)際問題的步驟。有了正確有效的算法,就可以用計(jì)算機(jī)語言編寫程序,解決實(shí)際問題。算法可采用自然語言、流程圖或N-S圖來描述。
1.自然語言描述
例3-1從鍵盤輸入3個數(shù),按由小到大的順序輸出。
解題思路從鍵盤輸入的3個數(shù)值必須用3個變量來保存,設(shè)3個變量為x、y、z。3個數(shù)按由小到大的順序輸出,則必須將數(shù)據(jù)兩兩比較,在比較的過程中,始終保持變量x最小,變量z的值最大,如果不滿足此條件,則將比較的兩變量互相交換其值。設(shè)中間變量為t。
算法步驟如下:
①輸入3個數(shù),其值分別賦給3個變量x、y、z;
②?x、y進(jìn)行比較,如果x大于y,通過t交換x、y的值;
③?x、z進(jìn)行比較,如果x大于z,通過t交換x、z的值;
④?y、z進(jìn)行比較,如果y大于z,通過t交換y、z的值;
⑤按x、y、z的順序輸出其變量的值。
2.流程圖
流程圖是一種傳統(tǒng)的算法描述方法,它用幾種不同的幾何圖來代表不同性質(zhì)的操作,用流程線來指示算法的執(zhí)行方向。用流程圖表示的算法簡單直觀,容易轉(zhuǎn)化成相應(yīng)的語言
程序。
圖3-1所示為國際標(biāo)準(zhǔn)化組織(InternationalStandardOrganization,ISO)規(guī)定的一些常用流程圖符號。這些符號已為各國普遍采用。圖3-1常用的流程圖符號
例3-2將例3-1中的算法用流程圖表示。
流程圖如圖3-2所示。圖3-2例3-1的算法流程圖
3.?N-S圖
N-S圖是程序算法的另一種圖形表示,它是由美國人I.Nassi和B.Shneiderman共同提出來的,其依據(jù)是:因?yàn)槿魏嗡惴ǘ际怯身樞蚪Y(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)這3種結(jié)構(gòu)所組成的,所以可以不需要各結(jié)構(gòu)之間的流程線,全部算法寫在一個矩形框內(nèi),矩形框內(nèi)由順序、分支、循環(huán)3種結(jié)構(gòu)組成。三種基本結(jié)構(gòu)的N-S圖如圖3-3所示。圖3-33種基本結(jié)構(gòu)的N-S圖
例3-3將例3-1中的算法用N-S圖表示。
N-S圖如圖3-4所示。圖3-4例3-1的N-S圖
3.1.2結(jié)構(gòu)化程序設(shè)計(jì)
結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是:任何程序都由3種基本結(jié)構(gòu)組成,這3種基本結(jié)構(gòu)如下:
(1)順序結(jié)構(gòu):按照語句出現(xiàn)的先后順序依次執(zhí)行的。
(2)分支結(jié)構(gòu):根據(jù)給定條件進(jìn)行判斷,選擇其中的一個分支執(zhí)行。
(3)循環(huán)結(jié)構(gòu):根據(jù)某一個條件成立與否來決定是否重復(fù)執(zhí)行某一部分操作,反復(fù)執(zhí)行的部分稱為循環(huán)體。
循環(huán)結(jié)構(gòu)有以下兩種類型:
①當(dāng)型(while型)循環(huán)結(jié)構(gòu):當(dāng)條件滿足時,重復(fù)執(zhí)行某一操作。
②直到型循環(huán)結(jié)構(gòu):先執(zhí)行循環(huán)體操作,再判斷條件,如果條件滿足,則繼續(xù)執(zhí)行循環(huán)體操作,直到條件不滿足時,才退出循環(huán),繼續(xù)執(zhí)行循環(huán)體后面的語句。
由上面3種基本結(jié)構(gòu),可以看出結(jié)構(gòu)化程序設(shè)計(jì)具有以下特點(diǎn):
①只有一個入口和一個出口;
②程序中不能有無窮循環(huán)(死循環(huán));
③程序中不能有在任何條件下都執(zhí)行不到的語句(死語句)。
3.1.3復(fù)合語句
將若干語句用一對花括號括起來的語句,稱為復(fù)合語句。如
{
y=x++;
printf("%d%d",x,y);
}
復(fù)合語句在邏輯上相當(dāng)于一個單一語句,在流程控制結(jié)構(gòu),如if結(jié)構(gòu)、for結(jié)構(gòu)、while結(jié)構(gòu)中經(jīng)常用到。復(fù)合語句在書寫時采用向右縮進(jìn)的方式,語句組相對于花括號向右縮進(jìn)一個制表位。
3.2順序結(jié)構(gòu)
順序結(jié)構(gòu)是最基本、最簡單的程序結(jié)構(gòu)。順序結(jié)構(gòu)中,各語句按照代碼的書寫順序,自上而下地逐條執(zhí)行,沒有任何條件判斷或循環(huán)操作,每個語句都被執(zhí)行一遍,且只執(zhí)行一次。
例3-4已知長方形的長和寬,計(jì)算其周長和面積。
解題思路輸入長方形的長和寬并用兩個變量保存,設(shè)兩個變量分別為length、width,然后利用公式計(jì)算長方形的周長和面積,周長和面積也分別用兩個變量perimeter、area
表示。
算法步驟如下:
(1)輸入兩個數(shù),其值分別賦給length、width;
(2)根據(jù)公式計(jì)算長方形的周長,并將其值賦給perimeter;
(3)根據(jù)公式計(jì)算長方形的面積,并將其值賦給area;
(4)輸出perimeter和area。
3.3二分支結(jié)構(gòu)
二分支結(jié)構(gòu)就是判定給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。用if語句可以構(gòu)成分支結(jié)構(gòu),if語句可以根據(jù)不同的條件,選擇不同的執(zhí)行語句。先來看這樣一個問題,計(jì)算分段函數(shù):
求解問題的流程如下:
(1)輸入x;
(2)如果x≥0,則y=x?-?5;否則y=5/x;
(3)輸出y的值。
要完成該問題的計(jì)算,顯然程序的流程必須由x的值確定。像這樣的流程(根據(jù)某個變量或表達(dá)式的值做出判定,以決定執(zhí)行某個模塊和跳過某個模塊),就需要選擇語句。
3.3.1if-else二分支選擇語句
若表達(dá)式為非0(即條件判斷為真),則執(zhí)行if后面的語句1,而不執(zhí)行語句2;否則(即條件判斷為假),越過語句1,執(zhí)行else后面的語句2。if-else的N-S圖如圖3-5所示。其中的語句1、語句2都是單一的邏輯語句,若語句1、語句2不是單一的邏輯語句,則必須用花括號括起來形成復(fù)合語句。
在條件控制語句中,人們習(xí)慣把圓括號內(nèi)的表達(dá)式叫作條件,其中if和else是關(guān)鍵字。
圖3-5if-else的N-S圖
使用if-else語句時的注意事項(xiàng)如下:
(1)?if語句中的條件一般是條件表達(dá)式或邏輯表達(dá)式,它們必須放在圓括號內(nèi)。
(2)因?yàn)镃語言中沒有邏輯型變量,這里只是測試表達(dá)式的值是否為0,所以可以將
if(表達(dá)式!=0)
簡化為
if(表達(dá)式)
(3)?if或else后的語句可以是一個簡單語句,也可以是由幾個簡單語句組成的復(fù)合語句。若是復(fù)合語句,則必須用花括號括起來。
(4)要注意賦值運(yùn)算符(=)與關(guān)系運(yùn)算符(==)的區(qū)別。
幾種常見的if表達(dá)式的寫法如下:
①?if(!a):判斷變量a的值是否為0。
②?if(x>=0&&x<=10):當(dāng)x位于區(qū)間[0,10]上,邏輯表達(dá)式為真。
③?if(x>0,y>10):括號內(nèi)為逗號表達(dá)式,故最后一個表達(dá)式(y>10)的值是整個條件表達(dá)式的值。若表達(dá)式y(tǒng)>10成立,則if的條件為真。
④?if(x>0||y<10):只要一個關(guān)系表達(dá)式成立,if的條件為真。
例3-5求兩個整數(shù)x、y中較大的數(shù),并賦給變量max。
解題思路x、y值由輸入函數(shù)輸入,根據(jù)其大小進(jìn)行判斷,較大的數(shù)賦給max變量。其N-S圖如圖3-6所示。圖3-6例3-5的N-S圖
3.3.2不平衡if結(jié)構(gòu)
缺少else分支的二分支結(jié)構(gòu),稱為不平衡if結(jié)構(gòu)。不平衡if結(jié)構(gòu)的基本形式如下:
if(表達(dá)式)語句;
若表達(dá)式為非0(即條件判斷為“真”),則執(zhí)行if后面的語句;否則(即條件判斷為“假”),順序執(zhí)行if語句的下一條語句。不平衡if結(jié)構(gòu)的N-S圖如圖3-7所示。
圖3-7不平衡if結(jié)構(gòu)的N-S圖
例3-6從鍵盤輸入3個整數(shù),按由小到大的順序輸出。
解題思路輸入3個整數(shù)x、y、z,兩兩比較,始終保持x的值最小,z的值最大,不滿足此條件,則將其值進(jìn)行交換。N-S圖如圖3-8所示。圖3-8例3-6的N-S圖
例3-7求一元二次方程ax2?+?bx?+?c?=?0(a不為0)的解。
解題思路對于任意輸入的3個數(shù)a、b、c(a不等于0),有這樣3種可能:
(1)若b2?-?4ac>0,則方程有兩個不相等的實(shí)根。
(2)若b2?-?4ac=0,則方程有兩個相等的實(shí)根。
(3)若b2?-?4ac<0,則方程有兩個復(fù)數(shù)根。
3.3.3if語句的嵌套
C語言允許if語句嵌套使用。通常,if語句的嵌套有兩種結(jié)構(gòu):不平衡if嵌套結(jié)構(gòu)和多分支嵌套結(jié)構(gòu)。本小節(jié)介紹不平衡if嵌套結(jié)構(gòu)的內(nèi)容,多分支嵌套結(jié)構(gòu)的內(nèi)容將在后面小節(jié)介紹。
在這種形式的if嵌套結(jié)構(gòu)中,若表達(dá)式1為“假”,則跳過花括號中的所有語句,去執(zhí)行該復(fù)合語句下面的語句;若表達(dá)式1為“真”,則進(jìn)一步去判斷表達(dá)式11,若表達(dá)式11也為“真”,則執(zhí)行語句11,然后越過else子句,去執(zhí)行該復(fù)合語句下面的語句,若表達(dá)式11為“假”,則跳過語句11,而去執(zhí)行語句12,然后去執(zhí)行該復(fù)合語句下面的語句。
其執(zhí)行流程的N-S圖如圖3-9所示。
圖3-9不平衡if嵌套結(jié)構(gòu)的N-S圖
例3-8從鍵盤接收一整數(shù)x,判斷x是否含有因子5的正整數(shù),如有,則輸出“YES”,否則輸出“NO”。
3.4多分支結(jié)構(gòu)
3.4.1if-else多分支語句二分支if語句中,若二分支中的語句1或語句2也是一個分支結(jié)構(gòu),則整個結(jié)構(gòu)稱為分支嵌套結(jié)構(gòu)。采用多層嵌套可以實(shí)現(xiàn)多分支結(jié)構(gòu)。
分支結(jié)構(gòu)中,若表達(dá)式1的值不為0,則執(zhí)行語句1,然后越過所有的else子句,去執(zhí)行整個if語句的下一個語句。若表達(dá)式1的值為0,則判斷表達(dá)式2的值是否為0,若其值不為0,則執(zhí)行語句2,然后越過它下面的所有else子句,去執(zhí)行整個if語句下的語句;若表達(dá)式2的值為0,則再判斷下一個if語句的條件表達(dá)式。若表達(dá)式1,表達(dá)式2,…,表達(dá)式n的結(jié)果都為0,則執(zhí)行語句n+1。其執(zhí)行流程如圖3-12所示。
圖3-10多分支嵌套結(jié)構(gòu)的流程
例3-9計(jì)算下列分段函數(shù)的值。
N-S圖如圖3-11所示。
圖3-11例3-9的算法N-S圖
在if嵌套語句中,應(yīng)注意以下兩點(diǎn)。
(1)?else語句要有if語句與之匹配,在同一個模塊內(nèi),else總是與其前面最近的、沒有匹配過的if語句相匹配。
(2)?if后的表達(dá)式可以是關(guān)系表達(dá)式、邏輯表達(dá)式。if和else關(guān)鍵字后的語句可以是單語句,也可以是復(fù)合語句,這與單if語句相同。
例3-10從鍵盤輸入一學(xué)生成績,判斷學(xué)生成績等級。如果成績在90~100,等級為“A”;成績在80~89,等級為“B”;成績在70~79,等級為“C”;成績在60~69,等級為“D”;成績小于60,等級為“E”。
3.4.2switch語句
switch語句將一個表達(dá)式的值與多個常量表達(dá)式的值一一進(jìn)行比較,如果相等,則與之相應(yīng)的語句便會被執(zhí)行。
switch語句的一般形式如下:
其中,語句序列稱為switch語句的子語句;switch語句中的表達(dá)式稱為開關(guān)控制表達(dá)式。方括號內(nèi)的語句可缺省。
switch語句的執(zhí)行過程如下:
(1)計(jì)算switch語句后面表達(dá)式的值。
(2)逐個比較表達(dá)式的值與case后面常量表達(dá)式的值是否相等。
(3)當(dāng)表達(dá)式的值與常量表達(dá)式i的值相等時,就轉(zhuǎn)去執(zhí)行語句序列i的各個語句,若語句序列i后有break語句,則終止switch語句,繼續(xù)執(zhí)行整個switch語句后的下一條語句;當(dāng)語句序列i后無break語句,則會順序執(zhí)行語句序列i+1,i+2,…,直到遇到break語句或語句序列n+1為止,然后繼續(xù)執(zhí)行整個switch語句后的下一條語句。如果沒有一個常量表達(dá)式的值與switch語句表達(dá)式的值相等,則執(zhí)行語句n+1后,繼續(xù)執(zhí)行整個switch語句后的下一條語句。
在不考慮break語句的情況下,switch語句一般形式的執(zhí)行流程如圖3-12所示。圖3-12switch語句一般形式的執(zhí)行流程圖
使用switch語句注意事項(xiàng)如下:
(1)?switch后面的表達(dá)式的值類型和常量表達(dá)式的值類型必須一致,且只能是整型、字符型或枚舉型。
(2)當(dāng)表達(dá)式的值與某個case中的常量表達(dá)式的值進(jìn)行匹配,若相等時,就執(zhí)行相應(yīng)的case后的語句序列,直到遇到break語句或到達(dá)switch語句末尾(無break語句,則入口后的語句序列順序執(zhí)行)。若匹配不成功,則執(zhí)行default后的語句。default語句是可省的,如沒有default語句,所有的匹配不成功,則不執(zhí)行case中任何語句序列,程序繼續(xù)執(zhí)行整個switch語句后的下一條語句。
(3)多個連續(xù)的case語句可以共用一個語句序列。
(4)?case后的常量表達(dá)式的值不能相等。
(5)?break的作用是改變程序在switch結(jié)構(gòu)中的執(zhí)行流程,將程序流程跳出switch語句,轉(zhuǎn)到整個switch語句后的下一條語句去執(zhí)行。
(6)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年湖南民族職業(yè)學(xué)院單招職業(yè)傾向性考試題庫參考答案詳解
- 2026年廣東茂名幼兒師范專科學(xué)校單招職業(yè)適應(yīng)性考試題庫及答案詳解一套
- 2026年朔州師范高等專科學(xué)校單招職業(yè)技能考試題庫含答案詳解
- 2026年錦州師范高等??茖W(xué)校單招職業(yè)適應(yīng)性考試題庫及參考答案詳解1套
- 2026年湖北職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫及參考答案詳解
- 2026年棗莊職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案詳解
- 2026年山西省財(cái)政稅務(wù)??茖W(xué)校單招職業(yè)適應(yīng)性測試題庫及參考答案詳解
- 2026年福州科技職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫及答案詳解一套
- 2026年臨汾職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫參考答案詳解
- 2026年哈爾濱鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫參考答案詳解
- 出納勞務(wù)合同范本
- 海外項(xiàng)目質(zhì)量管理體系的實(shí)施要求與案例分析
- 中國馬克思主義與當(dāng)代思考題(附答案)
- 智能信報(bào)箱系統(tǒng)施工方案
- 《電力拖動控制線路與技能訓(xùn)練》試卷 A(附答案)
- 關(guān)于新能源汽車的研究報(bào)告高中生怎么寫
- 嚴(yán)歌苓作品:霜降
- 西爾斯懷孕百科(升級版)
- 樓梯工程量計(jì)算表(模板、砼計(jì)算)
- 百富系列灌裝培訓(xùn)手冊
- GB/T 13871.1-2022密封元件為彈性體材料的旋轉(zhuǎn)軸唇形密封圈第1部分:尺寸和公差
評論
0/150
提交評論