当前课程知识点:程序设计基础 > 第六章 递推与动态规划 > 师生问答 > 师生问答
switch语句看起来是一个很复杂的语句
您能给我们详细的讲一下吗
好 这个switch语句又叫多分支语句
你就把它看成是若干个if语句的组合
然后这个语句执行的时候呢
先对这个()里的表达式求值
然后在看下边有很多case
case里的值如果那一个值就是这个表达式的值
那我们就可以进行这个case后的语句
是这样一个基本的东西
当然了我们还看到说我们的这个
case后边一般有break这个语句
因为我们执行case语句呢它可能有很多句
然后执行到某个地方说
这个case对应的语句我们执行完了
再后面的语句是另一个case的值对应的语句
那中间我们就不能再继续往下执行了
所以呢我们就要跳过去
跳到这个switch语句的后面
这时候我们就要这个break
然后呢大部分情况下其实就是
因为我们switch case以后
都是对不同值有不同的这种相应的处理语句的
所以对于一般来讲我们都会需要这个break语句
但是呢 初学者的差别有的时候吧
就很关注这个写程序需要什么
有的时候就会忘了这个break
那个时候发生错误还不太容易检查出来
所以我们这也要提醒同学们说
用了switch语句的话呢要记得
在case后面 要不要用这个break
另外你就是你还看到说
在所以的case后面我们有时候会用一个default的语句
就是默认值嘛
它有点像if语句里的那个else那样
就是凡是我前面那个case没有列出来的值
那我就default就能匹配
并且呢我后面也可以有相应的操作
是这样一个情况
那我觉得switch语句挺好的
那以后碰到需要同时使用多个if语句的情况
是不是可以改用switch语句来替代它呢
是这样的switch语句确实比一组
if语句看起来要简洁的多
然后看起来条理也很清楚
但是呢他没有那么一组if语句用起来那么灵活
主要就是因为switch语句后面那个语言括号的求值
它必须是一个整数
就是case后面值也必须是一个整数
那它只能用整数或者类似整数的
我们说字符的类型或者我们程序里用到的枚举的类型
那比如说我们真的是一个字符序列的话
比如说我们字符序列可能等于清华
也有可能等于计算机
我这个时候就不能用case
是清华case是计算机这种写法
因为它不是一个整数类型
那这种情况下我们就是只能用这种嵌套的if
或者多个if语句来表达
那就是在那个最长公共子序列中
还看到了int m=strlen(a)
这么一个语句 那么这个
strlen(a)看起来像是一个函数调用
它有什么功能呢
对 这其实确实是一个函数调用
你看在这个程序里头呢
我们用数组来存储这个序列中的每一个字符
那我们把这种数组叫做字符数组
然后存在里面这个字符序列呢
我们有的时候也称为字符串
用计算机来处理文字的时候经常要用到
这种字符数组 字符串
所以呢C C++语言就提供了函数专门来处理这些字符串的
那么其中有很多函数是常用的
就比如说这里的strlen
它实际上就是string length的缩写嘛
然后这个函数就可以返回这个字符序列的一个长度
我们后面课程里头还会介绍字符串的一些细节
以及更多的一些常用的函数
那么我们后面的课程讲到的时候呢
我们再来更仔细的学习就行了
好的 谢谢老师
-1.1 基础知识
-1.2 买菜问题
-1.3 数学运算
-1.4 补充说明
-1.5 总结
--1.5 总结
-程设论道
--程设论道
-师生问答
-第一章 编程初步--语法自测
-2.1 关于超级计算器的几点思考
-2.2 电子秤模拟 — 背景介绍及需求分析
-2.3 电子秤模拟 — 代码实现
-2.4 变量定义与变量类型
-2.5 猜数游戏与数据表示
-2.6 关于变量的讨论
--公告
-2.7 变量体现的计算思维
-程设论道
--程设论道
-师生问答
--师生问答
-第二章 变量与代数思维--语法自测
-3.1 谁做的好事——语义表示
-3.2 谁做的好事——真假检查
-3.3 谁做的好事——循环枚举
-3.4 谁是嫌疑犯——多重循环枚举
-3.5 谁是嫌疑犯——破案线索表示
-3.6 谁是嫌疑犯——用二进制枚举
-程设论道
--程设论道一
--程设论道二
--程设论道三
-师生问答
-第三章 逻辑推理与枚举解题--语法自测
-4.1 插花游戏
-4.2 筛法
-4.3 线性查找
-4.4 折半查找
--4.4.1 提问
-4.5 排序问题
-4.6 总结
--4.6.1 总结
-程设论道
--程设论道二:筛法
-师生问答
-第四章 筛法与查找--语法自测
-5.1 阶乘
-5.2 排序
-5.3 矩阵填充
-5.4 分书与八皇后
-5.5 青蛙过河
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答一
--师生问答二
-第五章 分治思想与递归--语法自测
-6.1 兔子数列问题
-6.2 分鱼问题
-6.3 橱窗的插花问题
-6.4 最长公共子序列问题
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第六章 递推与动态规划--语法自测
-7.1 统计记录总数
-7.2 统计活跃用户数
-7.3 统计在线时长
--7.3.2 结构
-7.4 总结
--7.4.1 总结
-程设论道
--程设论道
-师生问答
--师生问答
-第七章 文本数据处理--语法自测
-8.1 将数据组织成链表
-8.2 提高链表访问效率 —— 哈希链表
-8.3 以二进制文件存储链表
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第八章 非文本数据处理--语法自测
-9.1 自动售卖程序
-9.2 配制水果信息
-9.3 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测