第3章 基本控制結(jié)構(gòu)
【考點一】 C+ +語句
C+ +語句按照不同功能大體分為6種類型,它們是:(1)聲明語句:用于對程序中的各種實體進行聲明、定義及初始化。(2)表達式語句:用于對程序中的數(shù)據(jù)進行具體操作和處理。(3)選擇語句:用于實現(xiàn)程序的選擇結(jié)構(gòu)。(4)循環(huán)語句:用于實現(xiàn)程序的循環(huán)結(jié)構(gòu)。(5)跳轉(zhuǎn)語句:用于實現(xiàn)程序執(zhí)行流程的轉(zhuǎn)移。(6)復(fù)合語句:用于表示程序中的語句塊概念。應(yīng)當(dāng)指出的是,C+ +中并不存在賦值語句和函數(shù)調(diào)用語句,賦值和函數(shù)調(diào)用都屬于表達式而不是語句。 【考點二 】 順序結(jié)構(gòu)
1.聲明語句聲明語句又稱為說明語句,它可以用來對程序中出現(xiàn)的各種名稱進行聲明。這些名稱通常是表示變量、常量、函數(shù)、結(jié)構(gòu)、類、對象等實體的標識符。在C+ +程序中,一個名稱在使用之前必須先被聲明。聲明的目的是告訴編譯器某個名稱所指代的實體類型。使用聲明語句能夠在程序中進行如下操作:(1)變量聲明(2)常量聲明(3)函數(shù)聲明(4)類型聲明聲明語句可以完成的工作不僅局限于為名稱指定類型,同時也是定義語句。另外,使用聲明語句還可以在定義變量時對其進行初始化。
2.表達式語句C+ +中所有對數(shù)據(jù)的操作和處理工作都是通過表達式語句來完成的。表達式語句的語法格式為:<表達式>;(1)賦值操作。(2)復(fù)合賦值操作。(3)增量、減量操作。(4)函數(shù)調(diào)用操作。(5)輸入輸出操作。
3.基本輸入輸出一個程序通常會向用戶輸出一些信息,一般也會要求用戶輸入一些信息。C+ +程序的輸入輸出操作是通過標準庫中的輸入/輸出流對象來完成的。在頭文件iostream中定義了代表屏幕的標準輸出流對象cout和代表鍵盤的標準輸入流對象cin。cin和cout具有強大的輸入輸出功能和極為靈活的用法。在程序中使用cin和cout之前,應(yīng)首先加入預(yù)處理命令:#include<iostream>,以包含標準頭文件iostream。使用cout進行數(shù)據(jù)輸出操作的一般格式為:cout<<Expr;這是一條表達式語句。其中,Expr代表一個表達式;"<<"稱為插入運算符。整條語句的含義是:將表達式Expr的值輸出(顯示)到屏幕上當(dāng)前光標所在位置。
4.復(fù)合語句和空語句復(fù)合語句又稱為塊語句,它是用一對花括號"{}"將若干條語句包圍起來而組成的一條語句,其語法格式為:{<語句1><語句2>…<語句n>}
其中,<語句i>(i=1,2…,n)可以是聲明語句、表達式語句、選擇語句、循環(huán)語句或跳轉(zhuǎn)語句等任何合法的C+ +語句,當(dāng)然,也可以是一個復(fù)合語句。分隔符"{"和"}"的作用是把若干條語句組成的序列包圍起來,使它們在邏輯上成為一條語句。復(fù)合語句可以出現(xiàn)在程序中任何需要語句的地方,但在通常情況下復(fù)合語句可以作為以下成分出現(xiàn)在程序中。(1)函數(shù)的函數(shù)體;(2)循環(huán)語句的循環(huán)體;(3)if語句的分支;(4)switch語句的執(zhí)行部分。實際上,空語句是一種特殊的表達式語句。其語法格式為:;即空語句只由一個分號組成。 【考點三】 選擇結(jié)構(gòu)
1.語句if語句又稱為條件語句,它是程序設(shè)計語言中最常見的一種選擇語句。(1)基本if語句基本if語句的功能是根據(jù)給定條件是否成立來決定要不要執(zhí)行一條語句或語句塊,它的語法格式如下:if(<條件>)<語句>
其中,if為關(guān)鍵字;<條件>通常是一個表達式且必須用圓括號包圍起來;<語句>稱為if子句,它可以是任何類型的語句(包括復(fù)合語句和空語句);緄f語句的執(zhí)行過程是:首先計算<條件>的值,如果此值不為0("真"),則執(zhí)行<語句>;如果此值為0("假"),則忽略<語句>(即不執(zhí)行)而繼續(xù)執(zhí)行if語句之后的下一條語句。說明:①C+ +中規(guī)定:如果<條件>是一個表達式,則當(dāng)此表達式的值不為0時,條件結(jié)果為"真";只有當(dāng)此表達式的值為0時,條件結(jié)果才為"假"。②<條件>也可以是一條聲明語句,其中必須定義一個變量并對它進行初始化。這時,若此變量的值不為0,則條件結(jié)果為"真";若此變量的值為0,則條件結(jié)果為"假"。(2)if…else語句if…else語句是基本if語句的擴展,其功能是根據(jù)給定條件是否成立來決定執(zhí)行兩部分語句中的哪一部分,其語法格式如下:if(<條件>)<語句1>else<語句2>
其中,if和else為關(guān)鍵字;<語句1>稱為if子句,<語句2>稱為else子句,它們可以是單條語句或復(fù)合語句。if…else語句的執(zhí)行過程是:首先計算<條件>的值,如果此值不為0("真"),則執(zhí)行<語句1>,然后忽略<語句2>而去執(zhí)行if語句之后的下一條語句;如果此值為0("假"),則忽略<語句1>,執(zhí)行<語句2>,然后繼續(xù)執(zhí)行if語句之后的下一條語句。(3)if語句的嵌套if子句和else子句可以是任何類型的C+ +語句,當(dāng)然也可以是if…else語句本身。通常將這種情況稱為if語句的嵌套。
2.switchswitch語句又稱為開關(guān)語句,它也是一種選擇語句。switch語句的功能是根據(jù)給定表達式的不同取值來決定從多個語句序列中的哪一個開始執(zhí)行,其語法格式如下:switch(<表達式>){case<常量表達式1>:<語句序列1>case<常量表達式2>:<語句序列2>…case<常量表達式n>:<語句序列n>default:<語句序列n+1>}
其中,switch,case和default為關(guān)鍵字;<表達式>的值必須屬于整型、字符型或枚舉型。<常量表達式i>(i=1,2…n)是取值互不相同的整型常量、字符常量或枚舉常量,其具體類型應(yīng)與<表達式>的值相一致。<語句序列i>(i=1,2…n,n+1)可以是任意多條語句。switch語句的執(zhí)行過程是:(1)首先計算出<表達式>的值,設(shè)此值為E;(2)然后計算每個<常量表達式i>的值,設(shè)它們分別為C1,C2,…,Cn;(3)將E依次與C1,C2,…,Cn進行比較。如果E與某個值相等,則從該值所在的case標號語句開始執(zhí)行各個語句序列,在不出現(xiàn)跳轉(zhuǎn)語句的情況下,將一直執(zhí)行到switch語句結(jié)束。'(4)如果E與所有值都不相等且存在default標號,則從default標號語句起開始向下執(zhí)行,直到switch語句結(jié)束(同樣,在不出現(xiàn)跳轉(zhuǎn)語句的情況下)。(5)如果E與所有值都不相等且不存在default標號,則switch語句不會執(zhí)行任何操作。說明:(1)多個case標號可以共用一組語句序列,以實現(xiàn)對于幾個常量值都執(zhí)行同一操作。(2)default標號語句是可選的。當(dāng)default不出現(xiàn)時,如果<表達式>的值與所有<常量表達式i>(i=1,2…n)的值都不相等,則程序執(zhí)行流程會跳過switch語句。(3)switch語句是可以嵌套的。case和default標號只與包含它們的最內(nèi)層的switch組合在一起。(4)當(dāng)需要針對表達式的不同取值范圍進行不同處理時,使用if…else…if階梯結(jié)構(gòu)比較方便。因為switch語句只能對相等關(guān)系進行測試,而if語句卻可以用關(guān)系表達式對一個較大范圍內(nèi)的值進行測試。 【考點四】 循環(huán)結(jié)構(gòu)1for語句for語句是C+ +中最常用且功能的循環(huán)語句,其語法格式如下:for(<表達式1>;<表達式2>;<表達式3>)<語句>
其中,for為關(guān)鍵字;<表達式1>是for循環(huán)的初始化部分,它一般用來設(shè)置循環(huán)控制變量的初始值;<表達式2>是for循環(huán)的條件部分,它是用來判定循環(huán)是否繼續(xù)進行的條件;<表達式3>是for循環(huán)的增量部分,它一般用于修改循環(huán)控制變量的值;<語句>稱為for循環(huán)的循環(huán)體,它是要被重復(fù)執(zhí)行的代碼行,for循環(huán)體可以是單條語句,也可以是由花括號包圍起來的復(fù)合語句。for語句的執(zhí)行過程是:(1)計算<表達式1>的值;(2)計算<表達式2>的值,如果此值不等于0(即循環(huán)條件為"真"),則轉(zhuǎn)向步驟(3);如果此值等于0(即循環(huán)條件為"假"),則轉(zhuǎn)向步驟(5);(3)執(zhí)行一遍循環(huán)體<語句>:(4)計算<表達式3>的值,然后轉(zhuǎn)向步驟(2);(5)結(jié)束for循環(huán)。C+ +中for語句的書寫格式非常靈活,這主要表現(xiàn)為:(1)<表達式1>可以是變量聲明語句,即循環(huán)控制變量可在其中定義。(2)<表達式1>可以省略。這時,應(yīng)在for語句之前給循環(huán)控制變量賦初始值。注意:省略<表達式1>時,其后的分號不能省略。(3)<表達式2>可以省略。這時,for語句將不再判斷循環(huán)條件,循環(huán)會無限次地執(zhí)行下去。這種情況通常稱為"死循環(huán)"。(4)<表達式3>可以省略。這時,應(yīng)在循環(huán)中對循環(huán)控制變量進行遞增或遞減操作,以確保循環(huán)能夠正常結(jié)束。(5)三個表達式可同時省略。這時,for語句顯然也是一個"死循環(huán)"。(6)<表達式1>、<表達式2>和<表達式3>都可以是任何類型的C+ +表達式。
【考點一】 C+ +語句
C+ +語句按照不同功能大體分為6種類型,它們是:(1)聲明語句:用于對程序中的各種實體進行聲明、定義及初始化。(2)表達式語句:用于對程序中的數(shù)據(jù)進行具體操作和處理。(3)選擇語句:用于實現(xiàn)程序的選擇結(jié)構(gòu)。(4)循環(huán)語句:用于實現(xiàn)程序的循環(huán)結(jié)構(gòu)。(5)跳轉(zhuǎn)語句:用于實現(xiàn)程序執(zhí)行流程的轉(zhuǎn)移。(6)復(fù)合語句:用于表示程序中的語句塊概念。應(yīng)當(dāng)指出的是,C+ +中并不存在賦值語句和函數(shù)調(diào)用語句,賦值和函數(shù)調(diào)用都屬于表達式而不是語句。 【考點二 】 順序結(jié)構(gòu)
1.聲明語句聲明語句又稱為說明語句,它可以用來對程序中出現(xiàn)的各種名稱進行聲明。這些名稱通常是表示變量、常量、函數(shù)、結(jié)構(gòu)、類、對象等實體的標識符。在C+ +程序中,一個名稱在使用之前必須先被聲明。聲明的目的是告訴編譯器某個名稱所指代的實體類型。使用聲明語句能夠在程序中進行如下操作:(1)變量聲明(2)常量聲明(3)函數(shù)聲明(4)類型聲明聲明語句可以完成的工作不僅局限于為名稱指定類型,同時也是定義語句。另外,使用聲明語句還可以在定義變量時對其進行初始化。
2.表達式語句C+ +中所有對數(shù)據(jù)的操作和處理工作都是通過表達式語句來完成的。表達式語句的語法格式為:<表達式>;(1)賦值操作。(2)復(fù)合賦值操作。(3)增量、減量操作。(4)函數(shù)調(diào)用操作。(5)輸入輸出操作。
3.基本輸入輸出一個程序通常會向用戶輸出一些信息,一般也會要求用戶輸入一些信息。C+ +程序的輸入輸出操作是通過標準庫中的輸入/輸出流對象來完成的。在頭文件iostream中定義了代表屏幕的標準輸出流對象cout和代表鍵盤的標準輸入流對象cin。cin和cout具有強大的輸入輸出功能和極為靈活的用法。在程序中使用cin和cout之前,應(yīng)首先加入預(yù)處理命令:#include<iostream>,以包含標準頭文件iostream。使用cout進行數(shù)據(jù)輸出操作的一般格式為:cout<<Expr;這是一條表達式語句。其中,Expr代表一個表達式;"<<"稱為插入運算符。整條語句的含義是:將表達式Expr的值輸出(顯示)到屏幕上當(dāng)前光標所在位置。
4.復(fù)合語句和空語句復(fù)合語句又稱為塊語句,它是用一對花括號"{}"將若干條語句包圍起來而組成的一條語句,其語法格式為:{<語句1><語句2>…<語句n>}
其中,<語句i>(i=1,2…,n)可以是聲明語句、表達式語句、選擇語句、循環(huán)語句或跳轉(zhuǎn)語句等任何合法的C+ +語句,當(dāng)然,也可以是一個復(fù)合語句。分隔符"{"和"}"的作用是把若干條語句組成的序列包圍起來,使它們在邏輯上成為一條語句。復(fù)合語句可以出現(xiàn)在程序中任何需要語句的地方,但在通常情況下復(fù)合語句可以作為以下成分出現(xiàn)在程序中。(1)函數(shù)的函數(shù)體;(2)循環(huán)語句的循環(huán)體;(3)if語句的分支;(4)switch語句的執(zhí)行部分。實際上,空語句是一種特殊的表達式語句。其語法格式為:;即空語句只由一個分號組成。 【考點三】 選擇結(jié)構(gòu)
1.語句if語句又稱為條件語句,它是程序設(shè)計語言中最常見的一種選擇語句。(1)基本if語句基本if語句的功能是根據(jù)給定條件是否成立來決定要不要執(zhí)行一條語句或語句塊,它的語法格式如下:if(<條件>)<語句>
其中,if為關(guān)鍵字;<條件>通常是一個表達式且必須用圓括號包圍起來;<語句>稱為if子句,它可以是任何類型的語句(包括復(fù)合語句和空語句);緄f語句的執(zhí)行過程是:首先計算<條件>的值,如果此值不為0("真"),則執(zhí)行<語句>;如果此值為0("假"),則忽略<語句>(即不執(zhí)行)而繼續(xù)執(zhí)行if語句之后的下一條語句。說明:①C+ +中規(guī)定:如果<條件>是一個表達式,則當(dāng)此表達式的值不為0時,條件結(jié)果為"真";只有當(dāng)此表達式的值為0時,條件結(jié)果才為"假"。②<條件>也可以是一條聲明語句,其中必須定義一個變量并對它進行初始化。這時,若此變量的值不為0,則條件結(jié)果為"真";若此變量的值為0,則條件結(jié)果為"假"。(2)if…else語句if…else語句是基本if語句的擴展,其功能是根據(jù)給定條件是否成立來決定執(zhí)行兩部分語句中的哪一部分,其語法格式如下:if(<條件>)<語句1>else<語句2>
其中,if和else為關(guān)鍵字;<語句1>稱為if子句,<語句2>稱為else子句,它們可以是單條語句或復(fù)合語句。if…else語句的執(zhí)行過程是:首先計算<條件>的值,如果此值不為0("真"),則執(zhí)行<語句1>,然后忽略<語句2>而去執(zhí)行if語句之后的下一條語句;如果此值為0("假"),則忽略<語句1>,執(zhí)行<語句2>,然后繼續(xù)執(zhí)行if語句之后的下一條語句。(3)if語句的嵌套if子句和else子句可以是任何類型的C+ +語句,當(dāng)然也可以是if…else語句本身。通常將這種情況稱為if語句的嵌套。
2.switchswitch語句又稱為開關(guān)語句,它也是一種選擇語句。switch語句的功能是根據(jù)給定表達式的不同取值來決定從多個語句序列中的哪一個開始執(zhí)行,其語法格式如下:switch(<表達式>){case<常量表達式1>:<語句序列1>case<常量表達式2>:<語句序列2>…case<常量表達式n>:<語句序列n>default:<語句序列n+1>}
其中,switch,case和default為關(guān)鍵字;<表達式>的值必須屬于整型、字符型或枚舉型。<常量表達式i>(i=1,2…n)是取值互不相同的整型常量、字符常量或枚舉常量,其具體類型應(yīng)與<表達式>的值相一致。<語句序列i>(i=1,2…n,n+1)可以是任意多條語句。switch語句的執(zhí)行過程是:(1)首先計算出<表達式>的值,設(shè)此值為E;(2)然后計算每個<常量表達式i>的值,設(shè)它們分別為C1,C2,…,Cn;(3)將E依次與C1,C2,…,Cn進行比較。如果E與某個值相等,則從該值所在的case標號語句開始執(zhí)行各個語句序列,在不出現(xiàn)跳轉(zhuǎn)語句的情況下,將一直執(zhí)行到switch語句結(jié)束。'(4)如果E與所有值都不相等且存在default標號,則從default標號語句起開始向下執(zhí)行,直到switch語句結(jié)束(同樣,在不出現(xiàn)跳轉(zhuǎn)語句的情況下)。(5)如果E與所有值都不相等且不存在default標號,則switch語句不會執(zhí)行任何操作。說明:(1)多個case標號可以共用一組語句序列,以實現(xiàn)對于幾個常量值都執(zhí)行同一操作。(2)default標號語句是可選的。當(dāng)default不出現(xiàn)時,如果<表達式>的值與所有<常量表達式i>(i=1,2…n)的值都不相等,則程序執(zhí)行流程會跳過switch語句。(3)switch語句是可以嵌套的。case和default標號只與包含它們的最內(nèi)層的switch組合在一起。(4)當(dāng)需要針對表達式的不同取值范圍進行不同處理時,使用if…else…if階梯結(jié)構(gòu)比較方便。因為switch語句只能對相等關(guān)系進行測試,而if語句卻可以用關(guān)系表達式對一個較大范圍內(nèi)的值進行測試。 【考點四】 循環(huán)結(jié)構(gòu)1for語句for語句是C+ +中最常用且功能的循環(huán)語句,其語法格式如下:for(<表達式1>;<表達式2>;<表達式3>)<語句>
其中,for為關(guān)鍵字;<表達式1>是for循環(huán)的初始化部分,它一般用來設(shè)置循環(huán)控制變量的初始值;<表達式2>是for循環(huán)的條件部分,它是用來判定循環(huán)是否繼續(xù)進行的條件;<表達式3>是for循環(huán)的增量部分,它一般用于修改循環(huán)控制變量的值;<語句>稱為for循環(huán)的循環(huán)體,它是要被重復(fù)執(zhí)行的代碼行,for循環(huán)體可以是單條語句,也可以是由花括號包圍起來的復(fù)合語句。for語句的執(zhí)行過程是:(1)計算<表達式1>的值;(2)計算<表達式2>的值,如果此值不等于0(即循環(huán)條件為"真"),則轉(zhuǎn)向步驟(3);如果此值等于0(即循環(huán)條件為"假"),則轉(zhuǎn)向步驟(5);(3)執(zhí)行一遍循環(huán)體<語句>:(4)計算<表達式3>的值,然后轉(zhuǎn)向步驟(2);(5)結(jié)束for循環(huán)。C+ +中for語句的書寫格式非常靈活,這主要表現(xiàn)為:(1)<表達式1>可以是變量聲明語句,即循環(huán)控制變量可在其中定義。(2)<表達式1>可以省略。這時,應(yīng)在for語句之前給循環(huán)控制變量賦初始值。注意:省略<表達式1>時,其后的分號不能省略。(3)<表達式2>可以省略。這時,for語句將不再判斷循環(huán)條件,循環(huán)會無限次地執(zhí)行下去。這種情況通常稱為"死循環(huán)"。(4)<表達式3>可以省略。這時,應(yīng)在循環(huán)中對循環(huán)控制變量進行遞增或遞減操作,以確保循環(huán)能夠正常結(jié)束。(5)三個表達式可同時省略。這時,for語句顯然也是一個"死循環(huán)"。(6)<表達式1>、<表達式2>和<表達式3>都可以是任何類型的C+ +表達式。