第3章 基本控制结构
【考点一】 C+ +语句
C+ +语句按照不同功能大体分为6种类型,它们是:(1)声明语句:用于对程序中的各种实体进行声明、定义及初始化。(2)表达式语句:用于对程序中的数据进行具体操作和处理。(3)选择语句:用于实现程序的选择结构。(4)循环语句:用于实现程序的循环结构。(5)跳转语句:用于实现程序执行流程的转移。(6)复合语句:用于表示程序中的语句块概念。应当指出的是,C+ +中并不存在赋值语句和函数调用语句,赋值和函数调用都属于表达式而不是语句。 【考点二 】 顺序结构
1.声明语句声明语句又称为说明语句,它可以用来对程序中出现的各种名称进行声明。这些名称通常是表示变量、常量、函数、结构、类、对象等实体的标识符。在C+ +程序中,一个名称在使用之前必须先被声明。声明的目的是告诉编译器某个名称所指代的实体类型。使用声明语句能够在程序中进行如下操作:(1)变量声明(2)常量声明(3)函数声明(4)类型声明声明语句可以完成的工作不仅局限于为名称指定类型,同时也是定义语句。另外,使用声明语句还可以在定义变量时对其进行初始化。
2.表达式语句C+ +中所有对数据的操作和处理工作都是通过表达式语句来完成的。表达式语句的语法格式为:<表达式>;(1)赋值操作。(2)复合赋值操作。(3)增量、减量操作。(4)函数调用操作。(5)输入输出操作。
3.基本输入输出一个程序通常会向用户输出一些信息,一般也会要求用户输入一些信息。C+ +程序的输入输出操作是通过标准库中的输入/输出流对象来完成的。在头文件iostream中定义了代表屏幕的标准输出流对象cout和代表键盘的标准输入流对象cin。cin和cout具有强大的输入输出功能和极为灵活的用法。在程序中使用cin和cout之前,应首先加入预处理命令:#include<iostream>,以包含标准头文件iostream。使用cout进行数据输出操作的一般格式为:cout<<Expr;这是一条表达式语句。其中,Expr代表一个表达式;"<<"称为插入运算符。整条语句的含义是:将表达式Expr的值输出(显示)到屏幕上当前光标所在位置。
4.复合语句和空语句复合语句又称为块语句,它是用一对花括号"{}"将若干条语句包围起来而组成的一条语句,其语法格式为:{<语句1><语句2>…<语句n>}
其中,<语句i>(i=1,2…,n)可以是声明语句、表达式语句、选择语句、循环语句或跳转语句等任何合法的C+ +语句,当然,也可以是一个复合语句。分隔符"{"和"}"的作用是把若干条语句组成的序列包围起来,使它们在逻辑上成为一条语句。复合语句可以出现在程序中任何需要语句的地方,但在通常情况下复合语句可以作为以下成分出现在程序中。(1)函数的函数体;(2)循环语句的循环体;(3)if语句的分支;(4)switch语句的执行部分。实际上,空语句是一种特殊的表达式语句。其语法格式为:;即空语句只由一个分号组成。 【考点三】 选择结构
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语句的嵌套。
2.switchswitch语句又称为开关语句,它也是一种选择语句。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语句却可以用关系表达式对一个较大范围内的值进行测试。 【考点四】 循环结构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+ +表达式。
【考点一】 C+ +语句
C+ +语句按照不同功能大体分为6种类型,它们是:(1)声明语句:用于对程序中的各种实体进行声明、定义及初始化。(2)表达式语句:用于对程序中的数据进行具体操作和处理。(3)选择语句:用于实现程序的选择结构。(4)循环语句:用于实现程序的循环结构。(5)跳转语句:用于实现程序执行流程的转移。(6)复合语句:用于表示程序中的语句块概念。应当指出的是,C+ +中并不存在赋值语句和函数调用语句,赋值和函数调用都属于表达式而不是语句。 【考点二 】 顺序结构
1.声明语句声明语句又称为说明语句,它可以用来对程序中出现的各种名称进行声明。这些名称通常是表示变量、常量、函数、结构、类、对象等实体的标识符。在C+ +程序中,一个名称在使用之前必须先被声明。声明的目的是告诉编译器某个名称所指代的实体类型。使用声明语句能够在程序中进行如下操作:(1)变量声明(2)常量声明(3)函数声明(4)类型声明声明语句可以完成的工作不仅局限于为名称指定类型,同时也是定义语句。另外,使用声明语句还可以在定义变量时对其进行初始化。
2.表达式语句C+ +中所有对数据的操作和处理工作都是通过表达式语句来完成的。表达式语句的语法格式为:<表达式>;(1)赋值操作。(2)复合赋值操作。(3)增量、减量操作。(4)函数调用操作。(5)输入输出操作。
3.基本输入输出一个程序通常会向用户输出一些信息,一般也会要求用户输入一些信息。C+ +程序的输入输出操作是通过标准库中的输入/输出流对象来完成的。在头文件iostream中定义了代表屏幕的标准输出流对象cout和代表键盘的标准输入流对象cin。cin和cout具有强大的输入输出功能和极为灵活的用法。在程序中使用cin和cout之前,应首先加入预处理命令:#include<iostream>,以包含标准头文件iostream。使用cout进行数据输出操作的一般格式为:cout<<Expr;这是一条表达式语句。其中,Expr代表一个表达式;"<<"称为插入运算符。整条语句的含义是:将表达式Expr的值输出(显示)到屏幕上当前光标所在位置。
4.复合语句和空语句复合语句又称为块语句,它是用一对花括号"{}"将若干条语句包围起来而组成的一条语句,其语法格式为:{<语句1><语句2>…<语句n>}
其中,<语句i>(i=1,2…,n)可以是声明语句、表达式语句、选择语句、循环语句或跳转语句等任何合法的C+ +语句,当然,也可以是一个复合语句。分隔符"{"和"}"的作用是把若干条语句组成的序列包围起来,使它们在逻辑上成为一条语句。复合语句可以出现在程序中任何需要语句的地方,但在通常情况下复合语句可以作为以下成分出现在程序中。(1)函数的函数体;(2)循环语句的循环体;(3)if语句的分支;(4)switch语句的执行部分。实际上,空语句是一种特殊的表达式语句。其语法格式为:;即空语句只由一个分号组成。 【考点三】 选择结构
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语句的嵌套。
2.switchswitch语句又称为开关语句,它也是一种选择语句。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语句却可以用关系表达式对一个较大范围内的值进行测试。 【考点四】 循环结构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+ +表达式。