当前课程知识点:C语言程序设计(上) > 选择结构的程序设计 > 3.4 多分支问题的C程序设计 > 3.4.1 switch语句表达式
我们上一次跟大家提到了
多路选择的问题
多路选择里边
其实时常有这样的一种需求
在多条路径可能都不满足我的要求
也就说 多条路径我一个都不选
我可不可以往下继续走
前边的if else的结果是不可以的
必须选一条
那么遇到这样的应用怎么办呢
C给了我们一个新的语句
switch
专门解决这类问题
就是说 开关switch我们知道开关
那就是说 这些开关我可以都不打开
我试请继续往前走
那他是什么样的一个结构呢
这样子 我们这里边讨论
这样的问题应用在哪里呢
应用在比如说
多数在一些
分数的分类统计
字符的分类统计
是一些分类 需要分类的问题上
当然还有一些其他的应用
我们现在能够说大家便于理解的是
一些分类问题
我们看 在这里边
它实现的是什么样的一个流程呢
这样子 就是说 进了这个结构
这个整个是 这个switch的结构
整个这一大块是switch的结构
那么上面是一个表达式
他先计算这个表达式的值
这是一个计算 不是判断是计算
计算出来表达式的值
然后下边依次判断
怎么判断呢
表达式的值
和我给的这里边的这个常量相等吗
如果是相等的话
你就走它后边的 做它后边的事情
做完了 看看这有没有break
如果有break
break在哪里了呢
break到这个结构的外边
如果没有break 怎么办呢
没有break就
顺着做下一个判断
这样大家一定会觉的很奇怪
你这个判断都做了
符合了 满足了这个条件
并执行了这些语句
如果没有break
你反而接着在判断下边的
那你下边岂不是
都不满足条件了吗你为什么还要判断呢
switch这正好不是这样子
它是什么样子呢
是说 我满足了这个条件
做了这件事情
如果没有break
我们现在的前提一定大家要
假定我们这块没有这个语句
break
如果没有break
它执行了这它自动往下走
走到下边的时候 还有
它最奇怪的是它不判断
它直接去执行
这一些语句
如果这些语句执行完了这仍然没有break
它接着往下执行这些语句
也就是说 你在这些分支处
如果没有break的话
它执行完了 第一个
当然是第一个条件满足
如果第一个条件不满足 它不会去执行它
不满足它继续往下走
说这个满足吗
就是说任何一个入口
它进了入口处它是要判断的
我到底是从这条路径入口呢
还是从这条路径入口
到底从哪条路径入口
在于这个计算的这个值
和这里边哪个相等
这个值和谁相等
就从谁那入口
一旦入口进来
程序的走向 是靠break控制的
有break 一定是说
执行完了其它的我就不执行了
我就到了这个结构的外边
如果没有break
是说执行完了 你还可以继续执行下边
大家一定觉得很奇怪
为什么会有这样的需求呢
有
很多地方有这样的需求
说 你从一个入口进来
连续的这一片
你都要执行
只是入口不确定
入口不确定
入口是根据你计算的结果去判断的
那我们来看 实现它是靠什么样的句子呢
switch 这是个表达式
这个表达式一定得到的是一个
算数量 是一个结果
那当然这个结果 是一 还是零 还是非零
你可以认为
它是数值的 你也可以认为它是逻辑的
只是 后边的case后边的东西全部都是
常量
数值型的或者字符型的常量
所以呢 你上边的表达式的值
是根据这些常量去比较的
那么 跟我们刚才说的一样
是从这入口吗 满足这个条件吗
如果 等于这个常量
得做这些句子
做完了 break
这有break 那就出来
到了这个下边
无论这里边走哪里入口
只要有break他都会到这个下面
-1.1 计算机的问题求解方法
--讨论题:数学模型
-1.1 计算机的问题求解方法--作业
-1.2 C语言与C程序
--讨论题:运算符
-1.3 C语言处理系统与程序调试运行
--例程
-1.4 程序中的人机交互
--例程
--作业讨论区
-2.1 算术运算的C程序实现
--算术混合运算.c
-2.1 算术运算的C程序实现--作业
-2.2 关系运算的C程序实现
--bukao.c
--字符比较.c
--讨论题:比较大小
-2.2 关系运算的C程序实现--作业
-第二周作业--作业
-2.3 逻辑运算的C程序实现
--计算结合性
--闰年.c
--自动购票问题.c
-2.3 逻辑运算的C程序实现--作业
-2.4 位运算的C程序实现
--讨论题:位运算
-2.5 几种很个别的运算
--讨论题
--讨论题
-2.5 几种很个别的运算--作业
-2.6 混合运算及数据类型转换
--讨论题:数据类型
-2.7 顺序结构程序实例
--Video
--三角形面积.c
--讨论题:工业产值
-2.7 顺序结构程序实例--作业
-3.1 程序中的路径选择实现
--打印学生成绩.c
--一元二次方程.c
-3.1 程序中的路径选择实现--作业
-3.2 路径中的再选择——嵌套判断
--例程
--讨论题:程序改错
-3.2 路径中的再选择——嵌套判断--作业
-3.3 复杂判断问题的C程序设计
--3.3 多级选择
--银行存款.c
--讨论题:多级选择
-3.4 多分支问题的C程序设计
--加减乘除运算.c
-3.4 多分支问题的C程序设计--作业
-3.5 GOTO的适当使用
-3.6 选择结构的程序实例
--3.6 程序展示
--计算第几天.c
--讨论题:输出奇数
--讨论题:计算税金
-3.6 选择结构的程序实例--作业
-第四周作业--作业
-4.1 需要重复执行的程序
--求和.c
--打印学生成绩.c
--统计录入速度.c
--求平均数.c
-4.1 需要重复执行的程序--作业
-4.2 至少要执行一次的循环
--n的阶乘.c
--字符分类统计.c
-4.2 至少要执行一次的循环--作业
-4.3 已知循环次数用for语句
--求和问题.c
--数列求和.c
--讨论题:循环语句
-4.3 已知循环次数用for语句--作业
-4.4 循环控制——简单循环应用
--水仙花数.c
--讨论题:死循环
--讨论题:猜数字
-循环结构的程序设计(一)--4.4 循环控制——简单循环应用
-4.5 循环的嵌套
--讨论题:程序运行
-4.5 循环的嵌套--作业
-4.6 break与continue
--最大素数.c
-4.6 break与continue--作业
-4.7 循环的综合应用
--数的排列组合.c
--鸡兔同笼.c
--打印空心字符.c
--讨论题:打印图形
--讨论题:计算闰年
-第六周作业
-第六周作业--作业
-5.1 同类有序数据处理问题
-5.2 一维数组的定义和引用
--数组定义.c
--数组初始化.c
--反向输出.c
--讨论题:对称数
-5.2 一维数组的定义和引用--作业
-5.3 一维字符串数组
--讨论题:编程
-5.4 字符串处理函数
--字符串反向.c
--字符串函数
-5.5 二维数组的定义与使用
-5.6 二维数组的输入输出
-5.6 二维数组的输入输出--作业
-5.7 二维数组的应用
--转置矩阵.c
--讨论题:修改程序
-5.8 二维字符数组
--5.8 单词排序
--单词排序.c
-5.8 二维字符数组--作业
-5.9 数组综合应用
--统计成绩.c
--统计字符次数.c
--讨论题:洗牌
-本期课程结束语
--end
-第八周编程作业
-《C语言程序设计(上)》期末复习参考
--html
-《C语言程序设计(上)》期末复习参考答案
--html