当前课程知识点:C语言程序设计(上) >  选择结构的程序设计 >  3.2 路径中的再选择——嵌套判断 >  3.2.1_1 if语句的嵌套

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

3.2.1_1 if语句的嵌套在线视频

3.2.1_1 if语句的嵌套

下一节:3.2.1_2三个数排序1029

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

3.2.1_1 if语句的嵌套课程教案、知识点、字幕

接下来我们继续进一步的讨论

关于路径中的再选择

所谓再选择就是说

这个条件不简单

可能说一次判断两次判断

并不能得到我们想要的结果

并不能使得程序

选定了它要走的流程

这就是在C里边

或者在别的程序语言里边也是一样的

有一个嵌套的判断的问题

比如说我们前面遇到的

三个任意数a b c的排序问题

记得我们当时在表达这个流程的时候

描述这个流程的时候

就是非常庞大的一个分支

就是选择了五次

得到了六个输出

是这样子选择了五次

用我们前面讨论过的说

双选择的话

我们只能在两条路径里边选择

两条路径里边选一个

而这五次判断

说明它可能有的是五条路径

这样的问题怎么做

我们还把以前的这个流程

就是三个任意数的排序问题这个流程

我们再看一下

我们做的是先做

a大于b吗这样的判断

流程走了两个方向

但是这两个方向

都不能够

最终得到这个程序的流程走向

无论a是大于b

还是不大于b

都需要做进一步的判断

才能够决定流程的走向

我们现在展开了一个分支

比如说a大于b 是的

a是大于b

我们并不能决定

只能决定a和b的关系

并不能决定c和它们之间的关系

需要进一步的判断说

c大于a吗

如果是a大于b并且c也大于a

我们得到了什么

它的排序从大到小是c a b

不是

就是说a大于b了但是却c不大于a

那就还要走一条路径

这个路径里也还不简单

我们还要把c和b做比较

c大于b吗

如果是 那你才是a c b

否则是a b c

在这个a大于b吗

这个双向选择里边

选择了yes 是的

在这个是的里边

我们又做了两次判断

在这个if块里边

我们还继续了两次判断

如果我们要再考虑else这个块

else这个块的话这里边仍然一样

又做了两次判断

这连第一次的一级的二级的三级的

这个判断一共有五次判断

最终无论这五次判断是走了哪一个

最终都会有一个输出

而且只能有一个输出

最后输出完了程序存在结束

这是三个任意数排序的

我们最直接的一个流程的一个走向

这里边我们在考虑是什么

在这个if的语句里边

不管是if块还是else块里边

嵌套了下一级

再一级的判断

嵌套了再一阶的判断 

所以我们把路径的再选择

就是直到得到流程 就是程序的走向

非常确定它知道向哪里去为止

这个在C里边

用什么样的语句形式来表达

这样的语句格式if else

跟前面说的神奇的if else是一样的

只不过说在这个if块里边

它还可以用的是一个if else结构

在else块里边

也可以用的是一个if else的

这样的一个结构

这个结构里

这个if块里边只要它不是一句话

我们就会用一对花括弧把它括起来

无论是if还是else

这怎么没有括

我们看这呢 这是两行

这种情况就是一个标准的什么

我们的标题里边是嵌套

标准地嵌套了另一个if结构

一个完整的if else的结构

这个if后边

无论它的语句跟了多少个语句

只在这个语句块后边加花括弧

这个if else

整体结构只要是完整的

你可以不加

那这样的话 它的功能是什么呢

先做if else的这个选择

进入了这个选择的相应的块之后

再做进一步的判断

所以我们这个标题里边说

路径中的再选择

就是靠嵌套的这个if else来完成的

我们通常把外围的if else

叫做外层的if

把里边嵌套的这个叫

这两种 不管嵌到if块里边

还是else块里边

叫内嵌的if

所以呢 就是说

我们在这要讨论的一个问题说

如果在这个if表达式1里边

这个语句11里边 还可以再嵌吗

可以呀 if里边可以再嵌if

那第三层的if里边也可以再嵌if

C对这一块的要求它是没有限定的

如果这个无限制的嵌下去嵌几十层

你再程序的给优化

就是一个非常值得考虑的问题

那我们还拿三个任意数排序的问题

我们把它的程序写出来

大家看一下 就是对这个流程

if块 这边是else块

那这个看上去比较小

我们把它框一下

绿颜色的这一块

就是我们先做的if块 是这边的

红颜色的紫的这一块

而下边白颜色的表达的是这边的

else的块

那在这个块里边

大家非常清楚的看到

这里边嵌套了谁 我们把if块放大一下看

这是if块 绿颜色的if块里边

我们看这是if c大于a吗

是在这的 c大于a吗

如果是的 满足了这个条件为真

我们就做了printf 做了这一步这个工作

输出c a b

否则 需要再判断

在这个else里边 又嵌套了一层if

如果c大于b的话 做到这步

那输出的是这个

否则 输出的是哪呢

就是a b c

那么我们看一下

这个嵌套里边

这个else 和哪个if呢

一定是和离它最近的if去匹配

而这个else 是和谁呢

和离它最近的去匹配

这块大家会不会担心说这个else

怎么不会与这个if去匹配呢

这个语言的规则是

离它最近的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.2.1_1 if语句的嵌套笔记与讨论

也许你还感兴趣的课程:

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