第四章Switch分支语句
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
总结
C语言的选择分支结构有 一元分支: if 二元分支 :if - else 嵌套分支: if - else if - else 开关分支:switch
关键字:switch
关键字:case
关键字:break
关键字:default
2.2 执行过程
1) 计算表达式的值,判断与case后哪个常量相等。 2) 若与常量i的值相等,则从语句块i开始执行, 直到遇到第一条break语句结束,或执行完语句 块n+1结束。 3) 若与任何一个常量的值都不相等,直接执行语 句块n+1。
}
当输入5时,将输出:
very good good pass fail error
5 注意事项
Switch 后跟整形, Case后面接常量, Default是可选项,
常量值须互不同。
只能判断值相等, 遇到break才中断。 Break常常很必要, 冒号小心别漏掉。
5 注意事项
第一、 Switch 后跟整形。 switch ( 表达式)中,表达式值只能是整型和字符类型。包括: int,char, unsigned int,short,unsigned char,枚举类型(enum) 。 实型(浮点型)数就不行,如: float a = 0.123; switch(a) //错误!a不是整型或字符类型变量。 { .... }
第五、常量值须互不同。 每一个case的常量值必须互不相同,否则就会出现同一个值有两种 或多种执行方案。
第六、只能判断值相等。 switch并不能代替所有的if..else...语句。这一点你应该知道了, 因为前面已说过,它在对变量做判断时,只能对整型或字符型的变量 做判断。另外,switch也只能做“值是否相等”的判断。你不能在 case里写条件: switch (i) { case (i >= 32 && i<=48) // 错误! case里只能写变 量的可能值,不能写条件。 ... } 在这种情况下,你只能通过 if...else来实现。
第二、 Case后面接常量。 case 之后可以是直接的常量数值,如例中的1、2、3、4,也 可以是一个使用常量计算式,如2+2等,但不能是变量或带有变量的 表达式,如 a * 2等。不能是实型数,如4.1,或2.0 / 2。 switch(formWay) { case 2-1 : //正确 ... case a-2 : //错误 ... case 2.0 : //错误 ... } 另外,在case 与常量值之后,需要一个冒号,请注意不要疏忽。
3.if(表达式1)语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 „„ else if(表达式m) 语句m else 语句n
1.2 if - else if
if (表达式) 语句1 else if (表达式) 语句2 else if (表达式) 语句3 else …
‘+’ 进行加运算。 ‘-’ 进行减运算。
‘*’ 进行乘运算。
‘/’ 进行除运算。
main() {char op; float x,y; printf(“请输入一个数学表达式:"); scanf("%f%c%f",&x,&op,&y); switch (op) { case '+' : printf("=%f\n",x+y); break; case '-' : printf("=%f\n",x-y); break; case '*' : printf("=%f\n",x*y); break; case '/' : if (y!=0.0) printf("=%f\n",x/y); else printf(“除数不能为0\n"); break; default: printf(“错误的运算符\n"); } }
4.典型错误
千万不要遗漏必要的break!
如:
switch(score){ case 5: printf(“very good ”);
case 4: printf(“good ”);
case 3: printf(“pass ”); case 2: printf(“fail ”);
default: printf(“error”);
3
实例讲解
例1 写一个程序完Fra Baidu bibliotek下列功能:
输入 : 一个整数score 输出: 当 score<60 输出 当60<=score <70 输出 当70<=score <90 输出 当90<=score 输出
D C B A
3
实例讲解
分析: score为整型数,利用两个整数相除,结果自动 取整的特性,score和 score /10 有如下对应关 系:
第三、遇到break才中断,Break常常很必要。 break 使得程序在执行完选中的分支后,可以跳出整个switch 语句;如果没有这个break,程序将在继续前进到下一分支,直到遇到 后面的break或者switch完成。
第四、 Default是可选项。 default是可选中,前面我们已经说过它的用处,及如果没有default ,程序在找不到匹配的case分支后,将在switch语句范围内不做什么 事,直接完成switch。
假
多分支选择结构
流程图如左: 先判断表达式1的值 为0就执行下一个判断 非0就执行下面的语句 一直这样做下去 直到得出最后结果
假
缺点: if 与 else 的配对容易混淆
表达式1
真
假
表达式2
真
表达式3
真
语句1
语句2
语句3
语句4
2.1 Switch 多分支结构
switch(表达式) { case 常量1: 语句块1; break; case 常量2: 语句块2; break; ……………. case 常量n: 语句块n; break; default: 语句块n+1; }
Score 90 ~100 70 ~89 Score/10 10,9 7,8
60~69 60~0
6 5,4,3,2,1,0
程序
#include <stdio.h> main( ) { int score; scanf("%d" ,&score); 不同情况执行相同的操作 switch (score /10) { case 10: case 9: printf("%d: A\n", score);break; case 8: case 7: printf("%d: B\n", score);break; case 6: printf("%d: C\n", score);break; default: printf("%d: D\n", score); } }
C语言分支结构-switch
颜明生
学习目标与课程安排 目标:理解掌握C语言switch分支结构。 课程安排 – 背景知识回顾 – switch分支结构介绍 – 注意事项 – 实例讲解 – 典型错误 – 总结
1.1 if语句回顾
1.if (表达式)
语句
2.if (表达式) else
语句1 语句2
第七、各个case和default的出现次序不影响执行结果。但建议遵循 以下准则: a) 按字母或数字顺序排列各条case 语句 b) 把正常情况放在前面,而把异常情况放在后面 c) 按执行频率排列case语句
课堂练习: 编写一个能进行两个操作数加减乘除四则运算的计 数器模拟程序。
输入:两个操作数和运算符 计算:根据运算符确定运算 输出:运算结果