
3.2 if 语句

if 语句也称条件语句,是对语句中不同条件的值进行判断,从而根据不同的条件执行不同操作的语句。
条件语句可分为以下3 种形式:
(1)简单的if 条件语句。
(2)if…else 条件语句。
(3)if…else if 多分支条件语句。
3.2.1 简单的if 条件语句
简单的if 条件语句是对某种条件进行相应的处理。通常表现为 “如果满足某种条件,则进行某种处理”。它的一般形式为:

●表达式:必要参数。其值可以由多个表达式组成,但其最后的结果一定是boolean 型,也就是说,其结果只能是true 或false。
●语句序列:可选参数。一条或多条语句,当表达式的值为true 时执行这些语句。当该语句序列被省略时,可以保留大括号,也可以去掉大括号,然后在if 条件语句的末尾添加分号 “;”。如果该语句序列只有一条语句,则大括号可以省略不写,但为了增强程序的可读性,最好不省略。
例如:如果今天下雨,则我们就不出去玩。
条件语句为:

下面的代码都是正确的:

简单的if 条件语句执行流程如图3.9 所示。
【例3.3】 使用简单的if 条件语句获取两个数的最小值,具体代码如下:

程序运行结果如图3.10 所示。

图3.9 简单的if 条件语句执行流程

图3.10 简单的if 条件语句获取最小值的结果
3.2.2 if…else 条件语句
if…else 条件语句是条件语句的一种最通用的形式。else 是可选的,通常表现为 “如果满足某种条件,则进行某种处理,否则进行另一种处理”。它的一般形式为:

●表达式:必要参数。其值可以由多个表达式组成,但其最后的结果一定是boolean 型,也就是说,其结果只能是true 或false。
●语句序列1:可选参数。一条或多条语句,当表达式的值为true 时执行这些语句。
●语句序列2:可选参数。一条或多条语句,当表达式的值为false 时执行这些语句。
例如:如果指定年为闰年,则二月份为29 天,否则二月份为28 天。
条件语句为:

if…else 条件语句执行流程如图3.11 所示。
【例3.4】 使用if…else 条件语句判断69 与29 的大小,具体代码如下:


程序运行结果如图3.12 所示。

图3.11 if…else 条件语句执行流程

图3.12 if…else 条件语句判断大小的结果
3.2.3 if…else if 多分支语句
if…else if 多分支语句用于对某一事件的多种情况进行处理。通常表现为 “如果满足某种条件,则进行某种处理;如果满足另一种条件,则进行另一种处理;如果所有条件都不满足,则进行其他处理”。它的一般形式为:

●表达式1 和表达式2:必要参数。其值可以由多个表达式组成,但其最后的结果一定是boolean 型,也就是说,其结果只能是true 或false。
●语句序列1:可选参数。一条或多条语句,当表达式1 的值为true 时执行这些语句。
●语句序列2:可选参数。一条或多条语句,当表达式1 的值为false,表达式2 的值为true 时执行这些语句。
●语句序列n:可选参数。一条或多条语句,当表达式1 的值为false,表达式2 的值也为false 时执行这些语句。
例如:如果今天是星期一,则上数学课;如果今天是星期二,则上语文课;否则上自习。
条件语句为:

if…else if 多分支语句执行流程如图3.13 所示。

图3.13 if…else if 多分支语句执行流程
3.2.4 if 语句的嵌套
if 语句的嵌套就是在if 语句中又包含一个或多个if 语句。这样的语句一般都用于比较复杂的分支语句中,它的一般形式为:

●表达式1、表达式2 和表达式3:必要参数。其值可以由多个表达式组成,但其最后的结果一定是boolean 型,也就是说,其结果只能是true 或false。
●语句序列1:可选参数。一条或多条语句,当表达式1 和表达式2 的值都为true 时执行这些语句。
●语句序列2:可选参数。一条或多条语句,当表达式1 值为true,表达式2 的值为false 时执行这些语句。
●语句序列3:可选参数。一条或多条语句,当表达式1 的值为false,表达式3 的值为true 时执行这些语句。
●语句序列4:可选参数。一条或多条语句,当表达式1 的值为false,表达式3 的值也为false 时执行这些语句。
【例3.5】 使用if…else 嵌套实现:判断英语打78 分处在什么阶段。条件为:成绩大于或等于90 分为优,成绩在75(含)~90 分为良,成绩在60(含)~75 分为及格,成绩小于60 分为不及格,具体代码如下:

程序运行结果如图3.14 所示。
在嵌套的语句中最好不要省略大括号,以免造成视觉的错误与程序的混乱。
例如:


图3.14 成绩判断结果

这样即使result 等于0,也会输出no,因此很难判断else 与哪个if 配对。为了避免发生这种情况,最好添加大括号为代码划分界限,具体代码如下:
