资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
C C语言程序设计语言程序设计第九课 第九课 switch-case switch-case 多分支开路语句多分支开路语句9.19.1 switch-caseswitch-case 语句语句在编写应用程序时,在必须从很多可以的选项中选择一组指在编写应用程序时,在必须从很多可以的选项中选择一组指 令的地方,可以使用令的地方,可以使用 if-elseif-else 链。在将一个整数表达式的值链。在将一个整数表达式的值 与特定的值进行比较时,可以使用与特定的值进行比较时,可以使用 switch switch- -casecase 语句来替代语句来替代 if-else if-else 链。链。switch-case switch-case 语句的常规格式如下:语句的常规格式如下:switch(switch(整型表达式整型表达式) ) case case 常量常量1: 1: 语句系列语句系列1; break;1; break; case case 常量常量2: 2: 语句系列语句系列2; break;2; break;. . . .case case 常量常量n: n: 语句系列语句系列n; break;n; break; default:default: 语句语句 n+1n+1; 9.29.2 switch-caseswitch-case 常规书写格式常规书写格式switchswitch( (整型表达式整型表达式) ) casecase 常量常量1:1: 语句系列语句系列1;1; breakbreak; casecase 常量常量2:2: 语句系列语句系列2;2; breakbreak;. . . .casecase 常量常量n:n: 语句系列语句系列n;n; breakbreak; defaultdefault: 语句语句 n+1n+1; 复合语句开始复合语句开始switchswitch和复合语句结束和复合语句结束以冒号结束以冒号结束以冒号结束以冒号结束以冒号结束以冒号结束以冒号结束以冒号结束缩进缩进 再次缩进再次缩进缩进缩进9.39.3 switch-switch- casecase 执执 行流程图行流程图在 在 switch-case switch-case 语句中有语句中有4 4个新的关键字:个新的关键字:switchswitch、 casecase、defaultdefault 和和 breakbreak,下面分别给予介绍。,下面分别给予介绍。关键字 关键字 switch switch 标识标识 swithcswithc-case -case 语句的开始。该关语句的开始。该关 键字后的圆括号内的整型表达式将得到赋值,然后将该表达式键字后的圆括号内的整型表达式将得到赋值,然后将该表达式 的结果与复合语句内包含的各种可以的值的结果与复合语句内包含的各种可以的值依次依次进行比较。 进行比较。 swithswith 语句中的表达式必须被指定为整数结果值,否则将会出语句中的表达式必须被指定为整数结果值,否则将会出 现编译错误。在现编译错误。在 switch-case switch-case 语句内,关键字语句内,关键字 case case 被用被用 来标识或标记与来标识或标记与 switch switch 表达式的值进行比较的每个值。表达式的值进行比较的每个值。switch switch 表达式的值与这些表达式的值与这些 case case 值依次进行比较,直到值依次进行比较,直到 找到匹配的值。当找到匹配值时,执行将从紧跟着该匹配值的找到匹配的值。当找到匹配值时,执行将从紧跟着该匹配值的 语句开始,因此,如下所示,表达式的值决定了在语句开始,因此,如下所示,表达式的值决定了在 switch switch 语语 句中执行实际开始的位置:句中执行实际开始的位置:9.49.4 switch switch 和和 case case 关键字关键字在一个 在一个 switch switch 语句中可以采用任意顺序来包含任意数目语句中可以采用任意顺序来包含任意数目 的的 case case 标签。但是,如果表达式的值与所有标签。但是,如果表达式的值与所有 case case 值都不值都不 匹配,那么将不执行任何语句,除非遇到关键字匹配,那么将不执行任何语句,除非遇到关键字 defaultdefault。关。关 键字键字 default default 是可选的,并且它与是可选的,并且它与 if-else if-else 链中的最后一链中的最后一 个个 else else 的作用相同。的作用相同。9.59.5 defaultdefault 关键字关键字switch(switch(整型表达式整型表达式) ) case case 常量常量1:1:. . . .break;break; case case 常量常量2:2:. . . .break;break;. . . .case case 常量常量n:n:. .break;break;default: default:. . /switch /switch 语句结束语句结束若表达式等于常量若表达式等于常量1 1,则从这里开始,则从这里开始若表达式等于常量若表达式等于常量2 2,则从这里开始,则从这里开始若表达式等于常量若表达式等于常量n n,则从这里开始,则从这里开始若所有常量都不匹配,则从这里开始若所有常量都不匹配,则从这里开始/模拟模拟ATMATM机菜单系统程序片段(完整程序请参考机菜单系统程序片段(完整程序请参考 ex09_01.cex09_01.c)/执行各个分支执行各个分支 switch( key )switch( key ) case 1:case 1: printfprintf(“(“您执行的是修改密码操作!您执行的是修改密码操作!n“); n“); case 2:case 2: printfprintf(“(“您执行的是转帐操作!您执行的是转帐操作!n“);n“); case 3:case 3: printfprintf(“(“您执行的是存款操作!您执行的是存款操作!n“);n“); case 4:case 4: printfprintf(“(“您执行的是取款操作!您执行的是取款操作!n“);n“); case 5:case 5: printfprintf(“(“您执行的查询余额操作!您执行的查询余额操作!n“);n“); case 6:case 6: printfprintf(“(“系统退出!系统退出!n“);n“); default:default: printfprintf(“(“您选择了一个错误的操作!您选择了一个错误的操作!n“);n“); 一旦通过 一旦通过 switch switch 语句确定了入口点,所有进一步的语句确定了入口点,所有进一步的 case case 赋值都会被忽略,并且,除非遇到关键字赋值都会被忽略,并且,除非遇到关键字 breakbreak,否则,否则 执行将一直持续到复合语句结束,这就是采用执行将一直持续到复合语句结束,这就是采用 break break 语句的语句的 原因,原因,它将标识特定它将标识特定 case case 的结束,并使得立即退出的结束,并使得立即退出 switch switch 语句语句,因此,就像关键字,因此,就像关键字 case case 标识复合语句中可以存在的起标识复合语句中可以存在的起 始点一样,始点一样,break break 语句将确定终止点语句将确定终止点。如果省略了如果省略了 break break 语语 句,那么匹配的句,那么匹配的 case case 值后的所有情况(包括值后的所有情况(包括 default default 情况情况 )都会被执行。)都会被执行。10.610.6 break break 关键字关键字switch(switch(整型表达式整型表达式) ) case case 常量表达式常量表达式1:1:. . . .break;break; case case 常量表达式常量表达式2:2:. . . .break;break;. . . .case case 常量表达式常量表达式n:n:. .break;break;default: default:. . /switch /switch 语句结束语句结束若表达式等于常量若表达式等于常量1 1,则从这里开始,则从这里开始若表达式等于常量若表达式等于常量2 2,则从这里开始,则从这里开始若表达式等于常量若表达式等于常量n n,则从这里开始,则从这里开始若所有常量都不匹配,则从这里开始若所有常量都不匹配,则从这里开始跳出跳出跳出跳出跳出跳出/模拟模拟ATMATM机菜单系统程序片段(完整程序请参考机菜单系统程序片段(完整程序请参考 ex09_02.cex09_02.c)/执行各个分支执行各个分支 switch( key )switch( key ) case 1:case 1:printfprintf(“(“您执行的是修改密码操作!您执行的是修改密码操作!n“);n“); break;break;/跳出跳出switchswitch语句语句case 2:case 2:printfprintf(“(“您执行的是转帐操作!您执行的是转帐操作!n“);n“); break; break; /跳出跳出switchswitch语句语句 case 3:case 3:printfprintf(“(“您执行的是存款操作!您执行的是存款操作!n“);n“); break; break; /跳出跳出switchswitch语句语句 case 4:case 4:printfprintf(“(“您执行的是取款操作!您执行的是取款操作!n“);n“); break;break;/跳出跳出switchswitch语句语句 case 5:case 5:printfprintf(“(“您执行的查询余额操作!您执行的查询余额操作!n“);n“); break;break;/跳出跳出switchswitch语句语句 case 6:case 6:printfprintf(“(“系统退出!系统退出!n“);n“); break;break;/跳出跳出switchswitch语句语句 default:default: printfprintf(“(“您选择了一个错误的操作!您选择了一个错误的操作!n“);n“); /*/*执行下列程序执行下列程序( (ts09_01.cts09_01.c,输入为,输入为 1 1 时运行结果是时运行结果是_,输入为输入为 2 2 时运行结果是时运行结果是_。*/*/#include#include void main()void main() intint k; k; scanf(“%d“,); switch(kswitch(k) ) case 1:case 1:printf(“%d“,kprintf(“%d“,k+);+); break;break; case 2:case 2:printf(“%d“,kprintf(“%d“,k+);+); case 3:case 3:printf(“%d“,kprintf(“%d“,k+);+); break
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号