当前位置:文档之家› C语言-09switch-case 多分支开路语句

C语言-09switch-case 多分支开路语句


//模拟ATM机菜单系统程序片段(完整程序请参考 ex09_01.c) //执行各个分支 switch( key ) { case 1: printf("您执行的是修改密码操作!\n");
case 2:
printf("您执行的是转帐操作!\n"); case 3: printf("您执行的是存款操作!\n");
//程序片段:输入月份,输出相应的天数(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; }
switch(整型表达式) { case 常量1: 若表达式等于常量1,则从这里开始 . . [break;] case 常量2: 若表达式等于常量2,则从这里开始 . . [break;] . . case 常量n: . [break;] [default:] . 若所有常量都不匹配,则从这里开始 } //switch 语句结束 若表达式等于常量n,则从这里开始
/* */
程序片段:将学生分数成绩转换成相应的等级成绩 完全程序请参考 :ex09_06.c
if( score>100 || score<0 ) printf("输入成绩错误!\n"); else switch( score/10 ) //score/10对百分制成绩进行折算 { case 10: case 9: printf("A 等\n"); break; case 8: printf("B 等\n"); break; case 7: printf("C 等\n"); break; case 6: printf("D 等\n"); break; default: printf("A 等\n"); }
§9.8 switch 的应用
例子:如表所示是学生的等级成绩情况。
表 学生的等级成绩
分数成绩 大于或等于90 小于90但大于或等于80 小于80但大于或等于70 等级成绩 A B C
小于70但大于或等于60
小于60
D
E
编写一个C程序,接受学生的分数,将分数成绩转换成相 应的等级成绩,并显示等级成您执行的是取款操作!\n"); case 5: printf("您执行的查询余额操作!\n");
case 6:
printf("系统退出!\n"); default: printf("您选择了一个错误的操作!\n");
}
§10.6 break 关键字
一旦通过 switch 语句确定了入口点,所有进一步的 case 赋值都会被忽略,并且,除非遇到关键字 break,否则 执行将一直持续到复合语句结束,这就是采用 break 语句的 原因,它将标识特定 case 的结束,并使得立即退出 switch 语句,因此,就像关键字 case 标识复合语句中可以存在的起 始点一样,break 语句将确定终止点。如果省略了 break 语 句,那么匹配的 case 值后的所有情况(包括 default 情 况)都会被执行。
switch(整型表达式) { case 常量表达式1: . 若表达式等于常量1,则从这里开始 . [break;] 跳出 case 常量表达式2: . 若表达式等于常量2,则从这里开始 . [break;] 跳出 . . case 常量表达式n: 若表达式等于常量n,则从这里开始 . [break;] 跳出 [default:] 若所有常量都不匹配,则从这里开始 . } //switch 语句结束


375美元,加上销售额的16% 350美元,加上销售额的14% 325美元,加上销售额的12% 300美元,加上销售额的 9% 250美元,加上销售额的 5% 200美元,加上销售额的 3%
编写一个C程序,接受销售人员的月销售额,计算其月收入
§作业
例子:根据下表计算一下销售人员的月收入 表 销售人员的月收入
月销售额
大于或等于50,000美元 小于50,000美元,但大于或等于40,000美元 小于40,000美元,但大于或等于30,000美元 小于30,000美元,但大于或等于20,000美元 小于20,000美元,但大于或等于10,000美元 小于10,000美元
C语言程序设计
第九课 switch-case 多分支开路语句
§9.1 switch-case 语句
在编写应用程序时,在必须从很多可以的选项中选择一组指 令的地方,可以使用 if-else 链。在将一个整数表达式的值 与特定的值进行比较时,可以使用 switch-case 语句来替代 if-else 链。switch-case 语句的常规格式如下: switch(整型表达式) { case 常量1: 语句系列1; [break;] case 常量2: 语句系列2; [break;] . . case 常量n: 语句系列n; [break;] [default:] [语句 n+1;] }
/* 执行下列程序(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!\n"); } }
/* */
程序片段:将学生分数成绩转换成相应的等级成绩 完全程序请参考 :ex09_05.c
switch(score/10) //score/10对百分制成绩进行折算 { case 10: case 9: printf("A 等\n"); break; case 8: printf("B 等\n"); break; case 7: printf("C 等\n"); break; case 6: printf("D 等\n"); break; default: printf(“E 等\n"); }
printf("您执行的是修改密码操作!\n"); break; //跳出switch语句 printf("您执行的是转帐操作!\n"); break; //跳出switch语句 printf("您执行的是存款操作!\n"); break; //跳出switch语句 printf("您执行的是取款操作!\n"); break; //跳出switch语句 printf("您执行的查询余额操作!\n"); break; //跳出switch语句 printf("系统退出!\n"); break; //跳出switch语句
§9.5 default 关键字
在一个 switch 语句中可以采用任意顺序来包含任意数目 的 case 标签。但是,如果表达式的值与所有 case 值都不 匹配,那么将不执行任何语句,除非遇到关键字 default。关 键字 default 是可选的,并且它与 if-else 链中的最后一 个 else 的作用相同。
§9.7 多个 case 值引用同一组语句
在编写 switch 语句时,可以使用多个 case 值来引用 同一组语句;default标签是可选的。
//程序片段:输入月份,输出相应的天数(if-else链) //完整程序请参考 ex09_03.c
//求相应月份的天数 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;
开始
输出菜单
1、修改密码 2、转帐 3、存款 4、取款 5、查询余额 6、退出
提示用户输入选择 接收用户的输入 (key)
key
1
2 转帐 存款
3
4
5
6 查询余额 退出
其他
修改密码
取款
输出出错
输出“谢谢您使用本 银行的服务!”
结束
//模拟ATM机菜单系统程序片段(完整程序请参考 ex09_02.c) //执行各个分支 switch( key ) { case 1: case 2: case 3: case 4: case 5: case 6: default: printf("您选择了一个错误的操作!\n"); }
§9.3 switchcase 执 行流程图
计算表达式的值
常量表达式1
语句系列 1
break
常量表达式2
语句系列 2
break
相关主题