资源描述
第二章 程序控制结构
2.1 顺序结构
2.1.1 定义语句
又称说明语句。在C++程序中,一个标识符在使用前必须先定义,通知编译器为其分配存储空间,或告诉编译器它的存在及特点。
2.1.2 表达式语句
对数据的操作和处理都有这个语句来完成。
语法结构:
<表达式>;
例如:b*=c; 表示把b*c的值赋给b
2.1. 3 复合语句
又称块语句。
语法格式:
{
<语句1>
<语句2>
…
<语句n>
}
在选择结构和循环结构中常常用到复合结构。
2.1.4 空语句
语法格式:
;
2.1.5 基本输出输入
输入输出的操作是通过标准库的输入输出流对象来完成的。
要使用cin和cout,需要在C++程序开头加上包含命令。P35
1.标准输入流 cin
语法格式:
cin>>变量1>>变量2>>…>>变量n;
2.标准输出流 cout
语法格式:
cout<<表达式1<<表达式2<<…<<表达式n;
2.2 选择结构
2.2.1 if 结构
又称条件语句,有三种形式。
1、 表达式是任意的数值、字符、关系或逻辑表达式,表示条件,以true(非0)表示真,false(0)表示假。用圆括号。
2、 语句称为if语句的内嵌语句,可以是单条语句也可以是复合语句。
1. if 语句(单分支)
语法格式:
if (表达式)
语句
执行顺序:首先计算表达式的值,若为true,则执行内嵌语句,否则不做操作。
2. if…else语句 (双分支)
语法格式:
if(表达式)
语句1
else(表达式)
语句2
执行顺序:首先计算表达式的值,若为true或非0,则执行语句1。否则执行语句2.
3. if…else if语句(多分支)
语法格式:
if(表达式1)
注意:
1、不不管有几个分支,程序执行了一个分支后,其余分支不再执行。
2、当多分支中有多个表达式同时满足条件,则只能执行第一条与之匹配的语句。
3、else if 不能写成elseif,单词中间要有空格。
语句1
else if(表达式2)
语句2
…
else if (表达式n)
语句n
else
语句n+1
4.if 语句的嵌套形式
即if 或else后面的内镶嵌语句本身又是一个if语句。
注意以下三点:
1、为了增强可读性,采用锯齿形结构。
2、规定else始终与同一层中前面最接近它的if语句配对,而这个if语句又没有其他的else与它匹配。
3、if要与else配对,如果省略某一个else,便要用{}括起该层的if语句来确定关系。
2.2.2 switch 结构
专门描述多分支选择结构的switch语句,又称为开关语句。
语法格式:
switch(表达式)
{
case 常量表达式1:语句1
case 常量表达式2:语句2
……
case 常量表达式n:语句n
[default:语句序列n+1]
}
当使用switch语句时,应注意一下4点:
1.switch后的表达式可以是整型、字符型或枚举型,case后的常量表达式必须与之相配,且各常量表达式的值不能相同。
2.每个case分支可以有多条语句,但不必用{}括起来。
3.每个case子句只是一个入口标号,并不能确定执行的终止点,因此每个case语句的最后,应该加上break语句,用来结束整个switch的结构,否则会从入口点开始一直执行到switch结构的终止点。
4.当若干个分支需要执行相同的操作时,可以使用多个case分支共用一组语句。
2.3 循环结构
2.3.1 while 语句
表达式称为循环条件,可以是任何的合法形式其值为true 、false,用于控制循环是否继续进行。
语句称为循环体,要被重复的代码行,可以是单语句,也可以是复合语句。
实现当型循环。
特点:先判断后执行
语法格式:
while(表达式)
语句
应用while语句时,注意一下5点:
1.while后的“条件表达式”要用()括起来。
2.如果循环语句中的语句多于一条时,应该用{}括起来,即以复合语句的形式出现。因为while语句的作用范围只能是while后面的第一条语句。
3.在循环体中应该有改变循环条件表达式值的语句,否则将会造成死循环。
4.若表达式中的值一开始就是false(0),则循环体一次也不执行,直接退出程序。
5.要留心边界值(循环次数)。在设置循环条件时,要仔细分析边界值,以免多执行一次或少执行一次。注意“++”“﹣﹣”的使用。
2.3.2 do…while语句
用于实现直到型循环结构。
特点:先执行,后判断。
语法结构:
do
语句
while(表达式);
注意事项与while语句相同。注意在while(表达式)后有分号,而在while语句中该部分没有分号。若在while语句中while(表达式)后面出现分号,表示空循环。
while和 do…while的主要区别:在于循环条件的判断和执行的先后顺序。前者比较理智,先判断后执行;后者很笨,先执行后判断。所以while可以一次也不执行,后者,至少执行一次。
一般情况下,如果两种的循环体和条件表达式都相同,则它们的结果也相同。但是,有例外。见P47
2.3.3 for 结构
最灵活,应用最多的循环控制语句。
表达式1:循环的初始化部分,用来控制循环变量的初始值。
表达式2:循环的条件部分,判断循环是否执行。
表达式3:循环的增量部分,用于修改循环控制变量的值。
语句是循环的循环体,可以是单语句也可以是复合语句。
特点:已知循环次数后,再循环。
语法格式:
for(表达式1;表达式2;表达式三)
语句
但过于灵活的格式会降低语句的可读性。
一般来说,for语句用于循环次数确定的情况下,而while和do…while用于循环次数不确定的情况。
2.3.4 多重循环
又称循环嵌套,指某个循环语句的循环体内还可以包含多个循环语句。
在嵌套时,要注意一个循环体内包含另一个完整的循环结构。
对于循环语句的使用,要注意以下五点:
1.内循环控制变量不能与外循环控制变量同名。
2.外循环必须完全包含内循环,不能交叉。
3.若循环体内有if 语句,或if 语句内有循环语句,也不能交叉。
4.使用goto语句可以从循环体内转向循环体外,但绝对不允许从循环体外转向循环体内。
5.使用多重循环时需要严格按照缩进规则书写程序。有时还要配以注释,以保持清晰易辨的结构特征。
2.4 控制转向结构
2.4.1 break 结构
语法格式:
break;
仅用于以下两种情况:
1、switch。保证多分支情况的正确运行,当某个case子句执行完后,使程序流程立即跳出switch结构,而继续执行该语句的下一条语句。
2、循环语句。在某一恰当时刻及位置终止的执行循环体的语句,并使流程控制退出该循环控制结构,转去执行该循环语句的下一条语句。
2.4.2 continue 语句
语法结构:
continue;
功能:结束本次循环。(即循环体中尚未执行的语句,接着进行下一次是否进行循环的条件判断。
在while 和do…while的循环结构中,continue语句将是执行流程直接跳转到循环条件的判断部分,然后决定循环是否进行。
在for循环结构中,执行流程将跳过循环体中余下的语句,而转去for语句的表达式3,然后根据表达式2进行循环条件的判定以决定是否继续执行for循环体。
2.4.3 goto 语句
语法格式:
goto 标号;
“标号”是一个由用户命名的标识符。在此语句中必须存在一条由标号标记的语句。
格式为:标号:语句;
在标号和语句之间用一个冒号分隔,这种语法结构称为标号语句。
标号语句中的标号应该和goto语句中的标号相同,语句可以是任意类型的。
作用:将程序的执行流程转到标号所指定的标号语句处。
2.5 程序实例
例一:求两个正整数的最大公约数
例二:显示输出3-100之间的所有素数
例三:输入x,计算sin(x).
例四:求水仙花数
例五:枚举法 求百元买百鸡问题
展开阅读全文