当前课程知识点:C语言程序设计(上) >  选择结构的程序设计 >  3.3 复杂判断问题的C程序设计 >  3.3 多级选择

返回《C语言程序设计(上)》慕课在线视频课程列表

3.3 多级选择在线视频

3.3 多级选择

下一节:银行存款.c

返回《C语言程序设计(上)》慕课在线视频列表

3.3 多级选择课程教案、知识点、字幕

接下来我们再讨论一个问题是

关于多级选择问题的C程序

多级选择跟我们刚才说

程序里的嵌套

有什么不同呢

我们看一下

多级选择的结构

它是这样的一个结构

我们先不看语法是怎么规定的

它实现的功能是说

做一次选择

满足这个条件吗

这里面的条件满足下边的路就都不走了

这个选择就成功了

做这一块的语句

否则

接着选择

一样

否则接着选择

否则接着选择 是这样的

它解决的是什么样的问题呢

这样的问题

比如说

我们做一些分类统计

分类统计有很多

很多应用

比如说人口普查

我要把多少年龄段的人

比如说九十岁以上的

什么七十到八十的

或者儿童的

小学生的中学生的这样

做一个分类统计

这里边就是说

它不是说两条路

或者是说

这条路里边再嵌套一个什么路

它是一个平行的问题

我分的十类还是八类

我是分类一样的

你现在符合哪一个你到底你的年龄段是

28

那你就在二十到三十这个年龄段

这一类

那儿童

比如说

十二岁以下我算儿童

即儿童类 是这样分类

我们这一块给的一个问题是

按分数统计学分

是什么意思啊

我们知道分数是这样子

九十分以上算优秀

优秀算学分绩的时候

比如说这门课是三学分的课

但是学分绩会给你乘一个系数

乘一点几

这个各个学校是不一样的

比如说有的学校假如说我们在这里边

做一个假定

九十分优秀的数乘一点三

那八十良好的时候

八十到九十的时候是乘一点二

七十到八十的时候就是中

是一点一

及格就是一啦

就这个跟没系数一样

不及格时这学分就没有了

如果我们是这样的话

你看我们分了几个档

九十分一个档

八十分第二个

第三个第四个第五个一共有五个档

这五个档是对谁呢

对这个输入就是这一门课的成绩

这门课的成绩进来

先问你是九十分以上吗

你不是啊

不是的再往下走

那你是八十到九十这个档吗

不是再往下走

所以就是说

如果一上来我先问的是九十分以上

当然我可以先问你是六十分以下吗

也可以这样问

我先问的是如果是九十分以上

如果这位同学得了九十五分

后边的路都不走了

已经选择了一条路

选择这条路往下走

对于这样的一个问题

在C里边给了

专门的语句来实现这个的功能

功能是什么呢

从多条路里边

多条路径里边

选择一条走

那这块跟前边一样

不管你是一个选择

还是两种选择还是多种选择

结果是一样的

必须走一条路

不能一条路都不走

这是这种if else这种结构的特点

只能选一条路

必须选一条

不管你有多少条

我们把 这个问题

然后把它的程序写下来

根据刚才的流程写下来是不是这样

如果我们现在用分数

来做这是同学的成绩

这个成绩大于等于九十分吗

如果是的

你就学分绩乘以一点三

否则

那否则的它的可能性多了

是良呢是中呢是

及格呢不及格还有四个档次

四种可能等着你选

所以如果不是优秀

那你到底是下面哪一档呢 再继续问

是哪一档呢

如果是说这同学得了六十五分

到了这说你大于等于七十分吗

没有啊

那就不走后边了

如果分数大于等于六十分吗

也就是说六十五大于等于六十分吗

是的没问题

那现在学分绩就等于

他的课程给的学分

就乘的系数是一

好了 那走了这条路

那大家走了这条路

会不会担心它还走了下面这条路呢

给了零呢

不会呀

就是else if

任何一条路只要执行完

它就会走到这个结构的外边

结构的外边是哪里

是最后一个else

最后一个else

走到它的下边

他的下边是什么呢

输出啊

所以这个程序是这样

我们看

刚才这样写

是说看上去这个层次呢我们把它换一下

说用这个

就是缩进的这种格式if

下来else if

else if else if这样

这样看上去是不是很清楚

如果我们无论执行了哪一个就会到了

最后一个else的下边

就出了这个结构了

那这个结构是从这个if到else

出了这个结构执行的是这个printf

它实现是这样的一个功能

我们下面看一个实地的一个应用例子

银行的存款

我们大家知道银行存款是可以零存的

也可以存三个月的

半年的一年的两年的三年的八年的等等

那你说我存四十五天行不行

没有这个档

你只能存人家有的

我们刚才说了

活期的 三个月的 半年的 一年的

两年的 三年的 八年的七个档

你的钱存进去的时候你要去选择

你到底走的是哪个利息因为是

不同的档他的利率是不一样的

那银行在付给你款的时候

利息的这一部分是根据你存的长短

去算的 也就是说

你到期满的时候

会拿到的额度是多少呢

是你的本钱加上什么呢

你的本钱乘以月息

那这个月息是根据存的长短而不同的

这里边所有东西都是相同的

本钱是相同的

存的月数你说存多少月也是不变的

只是这个月息是因为你存的

月数的不同而不同

我们这一块为什么不说乘以

三年还是五年说月数呢

是说你存了两年期

实际上你取的时候已经两年三个月了

它是算的是二十四加三个月是二十七个月

也就是说二十四算哪个利息

那三个月算另一个利息还是比较复杂

我们这一块考虑一个简单的情况

给大家一个程序 我们看一下

在这一块是不是我们的变量

给的是三个参数

是你的本金

你的利率

和你的最后要拿到的连本带息的

一个额度

我们现在这scanf

你要读进来的是什么呢

你的本钱和你存的长短

我们到银行存钱就这样

存多少钱 存多长时间

这两件事必须告诉人家

好了 它下面接着

取钱的时候它会判断

存的时间是一年吗

如果是一年

我们这个利息

这个利率是多少

我给这个rate里边赋值

赋的这个值就是一年的息

我们给的是0.0032

如果不是一年 你存了两年

我们给的是 利率是0.0041

存了三年五年

八年它是不同的

也就是说

通过这一系列的判断

你一定是选择了一个

你不会走两个

你要不就存两年要不就存三年

你利率一定是选择了一个

这时候rate里边一定有个利率了

到期你的total里边

是多少呢

是你的本钱加上

你的本钱乘以利率

利率是怎么算呢

就是你的整个的利息就是

本钱加上利息

这是你的利息的这一部分

那利息是怎么算出来的呢

是你的本钱乘以利率

利率还有你这个

利率是月利率

就是说你存了两年

那你不能乘以2啊

是乘以两年的12个月应该是24个月

乘以这个利率

再乘以你的本钱这是你的利息

加上你的本金

所以最后你拿到总的钱数是这个

printf输出你total里边的拿到的钱数

我还看到这里边的嵌套是怎么样嵌套的呢

就是说它是一个多级的选择

如果你第一级就选定了那

程序流程走了这直接就到了total这了

就执行total的计算然后输出

如果你这面不是一年你是三年

这也没挡住

走到这挡住了那你得到的利率

是0.005

然后呢按照0.005的rate

去算的你的利息

然后加上本钱得到的这个total

那这里边我们看

你多级都是在else if

else if里边

再去进行多级选择的

但是我们要强调一点

这些路你必须走一条

不可以说不走

那么我们有这样的实地问题说

我就说多级选择这些选择我都不走

可以吗

可以 这是我们下一个要讨论的问题

C语言程序设计(上)课程列表:

从问题到C语言程序设计

-1.1 计算机的问题求解方法

--1.1.1--程序设计面向的问题

--1.1.2--关于计算

--1.1.3-1关于算法-算法的特征

--1.1.3-2关于算法——算法的表示

--1.1.3-3关于算法——算法的优化

--1.1.4-1-程序设计方法

--1.1.4-2-程序设计方法

--讨论题:数学模型

-1.1 计算机的问题求解方法--作业

-1.2 C语言与C程序

--1.2.1-1-C概述

--1.2.1-2-C概述

--1.2.2-C初步

--讨论题:运算符

-1.3 C语言处理系统与程序调试运行

--1.3.1C程序如何调试运行

--1.3.2常用C语言处理系统

--1.3.3DEVC++的使用-v1

--1.3.4C语言概貌小程序

--例程

-1.4 程序中的人机交互

--1.4 printf用法

--1.4.2 scanf的用法

--例程

--作业讨论区

数据计算实现与顺序结构程序设计(一)

-2.1 算术运算的C程序实现

--2.1.1 第二章

--2.1.2 C语言算术表达式概念

--2.1.3 算术运算的实现

--2.1.4 整数相除

--2.1.5 输入格式造成的计算错误

--2.1.6 求余运算

--2.1.7 自增自减运算

--2.1.8 复合运算

--fangcheng.c

--fangcheng-1.c

--fangcheng-2.c

--fangcheng-3.c

--fangcheng-4.c

--算术混合运算.c

--讨论题:自增自减符

--讨论题:程序输出结果

--讨论题:程序运行结果

-2.1 算术运算的C程序实现--作业

-2.2 关系运算的C程序实现

--2.2.1 关系比较问题

--2.2.2 C语言关系表达式

--2.2.3关系运算优先级

--2.2.4 用关系运算做判断条件

--2.2.5 程序实例

--2.2.6 字符比较

--bukao.c

--pingshifen-1.c

--panduanzhengshu.c

--pingshifen-2.c

--字符比较.c

--讨论题:比较大小

--讨论题:程序的运行

-2.2 关系运算的C程序实现--作业

-第二周作业--作业

数据计算实现与顺序结构程序设计(二)

-2.3 逻辑运算的C程序实现

--2.3.1 逻辑运算问题~1

--2.3.2 逻辑运算表达式

--2.3.3 如何判断闰年

--2.3.4 逻辑运算优先级

--2.3.5 条件运算符

--计算结合性

--2.3.7 一个简单实例

--闰年.c

--自动购票问题.c

--讨论题:逻辑表达式

-2.3 逻辑运算的C程序实现--作业

-2.4 位运算的C程序实现

--2.4.1 什么是位运算

--2.4.2 位运算有哪些

--2.4.3 位运算怎么用

--讨论题:位运算

-2.5 几种很个别的运算

--2.5 几个很个别的运算

--讨论题

--讨论题

-2.5 几种很个别的运算--作业

-2.6 混合运算及数据类型转换

--2.6 混合运算及数据类型转换

--讨论题:数据类型

-2.7 顺序结构程序实例

--2.7.1 第一个程序:三角形

--Video

--三角形面积.c

--讨论题:工业产值

--讨论题:程序无效结果

-2.7 顺序结构程序实例--作业

选择结构的程序设计

-3.1 程序中的路径选择实现

--3.1.1_1 第三章

--3.1.1_2 神奇的if_else

--打印学生成绩.c

--一元二次方程.c

-3.1 程序中的路径选择实现--作业

-3.2 路径中的再选择——嵌套判断

--3.2.1_1 if语句的嵌套

--3.2.1_2三个数排序1029

--例程

--3.2.2 用户登录检查

--三个数排序_未优化.c

--三个数排序_优化.c

--讨论题:程序改错

-3.2 路径中的再选择——嵌套判断--作业

-3.3 复杂判断问题的C程序设计

--3.3 多级选择

--银行存款.c

--讨论题:多级选择

-3.4 多分支问题的C程序设计

--3.4.1 switch语句表达式

--3.4.2 加减乘除计算

--3.4.3 几类说明

--加减乘除运算.c

--讨论题:关于switch

-3.4 多分支问题的C程序设计--作业

-3.5 GOTO的适当使用

--3.5 GOTO的适当使用

-3.6 选择结构的程序实例

--3.6 程序展示

--计算第几天.c

--存款利息__switch实现.c

--讨论题:输出奇数

--讨论题:计算税金

-3.6 选择结构的程序实例--作业

-第四周作业--作业

循环结构的程序设计(一)

-4.1 需要重复执行的程序

--4.1.1----第四章~1

--4.1.2---while实现先判断后循环~1

--4.1.3----while循环的应用-录入速度~1

--求和.c

--打印学生成绩.c

--统计录入速度.c

--求平均数.c

-4.1 需要重复执行的程序--作业

-4.2 至少要执行一次的循环

--4.2.1至少要执行一次的循环

--4.2.2-do-while循环应用

--成绩录入_do while实现.c

--n的阶乘.c

--字符分类统计.c

--讨论题:关于while

-4.2 至少要执行一次的循环--作业

-4.3 已知循环次数用for语句

--4.3.1--用for语句控制循环次数

--4.3.2--循环的应用-求和

--求和问题.c

--斐波那契数列问题.c

--数列求和.c

--讨论题:循环语句的不同

--讨论题:循环语句

-4.3 已知循环次数用for语句--作业

-4.4 循环控制——简单循环应用

--4.4.1-循环的应用-找数-水仙花数

--4.4.2--循环的应用-求素数

--水仙花数.c

--讨论题:死循环

--讨论题:continue和break

--讨论题:猜数字

-循环结构的程序设计(一)--4.4 循环控制——简单循环应用

循环结构的程序设计(二)

-4.5 循环的嵌套

--4.5.1 循环的嵌套——九九乘法表

--4.5.2 循环的嵌套——打印三角形

--打印九九乘法表.c

--打印实心三角图案.c

--打印空心三角图案.c

--讨论题:程序运行

-4.5 循环的嵌套--作业

-4.6 break与continue

--4.6 循环中断与继续循环——break再讨论

--最大素数.c

--求正数个数及平均数.c

-4.6 break与continue--作业

-4.7 循环的综合应用

--4.7.1 数的排列组合问题

--4.7.2 循环综合应用——穷举算法

--4.7.3 循环综合应用——满足条件的数

--4.7.4 循环综合应用——求最后三位数

--4.7.5 循环综合应用——打印空心图案

--数的排列组合.c

--数的排列组合优化.c

--鸡兔同笼.c

--找满足条件的数.c

--输出14的13次方的最后三位数.c

--打印空心字符.c

--讨论题:打印图形

--讨论题:打印空心图形

--讨论题:计算闰年

-第六周作业

--虚拟实验:循环程序设计实验

-第六周作业--作业

数组(一)

-5.1 同类有序数据处理问题

--5.1.0 数组开篇

--5.1.1 同类有序数据存储问题

--讨论题:下标变量与下标

-5.2 一维数组的定义和引用

--5.2.1_1 数组的定义~1

--5.2.1_2 数组的初始化

--5.2.2 一维数组的输入输出

--5.2.3 一维数组的应用1--成绩排序(选择法)~2

--5.2.4 一维数组的应用2--Fibonacci数列

--数组定义.c

--数组初始化.c

--输出大于平均值的数.c

--反向输出.c

--选择法_成绩排序.c

--求斐波那契数列前n项.c

--讨论题:对称数

--讨论题:关于'\0'

-5.2 一维数组的定义和引用--作业

-5.3 一维字符串数组

--5.3 一维字符串数组11.24~1

--用函数测试字符串长度.c

--讨论题:编程

-5.4 字符串处理函数

--5.4 字符数组的输入与输出

--字符串反向.c

--字符串函数

--讨论题:程序如何运行

--讨论题:黑色星期五

数组(二)

-5.5 二维数组的定义与使用

--5.5 二维数组定义

--二维数组的定义与初始化.c

-5.6 二维数组的输入输出

--5.6 二维数组的输入与输出

--二位数组输出_矩阵输出.c

--讨论题:随机数据存储

-5.6 二维数组的输入输出--作业

-5.7 二维数组的应用‍

--5.7.1二维数组的应用-转置矩阵

--5.7.2 用一维数组方式引用二维数组元素

--转置矩阵.c

--找二维数组最大数.c

--讨论题:修改程序

--讨论题:关于随机数函数 rand()

-5.8 二维字符数组

--5.8 单词排序

--单词排序.c

--讨论题:回文字符串

-5.8 二维字符数组--作业

-5.9 数组综合应用

--5.9.1 应用1——学生成绩统计

--统计成绩.c

--5.9.2 应用2——删除重复字符

--删除串中的重复字符串

--5.9.3 应用3——统计字符

--5.9_4数组的应用4--矩阵相乘

--统计字符次数.c

--讨论题:洗牌

-本期课程结束语

--end

-第八周编程作业

--虚拟实验:冒泡排序算法程序设计实验

期末复习

-《C语言程序设计(上)》期末复习参考

--html

期末复习答案

-《C语言程序设计(上)》期末复习参考答案

--html

3.3 多级选择笔记与讨论

也许你还感兴趣的课程:

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