C++ if语句嵌套使用方法详解
一个 if 或 if-else 语句可以放在另一个 if 或 if-else 语句中,这种结构称为嵌套 if,它允许测试多个条件来确定究竟应该执行哪个代码块。
例如,有这么一个银行程序,需要确定银行客户是否有资格获得特别低利率的贷款。要符合资格,必须存在以下两个条件:
图 1 显示了可用于此类程序的算法的流程图。
图 1 贷款资格审查流程图
如果在图 1 中遵循执行流程,则可以看到第一个被测试的表达式为
但是,如果表达式为 true,则还需要测试第二个条件,也就是通过一个嵌套的决策结构来测试表达式
下面的程序显示了与流程图的逻辑对应的代码。它在一个 if-else 语句中嵌套了另外一个 if-else 语句。
仔细研究一下该程序。从第14 行开始的 if 语句测试了表达式
在调试使用嵌套 if-else 语句的程序时,重要的是要知道哪个 if 语句与 else 语句一起使用。正确匹配每个 else 与 if 的规则是这样的:一个 else 匹配与其最近的上一个 if 语句,并且该 if 语句没有自己的 else。当语句正确缩进时,这更容易看出来。
图 2 快速识别嵌套 if-else 语句中 if 和 else 的匹配
图 2 显示了类似于此程序第 14〜28 行的代码。它说明了每个 else 如何找到匹配的 if。这些视觉线索很重要,因为嵌套 if 语句可能非常长而复杂。
例如,有这么一个银行程序,需要确定银行客户是否有资格获得特别低利率的贷款。要符合资格,必须存在以下两个条件:
- 客户必须有工作。
- 客户必须刚从大学毕业(过去两年)。
图 1 显示了可用于此类程序的算法的流程图。
图 1 贷款资格审查流程图
如果在图 1 中遵循执行流程,则可以看到第一个被测试的表达式为
employed = 'Y'
。如果此表达式为 false,说明客户没有工作,则不需要执行任何其他测试,因为已经知道客户不符合特殊利率资格了,于是显示"You must be employed to qualify."(您必须有工作才能获得资格)。但是,如果表达式为 true,则还需要测试第二个条件,也就是通过一个嵌套的决策结构来测试表达式
recentGrad = 'Y'
。如果第二个表达式为 false,则客户仍不符合条件。 于是显示"You must have graduated from college in the past two years to qualify."(您必须在过去两年内刚从大学毕业才能获得资格);如果第二个表达式为 true,则客户有资格获得特别低利率的贷款,显示结果为"You qualify for the special interest rate."(您有资格获得特别低利率贷款)。下面的程序显示了与流程图的逻辑对应的代码。它在一个 if-else 语句中嵌套了另外一个 if-else 语句。
//This program determines whether a loan applicant qualifies for //a special loan interest rate. It uses nested if-else statements. #include <iostream> using namespace std; int main() { char employed,recentGrad; cout << "Are you employed?(Y/N) "; cin >> employed; cout << "Have you graduated from college in the past two years?(Y/N) "; cin >> recentGrad; //Determine the applicant1s loan qualifications if (employed == 'Y') { if (recentGrad == 'Y') // Employed and a recent grad { cout << "You qualify for the special interest rate.\n"; } else // Employed but not a recent grad { cout << "You must have graduated from college in the past two years to qualify for the special interest rate.\n"; } } else // Not employed { cout << "You must be employed to qualify for the "<<"special interest rate. \n"; } return 0; }程序运行结果:
Are you employed?(Y/N) N
Have you graduated from college in the past two years?(Y/N) Y
You must be employed to qualify for the special interest rate.
仔细研究一下该程序。从第14 行开始的 if 语句测试了表达式
employed == 'Y'
。如果该表达式为 true,则执行从第 16 行开始的内部if语句。但是,如果该表达式的值为 false,则程序跳转到第 25 行,执行外部 else 块中的语句。在调试使用嵌套 if-else 语句的程序时,重要的是要知道哪个 if 语句与 else 语句一起使用。正确匹配每个 else 与 if 的规则是这样的:一个 else 匹配与其最近的上一个 if 语句,并且该 if 语句没有自己的 else。当语句正确缩进时,这更容易看出来。
图 2 快速识别嵌套 if-else 语句中 if 和 else 的匹配
图 2 显示了类似于此程序第 14〜28 行的代码。它说明了每个 else 如何找到匹配的 if。这些视觉线索很重要,因为嵌套 if 语句可能非常长而复杂。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算