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