資源描述:
《控制結(jié)構(gòu)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
程序控制結(jié)構(gòu)是指以某種順序執(zhí)行的一系列動(dòng)作,用于解決某個(gè)問題。理論和實(shí)踐證明,無論多復(fù)雜的算法均可通過順序、選擇、循環(huán)3種基本控制結(jié)構(gòu)構(gòu)造出來,主要類型分為順序控制結(jié)構(gòu)、選擇控制結(jié)構(gòu)及循環(huán)控制結(jié)構(gòu)等。程序是一個(gè)語句序列,執(zhí)行程序就是按特定的次序執(zhí)行程序中的語句。程序中執(zhí)行點(diǎn)的變遷稱為控制流程,當(dāng)執(zhí)行到程序中的某一條語句時(shí),也說控制轉(zhuǎn)到了該語句。本文詳細(xì)介紹了控制結(jié)構(gòu)的條件構(gòu)成、選擇與循環(huán)結(jié)構(gòu)的設(shè)計(jì)方法、轉(zhuǎn)移語句的使用方法等,內(nèi)容詳實(shí),圖例豐富,論述充分,邏輯清晰,歡迎廣大用戶下載參考和使用。
1
2學(xué)習(xí)目標(biāo)掌握選擇結(jié)構(gòu)的條件構(gòu)成熟練掌握選擇結(jié)構(gòu)設(shè)計(jì)方法熟練掌握循環(huán)結(jié)構(gòu)設(shè)計(jì)方法掌握控制轉(zhuǎn)移語句的使用方法
33.1選擇結(jié)構(gòu)3.1.1if語句if語句有三種基本形式。1.單分支if語句格式:if(表達(dá)式)語句;功能:如果表達(dá)式的值為“真”(非0),則執(zhí)行語句;否則不執(zhí)行該語句。其流程圖如圖3-1所示。
43.1選擇結(jié)構(gòu)2.雙分支if語句格式:if(表達(dá)式)語句1;else語句2;功能:如果表達(dá)式的值為“真”(非0),則執(zhí)行語句1;否則執(zhí)行語句2。其流程圖如圖3-2所示。
53.1選擇結(jié)構(gòu)3.多分支if語句格式:if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2┇elseif(表達(dá)式n)語句nelse語句n+1功能:依此判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語句,然后跳到整個(gè)if語句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語句n+1,然后繼續(xù)執(zhí)行后續(xù)程序。如圖3-3所示。
63.1選擇結(jié)構(gòu)3.多分支if語句
73.1選擇結(jié)構(gòu)4.使用if語句的注意事項(xiàng)(1)if后面的表達(dá)式必須用圓括號(hào)括起來。(2)每個(gè)表達(dá)式后面的語句如果不止一條語句時(shí),必須用一對(duì)花括號(hào)“{}”括起來組成復(fù)合語句;否則只能執(zhí)行前面的一條語句。例如:if(a>b){a++;b++}else{a=0;b=1;}(3)表達(dá)式可以是任意類型的C++語言合法表達(dá)式,除常見的算術(shù)表達(dá)式、關(guān)系表達(dá)式或邏輯表達(dá)式外,也可以是其它表達(dá)式,如賦值表達(dá)式,甚至也可以是一個(gè)變量。例如:if(a=4)…;//賦值表達(dá)式if(a)…;//是一個(gè)變量
83.1選擇結(jié)構(gòu)3.1.2if語句的嵌套所謂if語句的嵌套,就是在if語句中又包含了一個(gè)或多個(gè)if語句。在if語句中可根據(jù)需要,用if語句的三種形式進(jìn)行互相嵌套。一般形式如下:1.嵌套在if子句中if(條件){if語句}else語句2;2.嵌套在else子句中if(條件)語句1;else{if語句}
93.1選擇結(jié)構(gòu)3.1.3switch語句switch語句是一個(gè)多分支結(jié)構(gòu)的語句,它所實(shí)現(xiàn)功能與多分支if語句很相似,但在大多數(shù)情況下,switch語句表達(dá)方式更直觀、簡(jiǎn)單、有效。1.switch語句的語法格式switch(<表達(dá)式>){case<常量表達(dá)式1>:<語句序列1>;[break;]case<常量表達(dá)式2>:<語句序列2>;[break;]……case<常量表達(dá)式n>:<語句序列n>;[break;][default:<語句序列n+1>;[break;]]}
103.1選擇結(jié)構(gòu)2.switch語句執(zhí)行過程switch語句執(zhí)行過程可以用圖3-4表示。(1)首先計(jì)算switch后的表達(dá)式的值。(2)然后將結(jié)果值與case后的常量表達(dá)式值比較,如果找到相匹配的case,程序就執(zhí)行相應(yīng)的語句序列,直到遇到break語句,switch語句執(zhí)行結(jié)束;如果找不到匹配的case,就歸結(jié)到default處,執(zhí)行它的語句序列,直到遇到break語句為止;如果沒有default,則不執(zhí)行任何操作。
113.1選擇結(jié)構(gòu)3.使用switch語句的注意事項(xiàng)(1)switch后面的“表達(dá)式”和“常量表達(dá)式”必須是整數(shù)類型或枚舉類型,如int、char、sbyte、ushort、short、uint、int、ulong、long。(2)case后的“常量表達(dá)式”必須互異,不能有重復(fù),其中default和<語句序列n+1>可以省略。(3)switch語句中的case和default的出現(xiàn)次序是任意的,且case的次序不要求按常量表達(dá)式的大小順序排列。(4)case后面的常量表達(dá)式僅起語句標(biāo)號(hào)作用,必須在運(yùn)行前就是確定的,不能改變的。系統(tǒng)一旦找到入口標(biāo)號(hào),就從此標(biāo)號(hào)開始執(zhí)行,不再進(jìn)行標(biāo)號(hào)判斷,所以必須加上break語句,以便結(jié)束switch語句。(5)多個(gè)case的后面可以共用一組執(zhí)行語句,也能執(zhí)行多個(gè)case后面的<語句序列>。
123.2循環(huán)語句循環(huán)語句是指在一定條件下,重復(fù)執(zhí)行一組語句,它是程序設(shè)計(jì)中的一個(gè)非常重要也是非常基本的方法。C++提供了3種循環(huán)語句,while,do-while和for。3.2.1while語句語法形式:while(<表達(dá)式>){<循環(huán)體語句>}如果表達(dá)式為真(true),則執(zhí)行循環(huán)體語句。然后重新計(jì)算表達(dá)式的值,并再次判斷;如此反復(fù),直到表達(dá)式的值為假(false),則退出循環(huán)結(jié)構(gòu)。While語句執(zhí)行流程如圖3-5(a)所示。
133.2循環(huán)語句圖3-5while語句示意圖
143.2循環(huán)語句【例3.6】利用while語句,計(jì)算1+2+…+100的值,并輸出計(jì)算結(jié)果。#include"iostream.h"voidmain(){intSum,i;Sum=0;i=1;while(i<=100){Sum+=i;i++;}cout<<"Sumis"<153.2循環(huán)語句3.2.2do-while語句語法形式:do{<循環(huán)體語句>}while(<表達(dá)式>);先執(zhí)行循環(huán)體語句,再判定表達(dá)式。若表達(dá)式的值為非0,則再次執(zhí)行循環(huán)體語句,如此反復(fù),直到表達(dá)式的值為0結(jié)束循環(huán),并轉(zhuǎn)到下一條語句執(zhí)行,如圖所示。圖3-6do-while語句示意圖
163.2循環(huán)語句3.2.3for語句C++的for循環(huán)是循環(huán)語句中最具特色的。它功能較強(qiáng)、靈活多變和使用廣泛。語法形式:for(<初始表達(dá)式>;<條件>;<變量增值表達(dá)式>){<循環(huán)體語句>}for循環(huán)語句的執(zhí)行流程如圖3-7所示。
173.2循環(huán)語句for循環(huán)的一些變化特點(diǎn):(1)for循環(huán)語句的“初始表達(dá)式”和“變量增值表達(dá)式”可引入逗號(hào)運(yùn)算符“,”,這樣可以對(duì)若干個(gè)變量賦初值或增值。(2)for循環(huán)的三個(gè)表達(dá)式可以任意缺省,如果“條件”缺省就約定它的值是true。但不管哪個(gè)表達(dá)式缺省,其相應(yīng)的分號(hào)“;”不能缺省。(3)可以在for循環(huán)內(nèi)部聲明循環(huán)控制變量。
183.2循環(huán)語句3.2.4循環(huán)的嵌套一個(gè)循環(huán)的循環(huán)體內(nèi)包含另外一個(gè)循環(huán)語句稱為循環(huán)的嵌套。如圖3-8是一個(gè)循環(huán)嵌套的例子。循環(huán)嵌套時(shí),外層循環(huán)執(zhí)行一次,內(nèi)層循環(huán)從頭到尾執(zhí)行一遍。3種循環(huán)語句不僅可以自身嵌套,而且還可以互相嵌套。
193.3break、continue和goto語句3.3.1break與continue語句一般格式:break;continue;功能:(1)break:強(qiáng)行結(jié)束循環(huán),轉(zhuǎn)向執(zhí)行循環(huán)語句的下一條語句。(2)continue:結(jié)束本次循環(huán)。對(duì)于while和do-while循環(huán),跳過循環(huán)體其余語句,轉(zhuǎn)向循環(huán)終止條件的判斷;而對(duì)for循環(huán),跳過循環(huán)體其余語句,轉(zhuǎn)向循環(huán)變量增值量表達(dá)式的計(jì)算,如圖3-11所示。
203.3break、continue和goto語句3.3.1break與continue語句
213.3break、continue和goto語句3.3.2goto語句和標(biāo)號(hào)語句格式:goto<語句標(biāo)號(hào)>;功能:goto語句是無條件轉(zhuǎn)移語句,程序執(zhí)行到goto語句時(shí),無條件地轉(zhuǎn)移到<語句標(biāo)號(hào)>所指定的語句并執(zhí)行。
223.4情景應(yīng)用——訓(xùn)練項(xiàng)目3.4.1項(xiàng)目1:愛因斯坦階梯問題【問題描述】愛因斯坦階梯問題:有一條長(zhǎng)長(zhǎng)的階梯,如果你每步跨2階,那么最后剩1階;如果你每步跨3階,那么最后剩2階;如果你每步跨5階,那么最后剩4階;如果你每步跨6階,那么最后剩5階;只有當(dāng)你每步跨7階時(shí),最后才正好走完,一階也不剩。請(qǐng)問這條階梯至少有多少階(求所有3位階梯數(shù))?程序運(yùn)行效果如圖3-12所示。圖3-12階梯問題
233.4情景應(yīng)用——訓(xùn)練項(xiàng)目3.4.2項(xiàng)目2:趣味古典數(shù)學(xué)問題【項(xiàng)目描述】有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子。小兔子長(zhǎng)大到第3個(gè)月后每個(gè)月又生一對(duì)兔子。假設(shè)所有的兔子都不死亡,問每個(gè)月的兔子總對(duì)數(shù)為多少?程序運(yùn)行效果如圖3-13所示。圖3-13趣味古典數(shù)學(xué)
243.4情景應(yīng)用——訓(xùn)練項(xiàng)目3.4.3項(xiàng)目3:數(shù)學(xué)家維納(N.Wiener)年齡問題【項(xiàng)目描述】美國數(shù)學(xué)家維納(N.Wiener)智力早熟,11歲就上了大學(xué)。他曾在1935年~1936年應(yīng)邀來中國清華大學(xué)講學(xué)。一次,他參加某個(gè)重要會(huì)議,年輕的臉孔引人注目。于是有人詢問他的年齡,他回答說:“我年齡的立方是個(gè)4位數(shù)。我年齡的4次方是個(gè)6位數(shù)。這10個(gè)數(shù)字正好包含了從0到9這10個(gè)數(shù)字,每個(gè)都恰好出現(xiàn)1次。”,請(qǐng)你推算一下,他當(dāng)時(shí)到底有多年輕。
25