当前课程知识点:高级语言程序设计 >  选择结构程序设计 >  3.4 用switch语句实现选择结构 >  用switch语句实现选择结构

返回《高级语言程序设计》慕课在线视频课程列表

用switch语句实现选择结构在线视频

用switch语句实现选择结构

下一节: 为什么要用循环结构解决问题

返回《高级语言程序设计》慕课在线视频列表

用switch语句实现选择结构课程教案、知识点、字幕

同学们好 现在我们一起来学习

用switch语句实现选择结构

在这一节里

我们要给大家介绍switch语句的语法

用switch语句编程解决一个问题

以及switch语句和if语句的区别

我们在前面提过

switch语句它是一个

实现多分支的选择结构的语句

下面我们通过一个例子和大家一起来学习

这个例子是之前我们已经解决过的

就是输入一个学生的数学成绩

判断这个成绩为A、B、C、D哪一个等级

之前我们用嵌套的多分支if语句来处理

大家看这个程序呢先输入score变量的值

然后通过两层嵌套的这个if-else语句

来判断score的值所在的范围

最终得到这个成绩的等级

其实在这个程序当中

我们用嵌套的if语句书写起来

比单纯的if语句要更加的简洁

但是大家不知道有没有注意到

这个嵌套的if语句

其实它也有一些不尽人意的地方

它的层次比较多 程序比较冗长

而且可读性比较低 特别是可读性比较低

不那么好理解

所以在这个程序运行的过程中

如果我们通过这个条件

来判断score所处的层次

我们既要判断外层的这个if条件

还要判断内层的if条件

不仅读代码理解比较麻烦

而且书写代码的时候我们还要思考

我们如何确定嵌套的if语句的

内层外层条件的分界值

所以这些都给我们带来了一点点的麻烦

其实C语言呢还提供了一个switch语句

用来直接处理多分支的选择结构

这个语句呢它的可读性比较强一些

那么switch语句怎么样来处理前面的例子的呢

它又如何来提高这个程序的可读性的呢

下面我们来看一下这个程序

程序中用switch语句来代替嵌套的if语句

那这个switch语句的形式是这样的

switch后面有一对圆括号

它里面写着里写着score除以10

我们都知道score和10都是整型数据

那么这个score除以10取得的商

它也应该是一个整型的数据

那么取得的商怎么办呢

这个商要和switch后面

大括号里面的case后面的这个常量去比较

如果score除以10的商

和某一个case后面的常量去匹配相等了

那么就会执行这个case后面的语句

很显然 通过score除以10的商

我们是可以确定score值所在的范围的

这个很有意思

因为score的值它是可以取0到100

这个区间的任何一个整数

例如 score的值为97

那么它就与case 9匹配

score的值为65 它就与case 6匹配

score的值为58 则与default匹配

这里大家注意如果switch后面的表达式

与下面的所有的case都不匹配

它就与default匹配

那么在这样一个switch语句当中

我们还可以看到每一条case后面的这个常量

后面的语句要加上一个break

意思就是说

当我们通过switch表达式

和case后的常量匹配成功

那么就要进入case语句

执行case后面的语句执行完之后

一定要跳出这个switch

要不然的话 case后面如果没有break

它就会一直往下执行

直到switch语句结束

所以在这个程序中

case10和case9的后面它是空的

没有语句 也没有break

那是不是说

case10和case9后面就没有执行语句呢

那肯定不是的

因为case10和case9后面没有break语句

没有break语句

那么这个程序它就继续往下执行

所以当case的值在80到100这个范围

它就会一直执行到case8后面的语句

不管是case10也好 case9也好

一直执行到case8后面的语句

直到遇到break 跳出这个switch

输出A等成绩

这是switch语句来实现的这样一个问题

那么switch语句处理多分支的这种选择结构

它的这个语句的标准形式是怎么样的呢

我们来看一下它的语法

它的语法是这样

switch后面圆括号里面有个表达式

根据表达式的值

使得这个流程跳转到不同的语句

这个时候就通过表达式的值

与case后面的常量去匹配

如果与case后面的常量都不匹配

那么就要 流程跳转到default语句

对于这个switch语句

我们要注意四点 我们总结一下

第一点呢

就是switch后面这个花括号里面的表达式

它的值 它的类型是整型类型或者是字符类型

所以switch下面呢这一对花括号

花括号里面的复合语句

包含着case开头的语句

还有default开头的语句

如果switch后面的表达式

与所有的case后面的常量都不匹配

那么它就执行default后面的语句

还有第二点大家注意

case后面跟着的是一个常量

或者是常量表达式

它就相当于一个语句的这样一个标记

第三点呢 就是执行switch语句的时候

要先计算switch后面的这个表达式

它将与各个case去比较

如果与某一个case后的常量比较成功

流程就跳转到这个case后面的语句

如果没有case后面的常量与它匹配

那么就会跳转到去执行default后面的语句

当然呢没有default语句也可以

当然我们要建议大家在这个switch语句当中

每一条case后面的语句都要加上一个break

这样方便程序执行的时候

能够跳出switch语句

最后第四点呢就是要大家清楚

switch语句和if语句适用的场合

虽然它们都是用来实现选择结构的语句

那么这个时候我们要注意

当条件表达式的值 它为离散的点状的时候

我们可以用switch语句来实现选择结构

这样程序看起来简洁明了 可读性也比较强

如果当条件表达式的值既可以为离散的点

又可以为连续的值的时候 不离散的值的时候

我们可以用if语句

当然呢 条件表达式的值

如果没有办法设为离散的点状的时候

我们只能用if语句

所以这是我们今天了解的这个switch语句

实现选择结构的这样一个情况

今天的这节课就到这里

谢谢大家

高级语言程序设计课程列表:

程序设计和C语言

-1.1 计算机程序和计算机语言

--计算机程序和计算机语言

--致敬先辈:伟大的C语言之父——丹尼斯·里奇 程序员

-1.2 C程序的构成

--C程序的构成

--当前主流程序设计语言各自都有什么优势?

-1.3 C语言编辑、编译、运行(VC++2010学习版)

--C语言编辑、编译、运行(VC++2010学习版)

-练习题

顺序结构程序设计

-2.1 变量的定义和使用

--变量的定义和使用

-2.2 数据类型

--数据类型简介

--整型数据

--实型数据

-2.3 格式输出和格式输入

--格式输出printf函数

--格式输入scanf函数

--单个字符的输入输出

-2.4 运算符和表达式

--运算符和表达式

-2.5 结构化程序设计入门

--结构化程序设计入门

-练习题

选择结构程序设计

-3.1 为什么要用选择结构解决问题

--为什么要用选择结构解决问题

-3.2 如何正确表示选择结构中的条件

--如何正确表示选择结构中的条件

-3.3 用if语句及if语句嵌套实现选择结构

--用if语句及if语句嵌套实现选择结构

-3.4 用switch语句实现选择结构

--用switch语句实现选择结构

-练习

循环结构程序设计

-4.1 循环的引入

-- 为什么要用循环结构解决问题

-4.1 循环的引入--作业

-4.2 用while语句实现循环

--用while语句实现循环

-4.3 用do-while语句实现循环

-- 用do-while语句实现循环

-4.4 用for语句实现循环

-- 用for语句实现循环

-4.4 用for语句实现循环--作业

-4.5 何时需要用循环的嵌套

--何时需要用循环的嵌套

-4.6 如何提前终止循环和提前结束本次循环

--如何提前终止循环和提前结束本次循环

-习题--作业

数组

-5.1 数组类型的引入

--数组类型的引入

-5.2 一维数组的定义和初始化

--一维数组的定义和初始化

-5.3 一维数组的使用

--一维数组的使用

-5.4 二维数组的定义和初始化

--二维数组的定义和初始化

-5.5 二维数组的使用

--二维数组的使用

-习题--作业

指针

-6.1 什么是指针

--什么是指针

-6.2 指针类型及相关概念

--指针类型及相关概念

-6.3 指针变量的定义、赋值与使用

--指针变量的定义、赋值与使用

-6.4 指针的运算

--指针的运算

-6.5 指针与一维数组

--指针与一维数组

-6.6 指针的指针

--指针的指针

-6.7 指针与二维数组

--指针与二维数组

-习题--作业

函数

-7.1 为什么要自定义函数

--为什么要自定义函数

-7.2 函数的定义

--函数的定义

-7.3 函数的调用

--函数的调用

-7.4 函数参数的传递

--函数参数的传递

-7.5 函数的嵌套调用和递归调用

--函数的嵌套调用和递归调用

-7.6 变量的作用域和存储类型

--变量的作用域和存储类型

-习题--作业

字符串

-8.1 字符串的存储及输入输出

--字符串的存储及输入输出

-8.2 系统字符串处理函数

--系统字符串处理函数

-8.3 自定义字符串处理函数

--自定义字符串处理函数

-习题--作业

结构体和共用体

-9.1 结构体类型的定义

--结构体类型的定义

-9.2 结构体变量及指针变量的定义及使用

--结构体类型变量和指针变量的定义和使用

-9.3 结构体变量和指针变量作函数的参数

--用结构体变量和指向结构体的指针作函数参数

-9.4 结构体数组的定义和使用

--结构体数组的定义和使用

-9.5 共用体类型和枚举类型

--共用体和枚举类型

-习题--作业

动态内存分配

-动态内存分配--习题

文件

-习题--作业

用switch语句实现选择结构笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。