大家好
欢迎继续学习C++语言程序设计
这一节我给大家介绍if语句
if语句是做什么用的呢
是实现选择结构的
我们在写程序的时候
不是总是将程序的语句
按照顺序的步骤写下来的
很多时候我们需要选择
需要分支
比如说我们写一个程序
计算一下全班学生的成绩
那可能就会出现这种情况
当成绩大于等于60分的时候
我显示他通过了
当成绩小于60分的时候
我显示这个学生成绩不通过
这就是一种选择
实际算法中很多地方
是需要做这种选择的
那么在C++中if语句
就是一个实现选择结构的
这么一个控制语句
接下来我们来看
if语句的详细情况
现在我们来看一下
这个if语句语法形式有几种
第一种语法形式
是单选择的if语句
那我们来看这个例子
如果x大于y为真
那么就输出x的值
否则什么都不做
所以这种形式的if呢
它就只在if后面有个表达式
根据表达式值真还是假
来决定后续操作
如果表达式的值为真
就执行后面这条语句
如果值为假 就什么也不做
第二种形式是两分支的选择结构
if后面有个表达式
如果表达式的值为真
那么就执行语句1
如果表达式的值为假
那么就执行语句2
那我们来看这同样有个例子
在这个例子中
当x大于y的时候 那么就输出x
如果x大于y为假 那么就输出y
那么它达到的效果是什么呢
就是输出x和y中
比较大的那一个值
那么第三种形式呢
是一个多重选择结构
第一次首先判断表达式1
当表达式1为真 就执行语句1
如果表达式1为假
那么接下来的判断表达式2
是真还是假
如果表达式2为真 就执行语句2
如果表达式2依然为假
那接下来继续判断表达式3
依此类推
如果上面的所有表达式都为假
最后就会落到else这个分支去
执行最后一个语句
那么这样的多重选择结构呢
就好象是在每一个else分支中
又嵌套了一个if else语句一样
它要在else分支中再嵌套一个
再嵌套一个
每一个嵌套都那么巧
放在else分支里面
我们就可以用这多个
else if语句来进行多重选择
这几种语法形式里面的语句
包括语句1 语句2 语句3
语句n
它们都不仅可以是单条语句
而且可以是由多条语句
构成的复合语句
复合语句
就是大括号括起来的多条语句
由于程序逻辑复杂到
需要多重逻辑判断的地步呢
可能我们要做的操作
也是比较复杂的
所以大多数时候
在这些分支里面执行的语句
都会是复合语句
而很少会遇到
只是单条语句的简单情况
现在我们来看这样一个例子
输入两个整数
然后比较它们的大小
两个整数的大小情况
肯定是三种情况 相等
或者第一个数大于第二个数
或者第二个数大于第一个数
那这个时候我们用什么办法
来写这个程序呢
显然这个时候
就不是简单的两分支的选择结构
可以解决的问题了
我们来看这个程序的实现
在这个程序中
首先我们用这个if语句
来判断一下x和y是不是相等
当x和y不相等的时候
我们接下来要进一步判断
是x大于y吗
如果x大于y为真
那就输出x大于y
否则输出x小于y
所以我们看到在这个if分支里面
又嵌套了一个if else语句
如果x和y是相等的
那么在y层的if else这个语句里面
我们就走向了else分支
这个时候直接输出x等于y
这是一个典型的
嵌套的if else结构
那么它的运行结果我们看一下
当输出x和y的值为5和8的时候
输出显示x小于y
输入两个都是8的时候
输出显示是相等
输入一个12 一个8的时候
显示x大于y
大家也可以自己到编译环境中
去编译运行
验证一下看是不是这样
现在我们来看一下
这个嵌套的if else的
它的语法结构
在每一个if分支
和每个else分支里面
都可以嵌套一个
完整的if else语句
那么如果你的内层
或者是你嵌套多层的时候
某一层不是一个完全的
两分支的选择
只是有一个单分支的if语句
没有else语句
那么会出现什么情况呢
这样我们首先要知道
当你写嵌套的if else结构的时候
各层的if和else
是如何自动去匹配的
我们来看
实际上就是每一个else
向上找它离它最近的同层的if
去匹配
那用什么来分层呢
像这个缩格写是不是就分层了呢
不是的
我们知道在C++中
你写一个空格 写两个空格
写个换行它都是一样的
都是空白符
所以缩格不能从程序逻辑上
代表层次
缩格只是给我们程序员看的
使我们自己看得更舒服一些
逻辑更清晰一些
那么在编译器看来
你缩格不缩格是一样的
所以呢
如果我们有嵌套的内层if else
而内层的if else
可能不是双分支的
而是单分支的
这种情况下你要将
内层的if else用大括号括起来
作为一个复合语句
这样的话内层的else
和外层的if
或者内层的if和外层的else
它们就不会错误地去匹配了
这个非常重要
在写嵌套的选择结构的时候
一定不要
把else和if的匹配关系给弄错