本帖最后由 chunhuayun 于 2015-9-22 11:50 编辑
分支语句结构 switch
1)格式: switch(表达式)//必须是整数
{
case 常量表达式1:语句1;
case 常量表达式2:语句2;
case 常量表达式3:语句4;
default:语句5;
}
原理:如果括号内的表达式的结果等于对应的常量表达式,则执行对应的语句块。如果没有对应的,则执行default
2)举例:
- int a= 2;
- switch (a) {
- case 1:
- printf("A");break;
- case 2:
- printf("B");break;
- case 3:
- printf("C");break;
- case 4:
- printf("D");break;
- default:
- break;
- }
复制代码
结果:打印B
3)case穿透
a.指,某个case语句执行完成后并没有结束,而直接向下执行其他的case语句
b.如何防止case穿透?
在每个case语句结束后,加上一个break,其作用是结束switch语句块
4)if 语句转换成 switch语句
例子(if例子参见2.9)
- int score = 70;
- score = score / 10;
- switch (score) {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- printf("E");break;
- case 6:
- printf("D");break;
- case 7:
- printf("C");break;
- case 8:
- printf("B");break;
- case 9:
- case 10:
- printf("A");break;
- default:
- break;
- }
复制代码
5)if语句与switch语句的选择
a. if语句跟switch语句之间完全可以互相转换
b. 分支比较多而且无法穷尽或进行大量的列举时,最好用if
c.如果分支数量不是那么多,但是使用if代码量比较大的时候,可以选用switch
6)switch语句使用注意事项
a.表达式的类型(switch后括号内的内容)必须是整型或者是可以转换成整型的值。 可以
放一个整型的变量(int a = 1; switch(a))或者常量(2),
也可以放一个返回值是整型的表达式(如 switch(4+5)),或者可以转换为整型的表达式switch('a' + 'a')
b.case 语句可以有多行语句,可以加括号,也可以不加大括号
例如
- case 1: a = 1;
- b = 2;
- c = 3;
- break;
复制代码
c.break语句是可选的
7)case 后值的要求
a.可以是常量表达式 如 3+4
b.可以使常量 如10
c.case 语句格式 case 常量表达式://空格和冒号必须有
d.default语句的位置可以任意
e.case语句的穿透问题,如果没有break的话,会向下穿透
f.如果default放在switch语句的最后可以不加break,否则必须加break
g.case 语句后,默认的第一句话,不能是定义变量.如果非要在第一句定义,那要加个大括号,把case后的语句块包含在内
8)练习,实现一个计算器
- int a, b, result = 0;
- char op;//操作符,
- printf("input the expression:");
- scanf("%d%c%d",&a,&op,&b);//中间不要输入空格了
- switch (op) {
- case '+':
- result = a + b;
- break;
- case '-':
- result = a - b;
- break;
- case '*':
- result = a * b;
- break;
- default:
- result = a / b;
- break;
- }
- printf("result : %d", result);
复制代码
|
|