第3章 基本控制結構考點歸納
3.1 C+ +語句
C+ +語句按照不同功能大體分為6種類型,它們是:
(1)聲明語句:用于對程序中的各種實體進行聲明、定義及初始化。
(2)表達式語句:用于對程序中的數據進行具體操作和處理。
(3)選擇語句:用于實現程序的選擇結構。
(4)循環語句:用于實現程序的循環結構。
(5)跳轉語句:用于實現程序執行流程的轉移。
(6)復合語句:用于表示程序中的語句塊概念。
應當指出的是,C+ +中并不存在賦值語句和函數調用語句,賦值和函數調用都屬于表達式而不是語句。
3.2 順序結構
1聲明語句
聲明語句又稱為說明語句,它可以用來對程序中出現的各種名稱進行聲明。這些名稱通常是表示變量、常量、函數、結構、類、對象等實體的標識符。在C+ +程序中,一個名稱在使用之前必須先被聲明。聲明的目的是告訴編譯器某個名稱所指代的實體類型。使用聲明語句能夠在程序中進行如下操作:
(1)變量聲明
(2)常量聲明
(3)函數聲明
(4)類型聲明
聲明語句可以完成的工作不僅局限于為名稱指定類型,同時也是定義語句。
另外,使用聲明語句還可以在定義變量時對其進行初始化。
2表達式語句
C+ +中所有對數據的操作和處理工作都是通過表達式語句來完成的。表達式語句的語法格式為:
<表達式>;
(1)賦值操作。
(2)復合賦值操作。
(3)增量、減量操作。
(4)函數調用操作。
(5)輸入輸出操作。
3基本輸入輸出
一個程序通常會向用戶輸出一些信息,一般也會要求用戶輸入一些信息。C+ +程序的輸入輸出操作是通過標準庫中的輸入/輸出流對象來完成的。
在頭文件iostream中定義了代表屏幕的標準輸出流對象cout和代表鍵盤的標準輸入流對象cin。cin和cout具有強大的輸入輸出功能和極為靈活的用法。在程序中使用cin和cout之前,應首先加入預處理命令:#include
使用cout進行數據輸出操作的一般格式為:
cout< 這是一條表達式語句。其中,Expr代表一個表達式;“<<”稱為插入運算符。整條語句的含義是:將表達式Expr的值輸出(顯示)到屏幕上當前光標所在位置。 4復合語句和空語句 復合語句又稱為塊語句,它是用一對花括號“{}”將若干條語句包圍起來而組成的一條語句,其語法格式為: { <語句1> <語句2> … <語句n> } 其中,<語句i>(i=1,2…,n)可以是聲明語句、表達式語句、選擇語句、循環語句或跳轉語句等任何合法的C+ +語句,當然,也可以是一個復合語句。分隔符“{”和“}”的作用是把若干條語句組成的序列包圍起來,使它們在邏輯上成為一條語句。復合語句可以出現在程序中任何需要語句的地方,但在通常情況下復合語句可以作為以下成分出現在程序中。 (1)函數的函數體; (2)循環語句的循環體; (3)if語句的分支; (4)switch語句的執行部分。 實際上,空語句是一種特殊的表達式語句。其語法格式為: ;即空語句只由一個分號組成。 3.3 選擇結構 1語句 if語句又稱為條件語句,它是程序設計語言中最常見的一種選擇語句。 (1)基本if語句 基本if語句的功能是根據給定條件是否成立來決定要不要執行一條語句或語句塊,它的語法格式如下: if(<條件>)<語句> 其中,if為關鍵字;<條件>通常是一個表達式且必須用圓括號包圍起來;<語句>稱為if子句,它可以是任何類型的語句(包括復合語句和空語句)。 基本if語句的執行過程是:首先計算<條件>的值,如果此值不為0(“真”),則執行<語句>;如果此值為0(“假”),則忽略<語句>(即不執行)而繼續執行if語句之后的下一條語句。 說明: ①C+ +中規定:如果<條件>是一個表達式,則當此表達式的值不為0時,條件結果為“真”;只有當此表達式的值為0時,條件結果才為“假”。 ②<條件>也可以是一條聲明語句,其中必須定義一個變量并對它進行初始化。這時,若此變量的值不為0,則條件結果為“真”;若此變量的值為0,則條件結果為“假”。 (2)if…else語句 if…else語句是基本if語句的擴展,其功能是根據給定條件是否成立來決定執行兩部分語句中的哪一部分,其語法格式如下: if(<條件>) <語句1> else <語句2> 其中,if和else為關鍵字;<語句1>稱為if子句,<語句2>稱為else子句,它們可以是單條語句或復合語句。 if…else語句的執行過程是:首先計算<條件>的值,如果此值不為0(“真”),則執行<語句1>,然后忽略<語句2>而去執行if語句之后的下一條語句;如果此值為0(“假”),則忽略<語句1>,執行<語句2>,然后繼續執行if語句之后的下一條語句。 (3)if語句的嵌套 if子句和else子句可以是任何類型的C+ +語句,當然也可以是if…else語句本身。通常將這種情況稱為if語句的嵌套。 2switch switch語句又稱為開關語句,它也是一種選擇語句。switch語句的功能是根據給定表達式的不同取值來決定從多個語句序列中的哪一個開始執行,其語法格式如下: switch(<表達式>){ case<常量表達式1>: <語句序列1> case<常量表達式2>: <語句序列2> … case<常量表達式n>: <語句序列n> default: <語句序列n+1> } 其中,switch,case和default為關鍵字;<表達式>的值必須屬于整型、字符型或枚舉型。<常量表達式i>(i=1,2…n)是取值互不相同的整型常量、字符常量或枚舉常量,其具體類型應與<表達式>的值相一致。<語句序列i>(i=1,2…n,n+1)可以是任意多條語句。 switch語句的執行過程是: (1)首先計算出<表達式>的值,設此值為E; (2)然后計算每個<常量表達式i>的值,設它們分別為C1,C2,…,Cn; (3)將E依次與C1,C2,…,Cn進行比較。如果E與某個值相等,則從該值所在的case標號語句開始執行各個語句序列,在不出現跳轉語句的情況下,將一直執行到switch語句結束。‘ (4)如果E與所有值都不相等且存在default標號,則從default標號語句起開始向下執行,直到switch語句結束(同樣,在不出現跳轉語句的情況下)。 (5)如果E與所有值都不相等且不存在default標號,則switch語句不會執行任何操作。 說明: (1)多個case標號可以共用一組語句序列,以實現對于幾個常量值都執行同一操作。 (2)default標號語句是可選的。當default不出現時,如果<表達式>的值與所有<常量表達式i>(i=1,2…n)的值都不相等,則程序執行流程會跳過switch語句。 (3)switch語句是可以嵌套的。case和default標號只與包含它們的最內層的switch組合在一起。 (4)當需要針對表達式的不同取值范圍進行不同處理時,使用if…else…if階梯結構比較方便。因為switch語句只能對相等關系進行測試,而if語句卻可以用關系表達式對一個較大范圍內的值進行測試。 3.4 循環結構 1for語句 for語句是C+ +中最常用且功能最強的循環語句,其語法格式如下: for(<表達式1>;<表達式2>;<表達式3>) <語句> 其中,for為關鍵字;<表達式1>是for循環的初始化部分,它一般用來設置循環控制變量的初始值;<表達式2>是for循環的條件部分,它是用來判定循環是否繼續進行的條件;<表達式3>是for循環的增量部分,它一般用于修改循環控制變量的值;<語句>稱為for循環的循環體,它是要被重復執行的代碼行,for循環體可以是單條語句,也可以是由花括號包圍起來的復合語句。 for語句的執行過程是: (1)計算<表達式1>的值; (2)計算<表達式2>的值,如果此值不等于0(即循環條件為“真”),則轉向步驟(3);如果此值等于0(即循環條件為“假”),則轉向步驟(5); (3)執行一遍循環體<語句>: (4)計算<表達式3>的值,然后轉向步驟(2); (5)結束for循環。 C+ +中for語句的書寫格式非常靈活,這主要表現為: (1)<表達式1>可以是變量聲明語句,即循環控制變量可在其中定義。 (2)<表達式1>可以省略。這時,應在for語句之前給循環控制變量賦初始值。注意:省略<表達式1>時,其后的分號不能省略。 (3)<表達式2>可以省略。這時,for語句將不再判斷循環條件,循環會無限次地執行下去。這種情況通常稱為“死循環”。 (4)<表達式3>可以省略。這時,應在循環中對循環控制變量進行遞增或遞減操作,以確保循環能夠正常結束。 (5)三個表達式可同時省略。這時,for語句顯然也是一個“死循環”。 (6)<表達式1>、<表達式2>和<表達式3>都可以是任何類型的C+ +表達式。 2while語句 while語句是一種形式較為簡單的循環語句,其語法格式如下: while(<表達式>)<語句>其中,while為關鍵字:<表達式>是while循環的條件,它用于控制循環是否繼續進行;<語句>稱為while循環的循環體,它是要被重復執行的代碼行;while循環體可以是單條語句,也可以是由花括號括起來的復合語句。實際上,while語句是for語句省略掉表達式1和表達式3的特殊情況。 while語句的執行過程是: (1)計算<表達式>的值,如果此值不等于0(即循環條件為“真”),則轉向步驟(2);如果此值等于0(即循環條件為“假”),則轉向步驟(4); (2)執行一遍循環體<語句>; (3)轉向步驟(1); (4)結束while循環。 從中可以看出,while語句將在<表達式>成立的情況下重復執行<語句>;如果在第一次進入while循環時<表達式>就不成立,則<語句>一次也不會執行。 注意: (1)由于while語句中缺少對循環控制變量進行初始化的結構,因此在使用while循環之前對循環控制變量進行初始化顯得很重要。 (2)在while循環體中不要忘記對循環控制變量的值進行修改,以使循環趨向結束。 3do…while語句; do…while語句也是一種循環語句,它的功能類似于while語句,只是將循環的判定條件移到了循環體之后,其語法格式如下: do<語句>while(<表達式>); 其中,do和while為關鍵字;<語句>稱為do…while循環的循環體,它是要被重復執行的代碼行,do……while循環體可以是單條語句,也可以是由花括號包圍起來的復合語句;<表達式>是do……while循環的條件,它用于控制循環是否繼續進行。 注意:在do…while語句中最后的分號不能丟掉,它用來表示do……while語句的結束。 do……while語句的執行過程是: (1)執行一遍循環體<語句>; (2)計算<表達式>的值,如果此值不等于0(即循環條件為“真”),則轉向步驟(1);如果此值等于0(即循環條件為“假”),則轉向步驟(3); (3)結束do…while循環。 注意: (1)在使用do…while循環之前同樣需要對循環控制變量進行初始化;在do…while循環中仍然不要忘記對循環控制變量進行修改,以使循環趨向結束,避免死循環的發生。 (2)do…while循環與while循環的不同之處在于:do…while循環的循環體在前,循環條件在后,因此do…while循環體在任何條件下(即使不滿足循環條件)都至少被執行一次。而while循環條件在前,循環體在后,當條件不滿足時,循環體有可能一次也不會執行。這一點正是在構造循環結構時決定使用while語句還是do…while語句的重要依據。 循環的嵌套 在一個循環結構中又完整地包含著另一個循環結構稱為循環的嵌套。C+ +中三種類型的循環語句都可以相互嵌套,并且嵌套的層數沒有限制。程序設計中有許多問題需要使用循環結構的嵌套來解決。 3.5 跳轉語句 C+ +中有4種跳轉語句,它們是:break語句、continue語句、return語句和goto語句。 1break語句 break語句又稱為跳出語句,其語法格式如下: break; 即由關鍵字break加上一個分號構成。 break語句只能用在switch語句和循環語句中。在switch語句中,break用來使執行流程跳出switch語句,而繼續執行switch后面的語句。在循環語句中,break用來使執行流程無條件地跳出本層循環體。 另外,break語句還經常用于使執行流程跳出死循環。 2continue語句 continue語句又稱為繼續語句,其語法格式如下: continue; 即由關鍵字continue加上一個分號構成。 continue語句僅用在循環語句中,它的功能是:結束本次循環,即跳過循環中尚未執行的語句,接著進行下一次是否執行循環的條件判定。 在while和do…while循環中,continue語句將使執行流程直接跳轉到循環條件的判定部分,然后決定循環是否繼續進行。在for循環中,當遇到continue時,執行流程將跳過循環中余下的語句,而轉去執行for語句中的<表達式3>,然后根據<表達式2>進行循環條件的判定以決定是否繼續執行for循環體。 3return語句 return語句又稱為返回語句,它具有兩種語法格式: (1)return; (2)return<表達式>; 其中,return為關鍵字,第2種格式中的<表達式>可以是任何類型的C+ +表達式。 return語句只能用在函數體中。在返回類型為void的函數體中,若想跳出函數體,將執行流程轉移到調用該函數的位置,應使用return語句的第1種格式。在返回類型不是void的函數體中,應使用return語句的第2種格式,使執行流程轉移到調用該函數的位置,并將<表達式>的值作為函數的返回值。 對于非void返回類型的函數來說,其函數體中必須至少具有一條return語句。 4goto語句 goto語句又稱為轉向語句,其語法格式如下: goto<標號>; 其中,goto為關鍵字;<標號>是一個由用戶命名的標識符。在goto語句所處的函數體中必須同時存在一條由<標號>標記的語句,其格式為: <標號>:<語句> 即在<標號>和<語句>之間使用一個冒號分隔,這種語法結構稱為標號語句。標號語句中的<標號>應與goto語句中的<標號>相同,<語句>可以是任何類型的C+ +語句。注意:某個goto語句和相應的標號語句必須位于同一函數體內。 goto語句的功能是使執行流程跳轉到<標號>所標記的<語句>處(即對應的標號語句處)。 編輯推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |