首页 理论教育C++程序设计基础教程:选择控制语句简介

C++程序设计基础教程:选择控制语句简介

【摘要】:C++中,语句默认都是顺序执行,如果碰到选择或循环语句,顺序执行的规则就要改变。C++中的选择控制语句有if语句、if...else语句、if...else if语句和sw itch语句。对于简单的if...else语句,可以使用条件运算符来代替。“语句1”、“语句2”、…使用sw itch语句应注意下列问题:◇整型表达式包括字符型或枚举型表达式。

除简单的顺序控制语句外,C++还定义了一些可以控制程序执行流程的语句,这些语句提供对控制流的选择和循环功能。C++中,语句默认都是顺序执行,如果碰到选择或循环语句,顺序执行的规则就要改变。

C++中的选择控制语句有if语句、if...else语句、if...else if语句和sw itch语句。

1.if语句

if语句用于在程序中有条件地执行某一语句序列,它的基本语法格式如下:

if(条件表达式)语句;

其功能是:当“条件表达式”为真时执行后面的“语句”,其中“语句”既可以是单个语句,也可以是复合语句。

【例1.8】编写一个程序,显示用户输入数值的绝对值。

解:程序如下:

2.if...else语句

如果希望在“条件表达式”为真和为假时分别执行不同的语句,则用else来引入条件表达式为假时执行的语句序列,这就是if...else语句,它根据不同的条件分别执行不同的语句序列,其语法形式如下:

其功能是:当“条件表达式”为真时执行“语句1”;当“条件表达式”为假时执行“语句2”。这些语句均可以是复合语句。

当多个if...else语句嵌套时,else与哪个if匹配呢?为解决语义上的这种歧义性,C++中规定,else总是与最后一个出现的还没有else与之匹配的if匹配。

对于简单的if...else语句,可以使用条件运算符来代替。条件运算符是具有三个操作数的三目运算符,由?和:组成,其一般语句格式如下:

表达式1?表达式2:表达式3

其执行过程是,先计算“表达式1”的值,若为真,则计算“表达式2”的值并作为整个条件表达式的值;若“表达式1”的值为假,则“计算表达式3”的值并作为整个条件表达式的值。

【例1.9】编写一个程序,显示用户输入数值的绝对值。

解:程序如下:

上述程序中的if...else语句采用条件运算符实现如下:

if...else if语句用于进行多重判断,其语法形式如下:(www.chuimin.cn)

其中,if、else if、else都是关键字。“条件表达式l”、“条件表达式2”、…“条件表达式n”是作为判断条件使用的各种表达式,常用的是关系表达式或逻辑表达式,其他表达式也可以,不要用赋值表达式。“语句1”、“语句2”、…“语句n+1”既可以是单一语句,也可以是复合语句。

该语句功能如下:先计算“条件表达式1”给出的表达式值。如果该值为真,则执行“语句l”,执行完毕后转到该条件语句后面继续执行其后的语句;如果该值为假,则继续计算“条件表达式2”给出的表达式值。如果该值为真,则执行“语句2”,执行完毕后转到该条件语句后面执行其后语句;如果该值为假,则继续计算“条件表达式3”给出的表达式值,依此类推。如果所有条件中给出的表达式值都为假,则执行else后面的“语句n+1”。如果没有else,则什么也不做,转到该条件语句后面的语句继续执行。

【例1.10】编写一个程序,将用户输入的分数转换成等级:A(≥90),B(80~89),C(70~79),D(60~69),E(<60)。

解:程序如下:

4.switch语句

sw itch语句也称为开关语句,用于有多重选择的场合,测试某一个变量具有多个值时所执行的动作。sw itch语句的语法形式为:

sw itch语句的执行顺序是:首先计算sw itch语句中“整型表达式”的值,然后在case语句中寻找值相等的整型常量表达式,并以此为入口标号,由此开始顺序执行。如果没有找到相等的整型常量表达式,则从“default:”开始执行。

使用sw itch语句应注意下列问题:

◇整型表达式包括字符型或枚举型表达式。

◇各常量表达式的值不能相同,但次序不影响执行结果。

◇每个case分支可以有多条语句,但不必用{}。

◇每个case语句只是一个入口标号,并不能确定执行的终止点,因此每个case分支的最后应该加break语句,用来结束整个sw itch结构,否则会从入口点开始一直执行到sw itch结构的结束点。

◇当若干分支需要执行相同操作时,可以使多个case分支共用一组语句。

【例1.11】编写一个程序,输入课程后显示相应的学分:数学(代号为m,8学分)、物理(代号为p,5学分)、化学(代号为c,5学分)、语文(代号为w,8学分)、英语(代号为e,6学分):

解:程序如下:

本程序的执行结果如下:

课程代号:c↙

5学分