当前课程知识点:高级语言程序设计 > 选择结构程序设计 > 3.3 用if语句及if语句嵌套实现选择结构 > 用if语句及if语句嵌套实现选择结构
大家好 现在我们一起来学习
用if语句以及if语句嵌套来实现选择结构
那么这一节课呢首先给大家介绍
if语句以及if语句嵌套的这个语法
然后用if语句解决两个实数排序的问题
最后用if语句的嵌套
来判断一个学生的某门课成绩
在A、B、C、D哪一个等级的问题
下面我们来看if语句
那么if语句呢 它有两种控制形式
一种是单分支控制 一种是双分支控制
单分支控制的条件语句
它的格式是if(表达式)语句1
由这个流程图我们可以看到
它的执行的过程是这样的
当表达式为真 执行语句1
当这个表达式为假的时候
它就跳过语句1执行后面的语句
另外一种双分支控制的条件语句
它的格式是if(表达式)语句1
else语句2
按照流程图来看它的执行过程是
如果表达式为真 则执行语句1
如果表达式为假 则执行语句2
那么这两种控制语句里面
双分支控制的条件语句 也就是if-else语句
我们之前举过例子 就是求1元2次方程的根
现在呢
我们来举一个单分支控制if语句的例子
这个例子是这样的
要输入两个实数
并且按由小到大的顺序输出这两个数
我们的解题思路是这样的
首先呢 我们要定义两个实数变量a、b
然后从键盘输入这两个实数的值
接下来 利用if语句来比较a、b值的大小
如果a小于等于b的
那么这个a、b的值就不用交换
如果a的值要大于b
那么a、b的值是一定要交换的
那么这个if语句执行完了
我们就可以确定a、b的值
它肯定是按照由小到大的顺序来排列的
最后输出这个结果 也就是变量a、b的值
那么在这个问题当中
我们怎么样进行变量的这样一个交换呢
这是我们在C语言编程中
经常会遇到的一个问题
就是值的交换
那么值的交换问题是这样来解决的
我们下面可以用生活当中的例子进行类比
来帮助我们理解
因为变量啊 它的值它们都存在
它的各自的存储单元里面
所以这个变量的值要交换的话
我们是不能直接进行赋值运算的
因为一旦做了赋值运算
那么赋值符号左边和右边
这个变量的值就一样了
比如说 我把b的值赋给a
然后再把a的值赋给b
这样做肯定是不行的
因为 当你把b的值赋给a的时候
这个时候a、b的值就相同了
你再把a的值赋给b
其实它们两个的值还是一样的
也就是说根本就没有达到交换的目的
所以我们在交换的时候
这个时候需要一个同类型的变量t来帮助我们
你说就像生活当中
交换一瓶酱油和一瓶醋一样
这个酱油和醋它是有瓶子装的
也就是相当于我们变量的这个存储空间
我们将瓶子里面的内容进行交换
很显然肯定需要一个空瓶子 对吧
交换的时候 我们把酱油倒到空瓶子里面
然后再把醋倒到酱油瓶子里面
最后再把原来最新的那个空瓶子
里面的酱油倒到醋瓶子里面
这样就实现了这个交换
所以同样的道理
在变量a、b交换过程中
我们也要用一个同类型的变量t
来充当这个空瓶的作用
不同的是
酱油和醋交换了瓶子后依然有一个空瓶
而变量a、b通过t的帮助实现了交换之后
变量a、b、t它们的存储单元里
都是存有值的
所以这个时候我们可以用C语言编写程序
那这个程序只有一个主函数
在这个主函数里面
我们要定义a、b、t实型变量
然后用scanf语句输入a、b的值
接下来用if语句来实现a、b值的交换
那么在这个时候
要看这个if后面的条件是否满足
如果满足就交换 如果不满足就不交换
假如a大于b这个条件满足 表达式为真
那么很显然它就要交换的 怎么样交换呢
那么就要执行if后面大括号里的这个复合语句
这个复合语句的里面的这三条语句的执行过程
大家应该可以看得到
就是将a的值先赋给变量t
然后把b的值赋给a
最后把t的值赋给b
那么这样 就把a、b的值做了一个交换
当然 在这个代码当中
如果我们的条件不成立
也就是说如果a小于等于b这个条件不成立
那么这个交换的过程也就不用执行了
因为本来a、b就是按从小到大的顺序排列的
最后输出结果 就是a、b的值
下面我们来运行一下程序
输入a、b的值
分别给它3.3逗号2.2
最后得到这个排列的顺序为2.20逗号3.30
按照程序里输出的这个变量的格式
来得到这个结果
好这是我们讲的if的两个控制语句
在很多种选择结构中
我们可以用if或者是if-else语句来实现
但是 一旦遇到条件比较多的时候
或者这些条件之间有相互的关系
用if语句写代码 它比较繁琐
这个时候 我们可以考虑用if语句的嵌套
现在呢 有一个例子
当然这个例子前面已经提到过
就是判断一个学生的某门课的
成绩为ABCD哪一个等级
如果按照题目的意思
我们可以用if语句来写各个等级的成绩
那么判断这几个等级的条件
依次可以写成下面的这几个样子
其实我们还有一种方式
可以让这几个条件
的代码写起来更加的简洁
也就是我们将要学的这个if语句的嵌套
if语句的嵌套它的形式是这样的
首先我们从外层结构看 有一对if-else语句
if表达式1大括号 语句
那么第一对大括号它的下面呢有一个else
也就是和刚才的这个if配对的
这个是外层的else
这个else下面它有第二对大括号语句
因为是嵌套嘛
所以就是外面的一层if-else
套着内层的if-else
那么这个外层的if-else语句执行情况
大家应该比较容易理解
就是表达式1为真 执行第一对大括号的语句
表达式1为假 执行第二对大括号的语句
下面我们再看内层的if-else语句
也就是说在满足表达式1为真的情况下
同时满足表达式2为真
那么就执行语句1
这个时候我们已经进入到内层的if语句了
那么在表达式1为真的情况下
同时满足表达式2为假 执行语句2
这个时候我们就进入到了内层的else语句
那么同样的道理
在满足表达式1为假的情况下
同时满足表达式3为真 执行语句3
在满足表达式1为假
同时满足表达式3为假
那就执行语句4
我们知道这样一个执行过程之后呢
下面我们把刚才的这个问题
我们用嵌套的if语句来实现
那么这个层级分A、B、C、D四个等级
如何来写这个条件
有外层的if-else
还有里面一层的if-else
所以这个时候我们就要考虑清楚
A、B、C、D这个范围的这个界限
我们怎么样分配
按照这个界限的分配
我们可以将70作为外层的if条件分界点
也就是score大于等于70
好 我们输入了score的值
接下来看到外层的if语句
当score的值大于等于70
这时我们要进内层的if语句判断
如果同时它还要大于等于80也满足
那么成绩为A等
如果这个时候它大于等于70并且小于80
那它就是B等
如果score的值小于70并且还小于60
那么它的成绩为D等
如果score的值小于70并且大于等于60
那么它的成绩为C等
所以大家看到这个题目
其实可以在数轴上面画一下
你可以将这几个条件的这个区域标识出来
那么这样方便我们确定
外层和内层条件的分界点 分界值
最后我们来运行一下这个程序
程序运行的时候我们输入score的值为85
得到这个数学成绩为A等这样一个结果
好今天我们就学习了这个if语句的
两种控制语句和if语句的嵌套
来实现的这些选择结构
好 今天的这一节课就到这里
谢谢大家
-1.1 计算机程序和计算机语言
-1.2 C程序的构成
--C程序的构成
-1.3 C语言编辑、编译、运行(VC++2010学习版)
-练习题
-2.1 变量的定义和使用
--变量的定义和使用
-2.2 数据类型
--数据类型简介
--整型数据
--实型数据
-2.3 格式输出和格式输入
-2.4 运算符和表达式
--运算符和表达式
-2.5 结构化程序设计入门
-练习题
-3.1 为什么要用选择结构解决问题
-3.2 如何正确表示选择结构中的条件
-3.3 用if语句及if语句嵌套实现选择结构
-3.4 用switch语句实现选择结构
-练习
-4.1 循环的引入
-4.1 循环的引入--作业
-4.2 用while语句实现循环
-4.3 用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 共用体类型和枚举类型
--共用体和枚举类型
-习题--作业
-动态内存分配--习题
-习题--作业