首页 > 编程笔记 > C++笔记 阅读:4

C++ if else语句用法详解(附带实例)

C++ 中的 if 语句用于对多分支情况进行判断,包括简单 if 语句、if else 语句和 else if 语句。

C++ if语句

if 语句的语法形式如下:
if(表达式)
    语句块;
其中,“表达式”一般为关系表达式,表示判断条件,其运算结果为真(true)或假(false)。如果条件成立,则表达式结果为真,执行下方的语句块;如果条件不成立,则表达式结果为假,直接跳过下方的语句块。

if 语句相当于汉语中的“如果……”。用流程图来表示 if 语句,如下图所示。


图 1 简单if语句流程图

【实例 1】判断输入的数是否为奇数。定义一个变量,用来输入一个数值。判断该数奇偶性的方法为:将该数与 2 求余,余数为 0 表示能被 2 整除,为偶数;余数不为 0 则说明为奇数。如果取余不为 0,就输出“The value is odd number”。
#include <iostream>
using namespace std;

int main()
{
    int iInput;
    cout << "Input a value:" << endl;
    cin >> iInput;  // 输入一个整型数
    if(iInput % 2 != 0)  // 如果该数不能被 2 整除
        cout << "The value is odd number" << endl;
}
运行结果为:

Input a value:
13
The value is odd number

用流程图描述实例 1 的执行过程,如下图所示:


图 2 实例 1 流程图

程序分以下两步执行:
使用 if 语句的注意事项如下:
1) 当 if 后的执行语句仅有一句时,可以将 if 条件判断和执行语句写在一行中。例如:
if(iInput%2!=0)  cout << "The value is odd number" << endl;
但不建议这么写,因为不便于阅读。

2) 当执行语句有多条,为复合语句时,需使用大括号括起来,形成执行语句块。例如:
if(iInput%2!=0){
    cout << "The value is odd number" << endl;
    //......
}

3) if 语句后不能添加英文分号(;),否则编译器会报错。例如:
if(i>100); // 书写错误
{......}

C++ if else语句

if else 语句使用 if 和 else 两个关键字,对不满足条件时的操作也做了说明。其语法形式如下:
if(表达式)
{
   语句块1;
}else{
    语句块2;
}
其中,“表达式”一般为关系表达式,表示判断条件,其运算结果为真或假(true 或 false)。表达式的值为真,则条件成立,执行语句块 1;表达式的值为假,则条件不成立,执行语句块 2。

注意,else 不能单独使用,必须和关键字 if 一起出现。

if else 语句相当于汉语里的“如果……否则……”。用流程图来表示if else语句,如下图所示。


图 3 if else语句流程图

【实例 2】根据分数判断成绩等级是否为 A。定义一个变量,用来输入分数。如果分数大于或等于 90,输出“It is A”,否则输出“It is not A”。具体代码如下:
#include <iostream>
using namespace std;

int main()
{
    int iInput;
    cin >> iInput;  // 输入学生分数
    if(iInput >= 90)  // 如果分数大于或等于 90 分
        cout << "It is A" << endl;
    else  // 否则,即如果分数小于 90 分
        cout << "It is not A" << endl;
}
用流程图描述实例 2 的执行过程,如下图所示:


图 4 实例 2 的流程图

用户输入一个数值,将该数值赋值给 iInput 变量,判断用户输入的数据是否大于或等于 90,如果条件成立,输出“It is A”,否则输出“It is not A”。

运行程序,结果为:
99
It is A

C++ else if语句

else if 语句可以对多个分支进行多次判断,每判断一次就缩小一定的检查范围。其语法形式如下:
if(表达式 1){
    语句块 1;
}
else if(表达式 2){
    语句块 2;
}
...
else if(表达式 m){
    语句块 m;
}
else{
    语句块 n;
}
其中,“表达式1”“表达式2”…“表达式m”均为关系表达式,表示判断条件,其运算结果为真或假(true 或 false)。如果表达式 1 为真,执行语句块 1;否则判断表达式 2,如果表达式 2 为真,就执行语句块 2;否则判断表达式 3……以此类推,如果表达式 m 也为假,就执行最后的语句块 n。

用流程图来表示 else if 判断语句,如下图所示:


图 5 else if语句流程图

【实例 3】根据成绩划分等级。某学校参照如下方式划分学生的成绩等级:
根据用户输入的成绩,输出与该成绩对应的等级。使用 else if 语句实现,具体代码如下:
#include <iostream>
using namespace std;

int main()
{
    int iInput;
    cin >> iInput;  // 输入学生分数
    if(iInput % 4 == 0)
    {
        if(iInput % 100 != 0)
            cout << "very good" << endl;
        else if(iInput % 400 == 0)
            cout << "good" << endl;
        else
            cout << "normal" << endl;
    }
    else
        cout << "failure" << endl;
}
运行结果为:

80
very good

程序中,首先要求用户输入一个整数,然后开始多分支判断:

注意,本例最后没有再使用 else 关键字进行判断。

C++ if语句的嵌套

前面介绍的 3 种 if 语句可以相互嵌套。例如,在 if 语句中嵌套 if else 语句,形式如下:
if(表达式 1)
{
    if(表达式 2)
        语句块 1;
    else
        语句块 2;
}

在 if else 语句中嵌套其他 if else 语句,形式如下:
if(表达式 1)
{
    if(表达式 2)
        语句块 1;
    else
        语句块 2;
}
else
{
    if(表达式 3)
        语句块 1;
    else
        语句块 2;
}

条件判断语句有多种嵌套方式,可以根据具体需要进行设计,但一定要注意逻辑关系的正确处理。

注意,当分支情况复杂,需要进行多重嵌套时,要格外小心,必须确保大括号成对出现,即代码中不能出现无法配对的 { 或 }。书写上,要注意代码层级,做好缩进,即同一层级的代码要保持同样的缩进。这样编写的代码才会结构清晰,阅读方便,逻辑上也更不容易出错。

【实例 3】判断是否是闰年。用 if 嵌套语句判断输入的年份是否为闰年。闰年的判断条件为:能被 4 整除但不能被 100 整除,或者能被 400 整除的年份都为闰年。具体代码如下:
#include <iostream>
using namespace std;

int main()
{
    int iYear;
    cout << "please input number" << endl;
    cin >> iYear;  // 输入年份
    if(iYear % 4 == 0)  // 如果年份能被 4 整除
    {
        if(iYear % 100 == 0)  // 如果年份能被 4 整除外,还能被 100 整除
        {
            if(iYear % 400 == 0)  // 如果年份能被 4、100 整除外,还能被 400 整除
                cout << "It is a leap year" << endl;
            else
                cout << "It is not a leap year" << endl;
        }
        else
            cout << "It is a leap year" << endl;
    }
    else
        cout << "It is not a leap year" << endl;  // 如果年份不能被 4 整除
}
运行结果为:

please input number
2025
It is not a leap year

本例先判断年份能否被 4 整除(iYear%4==0),如果不能整除,输出“It is not a leap year”;如果能整除,继续判断能否被 100 整除(iYear%100==0),如果不能整除,输出“It is a leap year”;如果能整除,继续判断能否被 400 整除(iYear%400==0),如果能整除,输出“It is a leap year”,不能整除,输出“It is not a leap year”。

使用逻辑运算符,可以简化判断是否是闰年的实例代码,用一条判断语句来完成。
#include <iostream>
using namespace std;

int main()
{
    int iYear;
    cout << "please input number" << endl;
    cin >> iYear;  // 输入年份
    if(iYear % 4 == 0 && iYear % 100 != 0 || iYear % 400 == 0)  // 如果年份能被 4 整除但不能被 100 整除,或者能被 400 整除
        cout << "It is a leap year" << endl;
    else  // 否则
        cout << "It is not a leap year" << endl;
}
运行结果为:

please input number
2024
It is a leap year

总结

在使用 if else 语句时,一定要注意,else 和 if 关键字必须成对出现,且遵守临近原则,即 else 关键字和距离最近的 if 语句构成一对。

初学者极易在多重 if 嵌套结构中弄混哪个 else 和哪个 if 是一对,从而导致错误。为了避免出错,一定要多用复合语句和“{}”,同时做好层级对应和缩进。

相关文章