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