C语言switch
§9.8 switch 的应用
例子:如表所示是学生的等级成绩情况。 例子:如表所示是学生的等级成绩情况。 表 学生的等级成绩 分数成绩 大于或等于90 大于或等于90 小于90但大于或等于 小于90但大于或等于80 但大于或等于80 小于80但大于或等于 小于80但大于或等于70 但大于或等于70 小于70但大于或等于 小于70但大于或等于60 但大于或等于60 小于60 小于60 等级成绩 A B C D E
§9.5 default 关键字
在一个 switch 语句中可以采用任意顺序来包含任意数目 标签。但是, 的 case 标签。但是,如果表达式的值与所有 case 值都不 匹配,那么将不执行任何语句, default。 匹配,那么将不执行任何语句,除非遇到关键字 default。关 是可选的, if键字 default 是可选的,并且它与 if-else 链中的最后一 的作用相同。 个 else 的作用相同。
§10.6 break 关键字 10.
一旦通过 switch 语句确定了入口点,所有进一步的 语句确定了入口点, case 赋值都会被忽略,并且,除非遇到关键字 break,否则 赋值都会被忽略,并且, break, 执行将一直持续到复合语句结束, 执行将一直持续到复合语句结束,这就是采用 break 语句的 原因, 的结束, 原因,它将标识特定 case 的结束,并使得立即退出 switch 语句,因此, 语句,因此,就像关键字 case 标识复合语句中可以存在的起 始点一样, 语句将确定终止点。 始点一样,break 语句将确定终止点。如果省略了 break 语 值后的所有情况( 句,那么匹配的 case 值后的所有情况(包括 default 情 都会被执行。 况)都会被执行。
§9.3 switchswitchcase 执 行流程图
1
1
break
2
2
break
3பைடு நூலகம்
3
break
n
n
break
default
break
§9.4 switch 和 case 关键字
在 switch-case 语句中有4个新的关键字:switch、 switch语句中有4个新的关键字:switch、 case、 case、default 和 break,下面分别给予介绍。 break,下面分别给予介绍。 swithc语句的开始。 关键字 switch 标识 swithc-case 语句的开始。该关 键字后的圆括号内的整型表达式将得到赋值, 键字后的圆括号内的整型表达式将得到赋值,然后将该表达式 的结果与复合语句内包含的各种可以的值依次进行比较。 依次进行比较 的结果与复合语句内包含的各种可以的值依次进行比较。 swith 语句中的表达式必须被指定为整数结果值,否则将会出 语句中的表达式必须被指定为整数结果值, 现编译错误。在 switch-case 语句内,关键字 case 被用 现编译错误。 switch语句内, 表达式的值进行比较的每个值。 来标识或标记与 switch 表达式的值进行比较的每个值。 switch 表达式的值与这些 case 值依次进行比较,直到 值依次进行比较, 找到匹配的值。当找到匹配值时, 找到匹配的值。当找到匹配值时,执行将从紧跟着该匹配值的 语句开始,因此,如下所示, 语句开始,因此,如下所示,表达式的值决定了在 switch 语 句中执行实际开始的位置: 句中执行实际开始的位置:
§9.2 switch-case 常规书写格式 switchswitch(整型表达式) switch(整型表达式) 复合语句开始 { 以冒号结束 缩进 case 常量1: 常量1: 再次缩进 语句系列1; 语句系列1; [break;] break;] 以冒号结束 case 常量2: 常量2: 语句系列2; 语句系列2; [break;] break;] . . 以冒号结束 case 常量n: 常量n: 语句系列n; 语句系列n; break;] [break;] 缩进 [default:] default:] 以冒号结束 [语句 n+1;] n+1; } switch和复合语句结束 switch和复合语句结束
printf("您执行的是修改密码操作!\n"); printf("您执行的是修改密码操作! 您执行的是修改密码操作 //跳出switch语句 //跳出 跳出switch语句 break; printf("您执行的是转帐操作!\n"); printf("您执行的是转帐操作 您执行的是转帐操作! break; //跳出switch语句 //跳出 跳出switch语句 printf("您执行的是存款操作 printf("您执行的是存款操作!\n"); 您执行的是存款操作! break; //跳出switch语句 //跳出 跳出switch语句 printf("您执行的是取款操作!\n"); printf("您执行的是取款操作 您执行的是取款操作! break; //跳出switch语句 //跳出 跳出switch语句 printf("您执行的查询余额操作!\n"); printf("您执行的查询余额操作 您执行的查询余额操作! break; //跳出switch语句 //跳出 跳出switch语句 printf("系统退出!\n"); printf("系统退出! 系统退出 break; //跳出switch语句 //跳出 跳出switch语句
//程序片段:输入月份,输出相应的天数(switch 结构) //程序片段 输入月份,输出相应的天数( 程序片段: 结构) //完整程序请参考 ex09_04.c //完整程序请参考
//求相应月份的天数 //求相应月份的天数 switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 2: days = 28; break; case 4: case 6: case 9: case 11: days = 31; break; default: days= 0; }
§9.7 多个 case 值引用同一组语句
在编写 switch 语句时,可以使用多个 case 值来引用 语句时, 同一组语句;default标签是可选的 标签是可选的。 同一组语句;default标签是可选的。
//程序片段:输入月份,输出相应的天数(if-else链) //程序片段 输入月份,输出相应的天数(if-else链 程序片段: //完整程序请参考 ex09_03.c //完整程序请参考
C语言程序设计
第九课 switch-case 多分支开路语句 switch-
§9.1 switch-case 语句 switch在编写应用程序时, 在编写应用程序时,在必须从很多可以的选项中选择一组指 令的地方, if令的地方,可以使用 if-else 链。在将一个整数表达式的值 与特定的值进行比较时, switch与特定的值进行比较时,可以使用 switch-case 语句来替代 if-else 链。switch-case 语句的常规格式如下: ifswitch语句的常规格式如下: switch(整型表达式 switch(整型表达式) 整型表达式) { case 常量1: 语句系列1; [break;] 常量1: 语句系列1; case 常量2: 语句系列2; [break;] 常量2: 语句系列2; . . case 常量n: 语句系列n; [break;] 常量n: 语句系列n; [default:] [语句 n+1;] n+1; }
//求相应月份的天数 //求相应月份的天数 if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) days = 31; else if(month==2) days = 28; else if(month==4 || month==6 || month==9 || month==11) days = 30; else days = 0;
//模拟ATM机菜单系统程序片段(完整程序请参考 ex09_01.c) //模拟 模拟ATM机菜单系统程序片段 机菜单系统程序片段( ex09_01.c) //执行各个分支 //执行各个分支 switch( key ) { case 1: printf("您执行的是修改密码操作! printf("您执行的是修改密码操作!\n"); 您执行的是修改密码操作 case 2: printf("您执行的是转帐操作! printf("您执行的是转帐操作!\n"); 您执行的是转帐操作 case 3: printf("您执行的是存款操作! printf("您执行的是存款操作!\n"); 您执行的是存款操作 case 4: printf("您执行的是取款操作! printf("您执行的是取款操作!\n"); 您执行的是取款操作 case 5: printf("您执行的查询余额操作! printf("您执行的查询余额操作!\n"); 您执行的查询余额操作 case 6: printf("系统退出! printf("系统退出!\n"); 系统退出 default: printf("您选择了一个错误的操作! printf("您选择了一个错误的操作!\n"); 您选择了一个错误的操作 }
/* 执行下列程序(ts09_01.c, 执行下列程序(ts09_01.c,输入为 1 时运行结果是_____, 时运行结果是_____, 时运行结果是_____。 输入为 2 时运行结果是_____。*/ #include <stdio.h> void main() { int k; scanf("%d",&k); switch(k) { case 1: printf("%d",k++); break; case 2: printf("%d",k++); case 3: printf("%d",k++); break; case 4: printf("%d",k++); default:printf("Full!\ default:printf("Full!\n"); } }