# 【知识精讲】多路顺序结构
## Part1
在学习了分支结构的 `if... else...` 及其使用之后,让我们学习一种新的语句——多路判定语句。它的最常见形式如下:
~~~
switch (a) {
case 1: [代码块1];
case 2: [代码块2];
case 3: [代码块3];
}
~~~
这里的 `a` 是一个表达式,`switch` 会用这个表达式的值与 自上而下的每一个 `case` 后的值进行比对。如果表达式值与某个 `case` 后的值相等,这个 `case` 之后的所有代码块会依次被执行。
## Part2
[![11_switch 0.png](https://res.jisuanke.com/img/upload/20160807/df41660cd2e5e0eeae31f285e0dfa1fefc9c6e32.png)](https://res.jisuanke.com/img/upload/20160807/df41660cd2e5e0eeae31f285e0dfa1fefc9c6e32.png)
对于这样的情况,如果 `a` 取值为 `1`,那么 \[代码块1\]、\[代码块2\]、 \[代码块3\]…… 会被依次执行。而如果 `a` 取值为 `3`,那么 \[代码块3\]…… 会被依次执行。
## Part3
可能你会好奇,如果 `a` 的取值与任何一个 `case` 中的值都不相等会发生什么。正常情况下,什么都不会发生。如果我们希望在所有 `case` 都不满足的时候,有某些语句可以被执行。我们可以在所有的 `case` 后加上 `default`。形成如下的一种情况。
[![11_switch 1.png](https://res.jisuanke.com/img/upload/20160807/699ae2aa828bb4b8d4986a21057664872e2ebed6.png)](https://res.jisuanke.com/img/upload/20160807/699ae2aa828bb4b8d4986a21057664872e2ebed6.png)
## Part4
如果我们希望某一个语句块被执行后,不再继续顺序执行接下来的语句块,而是跳出 `switch` 结构,我们可以在相应的语句块后使用 `break;`。
[![11_switch 2.png](https://res.jisuanke.com/img/upload/20160807/1e6576b0f10e8bd2eb356d8bc32e2c89e22f2681.png)](https://res.jisuanke.com/img/upload/20160807/1e6576b0f10e8bd2eb356d8bc32e2c89e22f2681.png)
例如,对于上面这样一个结构,如果第一个 `case` 的值与 `a` 的取值相同,\[代码块1\] 会被执行,但是由于 `break` 的影响,之后的语句块将不会被执行。
## Part5
如果我们在每一个 `case` 之后的语句块执行后,都加上 `break;`,`switch` 这种顺序结构将向下面这幅图一样,在某种程度上扮演起分支的作用。
[![11_switch 3.png](https://res.jisuanke.com/img/upload/20160807/a86de0e00b727d9d68113745b59a51e363fdd683.png)](https://res.jisuanke.com/img/upload/20160807/a86de0e00b727d9d68113745b59a51e363fdd683.png)
- 教材介绍
- 《编程初学入门常识》
- 什么是程序语言
- 【知识精讲】编程与编程语言
- 【选择测试】编程语言分类
- 【知识精讲】高级语言分类
- 【选择测试】编译与解释
- 【选择测试】程序员笑话-Java
- 熟悉键盘上用于编程的键位
- 【知识精讲】认识你的键盘
- 【知识精讲】中文和英文字符
- 【匹配测试】识别中英文符号
- 【选择测试】中英文符号的影响
- 【伴随编程】不要使用中文引号
- 【伴随编程】不要使用中文分号
- 【伴随编程】正确地输入符号
- 【选择测试】找出程序中的错误
- 初始工程师思维
- 【知识精讲】二进制思想
- 【选择测试】程序员笑话-凑整
- 【知识精讲】闭合的逻辑
- 【选择测试】程序员笑话-条件
- 程序员职业与生活
- 【知识精讲】程序员的发展方向
- 【知识精讲】程序员的装备
- 【知识精讲】程序员的健康
- 【选择测试】做一名健康的程序员
- 《C++程序设计》
- 前言
- 【知识精讲】编程与计算机科学
- 【知识精讲】编程与软件工程
- 【知识精讲】如何学习编程
- 你好C++
- 【知识精讲】你好,C++
- 【知识精讲】C++程序是如何开发的
- 【知识精讲】成为一名Power User
- 【伴随编程】让我们一起说你好
- 【知识精讲】你的第一个C++语言程序
- 【伴随命令】编译、运行你的程序
- 【伴随编程】将变量流式输出
- 【选择测试】变量的作用域
- 【知识精讲】变量与数据类型
- 【匹配测试】C++语言的入门概念
- 【知识精讲】在程序中学会换行
- 【选择测试】正确地换行
- 简单数学运算
- 【知识精讲】重新认识基本运算
- 【选择测试】运算符的理解
- 【伴随编程】做一下简单的运算
- 【伴随编程】a 的 n 次方
- 【知识精讲】数学函数
- 【伴随编程】让C++语言变成计算器
- 【伴随编程】计算球的体积
- 【匹配测试】数学世界知多少
- 【知识精讲】在程序中添加注释
- 【选择测试】正确地写注释
- 从伴随输入到变量地址
- 【伴随编程】 一个数字复读机器
- 【选择测试】理解标准输入输出
- 【伴随编程】一个加法计算器
- 【程序设计】A+B+C问题
- 【伴随编程】简单的I/O格式控制
- 【知识精讲】地址与取地址符
- 【伴随编程】看看我们的地址
- 习题一:面积与周长
- 【程序设计】矩形面积与周长
- 【程序设计】三角形面积与周长
- 【程序设计】圆形面积与周长
- 程序中的是与非
- 【知识精讲】是非的表示与关系运算
- 【伴随编程】验一验关系运算式
- 【选择测试】关系运算式求值
- 【知识精讲】如果的意义
- 【伴随编程】分段函数求值
- 【知识精讲】如果之后的如果
- 【伴随编程】五则运算器
- 【选择测试】分支的嵌套
- 【伴随编程】问号表达式
- 【知识精讲】是非之间的逻辑组合
- 【伴随编程】判断闰年
- 【程序设计】日期合法性
- 【知识精讲】多路顺序结构
- 【知识精讲】在程序中学会缩进
- 【选择测试】正确的缩进
- C++程序中的苦力
- 【知识精讲】使用循环结构
- 【选择测试】对比两种循环
- 【伴随编程】使用while循环
- 【填空测试】理解循环结构
- 【知识精讲】自减和自增运算符
- 【伴随编程】使用自增运算符
- 【知识精讲】for循环
- 【选择测试】for循环的使用
- 【程序设计】一大波好玩儿的程序
- 《代码能力快速提升》
- 《基础数据结构》
- 《搜索入门》
- 《动态规划基础》
- 《数论和基础数学》
- 《图和数基础》