📄 c++4.dat
字号:
第四章 流程控制语句
语句是构造程序最基本的单位,程序运行的过程就是执行程序语句的过程.程序语句执行的次序称之为流程控制(或控制流程).我们前面介绍的实例程序中,程序语句都是顺序执行的.我们是否能够改变程序顺序执行的流程呢?例如,当满足某个条件时,执行某种运算或重复执行某种运算.答案是肯定的,流程控制语句就是用于修改程序的执行路径.
本章我们介绍的C++流程控制语句包括:
* if语句,也称为分支语句.
* switch语句,也称之为多分支语句.
* 循环语句.
* break和continue语句,这两个语句与switch语句或循环语句配合使用.
* goto语句.
1 if 语句
形式: C语言提供了三种形式的if语句
1. if(表达式) 语句
例如: if(x>y)printf("%d",x);
2. if(表达式) 语句1 elae 语句2
例如: if(x>y)printf("%d",x);
else printf("%d",y);
3. if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
.
.
.
else if(表达式n) 语句n
else 语句n
例如: if(number>500) cost=0.15;
else if(number>300) cost=0.10;
else if(number>100) cost=0.075;
else if(number>50) cost=0.05;
else cost=0;
功能: if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一.
说明: 1. 三种形式的if语句中在if后面都有"表达式", 一般为逻辑表达式或关系表达式.
例如,if(a==b && x==y) printf("a=b,x=y");在执行if语句时先对表达式求解,若表达式的值 为0,按"假"处理,若表达式的值为非0,按"真"处理,执行指定的语句.
假如有以下if语句: if('3')printf("OK");
是合法的,执行结果输出"OK",因为表达式的值为3,按"真"处理.由此可见,表达式的类型不限 于逻辑表达式,可以是任意的数值类型.
例如,下面的语句也是合法的:if('a')printf("%d",'a');
执行结果,输出'a'的ASCII码97.
2. 在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号"{}"将 几个语句括起来 成为一个复合语句.
例如: if(x>0)
{
printf("%f",x);
printf("OK");
}
else
printf("it is not a trilateral");
2 switch语句
switch语句的一般形式如下:
switch (表达式) {
case常量表达式1:
语句;
...
case常量表达式n:
语句;
default:
语句;
}
switch语句的执行过程是这样的:首先计算"表达式"的值,然后,其结果值依次与每一个常量表达式的值进行匹配(常量表达式的值的类型必须与"表达式"的值的类型相同).如果匹配成功,则执行该常量表达式后的语句系列.当遇到break时,则立即结束switch语句的执行,否则,顺序执行到花括号中的最后一条语句.default情形是可选的,如果没有常量表达式的值与"表达式"的值匹配,则执行default后的语句系列.需要注意的是:"表达式"的值的类型必须是字符型或整型.
我们下面看一个分析双目算术运算的例子4-9.双目算术运算符存在字符型变量operator中,两个操作数分别存在变量operand1和operand2,switch语句执行相应的运算,并将结果存在变量result中.
3.1 while语句
while语句的一般形式如下:
while (表达式)
语句;
while语句的执行过程如下:首先计算"表达式"(称之为循环条件)的值,如果其结果值非0,则执行"语句"(称之为循环体).这个过程重复进行,称之为循环,直至"表达式"的值为0时,才结束循环.
3.2 do-while语句
do-while语句类似于while语句,但是它先执行循环体,然后检查循环条件.do-while语句的一般形式为:
do
语句;
while (表达式);
如果"表达式"的值非0,循环继续进行,否则,循环终止.
与while语句相比,我们使用do-while语句要少一些.但是,对于有些情况,循环体至少要执行一次,do-while语句就很有用.例如,假定我们要重复读一个值,并打印它的平方,终止的条件是该值为0.我们可以用do-while语句表示为:
do {
cin >> n;
cout << n * n << '\n';
}
while (n != 0);
3.3 for语句
for语句的一般形式如下:
for (表达式1; 表达式2; 表达式3)
语句;
for语句执行过程如下:首先计算"表达式1"(循环初值),且仅计算一次.每一次循环之前计算"表达式2"(循环条件),如果其结果非0,则执行"语句"(循环体),并计算"表达式3"(循环增量).否则,循环终止.for循环与下面的while循环等价:
表达式1;
while (表达式2) {
语句;
表达式3;
}
4.1 break语句
break语句用在循环语句的循环体内的作用是终止当前的循环语句.
4.2 continue语句
continue语句的功能与break语句不同,它是结束当前循环语句的当前循环,而执行下一次循环.在循环体中,continue语句执行之后,其后的语句均不再执行.
在while和do-while循环语句中,下一次循环是从判断循环条件开始,在for循环语句中,下一次循环是是从先计算第三个表达式,再判断循环条件开始的.例如:重复读入一些整数,当该整数为负时忽略,否则,处理该整数,而该整数为0时,程序执行终止.
4.3 goto语句
goto语句,它使程序执行分支转移到被称为"称号"(label)的目的地.
1. 语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成,其第一个字 符必须为字母或下划线.不能用整数来做标号.
2. goto label_1;是合法的,而goto 123;是不合法的.结构化程序设计方法主张限制使用goto语 句,因为滥用goto语将使程序流程无规律、可读性差.但也不是绝对禁止使用goto语句.
3. 一般来说,可以有两种用途:(1)与if语句一起构成循环结构;(2)从循环体中跳转到循环体外, 但在C语言中可以用break语句和continue语句跳出本层循环和结束本次循环.goto语句的使用 机会已大大减少,只是需要从多层循环的内层循环跳到外层循环外时才用到goto语句.但是这 种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能大大提高效率)才使用.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -