4.3 多分支选择语句——switch结构(课件)-高二《程序设计基础》同步教学(人民邮电版)
2023-07-24
|
16页
|
315人阅读
|
0人下载
普通
内容正文:
4.3 多分支选择语句——switch结构
4.3.1 switch结构的基本形式
4.3.2 带break语句的switch语句
在前面的内容中,学习了使用if语句构建选择结构的一般方法。使用if-else结构可以实现双分支选择功能,使用if-else if-else结构可以实现多分支选择功能,但是这种多分支结构使用起来比较繁琐。
在C程序中,使用switch结构可以非常方便地构成多分支选择结构。一个程序涉及的分支越多,越适合使用switch结构。
4.3.1 switch结构的基本形式
图4-4 switch结构的流程图
switch结构用于实现多分支选择结构,也就是说可以从多组语句中选择执行其中的部分语句。
(1)switch结构的语法格式为
switch(表达式)
{
case 常量表达式1:语句1;
case 常量表达式2:语句2;
case 常量表达式n:语句n;
default:语句n+1;
}
(2)该语句的执行过程如下
· 首先将“表达式”的值依次与各个“常量表达式”进行比较,哪个“常量表达式”的值与“表达式”的值相等,就执行该“常量表达式”后面的语句,此时该语句称为执行switch语句的入口。
· 一旦一个语句被执行后,顺次执行其后的所有语句,而不必再判断相应的“常量表达式”的值是否和“表达式”的值相等。
· 当所有case后的“常量表达式”都不与“表达式”的值相等时,就只执行default后的语句。
· 当“表达式”的值与“常量表达式1”相一致时,不仅执行语句1,而且其后的语句2到语句n+1也都被执行。同理,当“表达式”与“常量表达式3”相一致时,不仅执行语句3,而且其后的语句4到语句n+1也都被执行;当所有的“常量表达式”与“表达式”都不一致时,就只执行语句n+1。
(3)使用说明
· switch后面圆括号内的“表达式”可为任何类型,并且“表达式”的类型和“常量表达式”的类型一定要一致,否则会出现语法错误。当“常量表达式”的值与“表达式”的值相等时,执行其后的所有的语句,否则就执行default后面的语句。圆括号不能省略,且其外没有“;”,否则会出现语法错误。
· switch语句中大括号内的部分称为switch语句的语句体。
· default出现的顺序并不影响程序的功能,default后的语句总是最后执行。
· case后必须是常量表达式并且每个case后面的常量表达式必须互不相同,case和常量表达式之间一定要有空格,否则为语法错误。
· 每个case所管辖的语句可以是一条语句,也可以是多条语句,若是多条,可不加大括号。case后的语句还可以为空,当为空时,什么都不做,程序继续执行下一条case后的语句,不影响其他语句的执行。
4.3.2 带break语句的switch语句
break语句用来实现程序的跳转和退出。
由前一节可知,switch语句的基本结构只能实现“满足一个条件执行多个或一个case之后语句的情况”,但是如果要实现“满足多个或一个条件只执行一个case之后语句的情况”又怎么办呢?此时就要使用带break语句的switch语句。
(1)带break语句的switch语句语法格式为
switch(表达式)
{
case 常量表达式1: 语句1; break;
case 常量表达式2: 语句2; break;
case 常量表达式n: 语句n; break;
default: 语句n+1;
}
与switch语句的基本形式相比,带break语句的switch语句最本质的差异是:一旦程序执行到break语句,将跳出switch语句,从而结束分支选择。
(2)带break语句的switch语句的流程
首先计算switch后面圆括号内的表达式的值,比较该值和case后的“常量表达式”的值是否相等,找到执行switch语句体的入口。
· 入口之前的case的语句不被执行,只执行入口以后case后的语句。
· 如果入口以后的case之后均没有break语句,则入口后所有case后的语句均被依次顺序执行,最后执行default以后的语句(此时即为switch语句的基本用法)。
· 如果在执行入口及其以后case后的语句的过程中一旦遇到break语句,则立即结束switch语句的执行。
(3)用法说明
switch语句的基本用法中的所有规范均适用于带break语句的switch语句。对带break语句的switch语句当“常量表达式”的值与“表达式”的值相等时,就执行相应“常量表达式”后的语句(包括case和default后的语句),如果遇到break语句则跳出switch语句的语句体,结束switch语句的执行;当“常量表达式”的值与“表达式”的值不相等时,就只执行defa
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。