C++ if选择结构

梦想不会自己发光,真正闪耀的是那个为梦狂奔的你。献给知行的孩子们!(Eric.He著)


  本教程将从 C++ 选择结构的核心概念、if选择结构的不同形式(单分支、双分支、多分支、嵌套)到三目运算符,全面拆解 C++ 条件判断的核心用法,帮助你掌握这一基础且重要的流程控制工具。

教程目录导航

一、程序的控制结构

是指程序执行过程中控制指令执行顺序的机制。根据结构化程序设计理论,‌任何复杂程序都可以由顺序、选择、循环三种控制结构组合而成。

1.1 顺序结构概述

程序由若干条语句组成,各语句按照顺序一条一条地执行,这种程序结构称为顺序结构

在解决现实世界的问题中,不可避免地遇到需要进行选择或需要循环工作的情况。这时,程序执行的顺序需要发生变化,而非从前向后逐一执行。因此,程序中除了顺序结构以外,通常还有选择结构、循环结构以及转移机制。

1.2 选择结构概述

选择结构也称为分支结构,它允许程序根据条件表达式的真假,选择执行不同的代码块,让程序具备“判断决策”的能力。

c++选择类语句包含if语句和switch语句,用它们来解决实际应用中按不同的情况进行不同处理的问题。如:

选择结构示例:


// 示例1:if else 多分支判断成绩等级
#include <iostream>
using namespace std;

int main() {
    int score;
    cout << "请输入成绩:";
    cin >> score;

    // 选择结构:根据分数判断等级
    if (score >= 90) {
        cout << "等级:优秀" << endl;
    }
    if (score >= 80) {
        cout << "等级:良好" << endl;
    }
    if (score >= 60) {
        cout << "等级:及格" << endl;
    }
    if (score < 60 {
        cout << "等级:不及格" << endl;
    }

    return 0;
}
            

1.3 循环结构概述

循环结构,它允许程序根据条件表达式的真假,重复执行某段代码,让程序具备“重复处理”的能力。

c++循环类语句包含for语句、while和do while语句,用它们来解决实际应用中需要重复处理的问题。如:

循环结构示例:


// 示例1:while循环 计算1~100的和
#include <iostream>
using namespace std;

int main() {
    int sum = 0;    // 存储总和
    int i = 1;      // 循环变量
    
    // 条件为真时重复执行
    while (i <= 100) {
        sum += i;   // 累加
        i++;        // 循环变量自增
    }
    
    cout << "1~100的和为:" << sum << endl;
    return 0;
}
            

二、if选择结构

2.1 if单分支结构

if单分支结构:仅当条件为真时,执行指定代码块;条件为假时,跳过该代码块,继续执行后续代码。

语法格式1:


if (条件表达式) 
    语句; // 条件为真时执行语句
// 无论条件真假,都会执行的后续代码
        

语法格式2:


if (条件表达式) {
    // 条件为真时执行的代码块
    语句1;
    语句2;
    // ... 更多语句
}
// 无论条件真假,都会执行的后续代码
        

注意:若代码块只有一条语句,{} 可省略,但推荐始终保留,避免逻辑错误。

示例:判断是否成年


#include <iostream>
using namespace std;

int main() {
    int age = 18;
    
    // if单分支:判断是否成年
    if (age >= 18) {
        cout << "你已成年,可以进入网吧!" << endl;
        cout << "请出示你的身份证进行登记。" << endl;
    }
    
    // 后续代码(无论是否成年都会执行)
    cout << "程序执行完毕!" << endl;
    
    return 0;
}
        

运行结果:

你已成年,可以进入网吧!
请出示你的身份证进行登记。
程序执行完毕!
        

2.2 if else双分支结构

if else双分支结构:条件为真时执行if代码块,条件为假时执行else代码块,二者必选其一。

语法格式:


if (条件表达式) {
    // 条件为真时执行的代码块
    语句1;
} else {
    // 条件为假时执行的代码块
    语句2;
}
// 执行完分支后,继续执行的后续代码
        

示例:判断奇偶数


#include <iostream>
using namespace std;

int main() {
    int num = 7;
    
    // if else双分支:判断奇偶数
    if (num % 2 == 0) { // 取模运算:余数为0则是偶数
        cout << num << " 是偶数!" << endl;
    } else {
        cout << num << " 是奇数!" << endl;
    }
    
    cout << "判断完成!" << endl;
    
    return 0;
}
        

运行结果:

7 是奇数!
判断完成!
        

2.3 else if多分支结构

else if多分支结构:用于处理多个条件的场景,程序会从上到下依次判断条件,满足第一个条件则执行对应代码块,后续条件不再判断。

语法格式:


if (条件表达式1) {
    // 条件1为真时执行
    语句1;
} else if (条件表达式2) {
    // 条件1为假,条件2为真时执行
    语句2;
} else if (条件表达式3) {
    // 条件1、2为假,条件3为真时执行
    语句3;
} else {
    // 所有条件都为假时执行(可选)
    语句4;
}
        

示例:根据分数判断成绩等级


#include <iostream>
using namespace std;

int main() {
    int score = 85;
    
    // else if多分支:判断成绩等级
    if (score >= 90 && score <= 100) {
        cout << "成绩等级:优秀" << endl;
    } else if (score >= 80 && score < 90) {
        cout << "成绩等级:良好" << endl;
    } else if (score >= 60 && score < 80) {
        cout << "成绩等级:及格" << endl;
    } else if (score >= 0 && score < 60) {
        cout << "成绩等级:不及格" << endl;
    } else {
        cout << "输入的分数无效!" << endl;
    }
    
    return 0;
}
        

运行结果:

成绩等级:良好
        

2.4 嵌套if结构

嵌套if结构:在if/else代码块中再次嵌套if/else结构,用于处理多层条件判断的场景(如先判断性别,再判断年龄)。

语法格式:


if (外层条件) {
    // 外层条件为真
    if (内层条件1) {
        // 内层条件1为真时执行
        语句1;
    } else {
        // 内层条件1为假时执行
        语句2;
    }
} else {
    // 外层条件为假
    语句3;
}
        

示例:判断是否符合征兵条件


#include <iostream>
using namespace std;

int main() {
    char gender = 'M'; // M:男,F:女
    int age = 20;
    
    // 嵌套if:判断征兵条件
    if (gender == 'M') { // 外层:判断性别为男
        if (age >= 18 && age <= 22) { // 内层:判断年龄
            cout << "符合男性征兵年龄条件,可以报名!" << endl;
        } else {
            cout << "男性年龄不符合征兵条件!" << endl;
        }
    } else if (gender == 'F') { // 外层:判断性别为女
        if (age >= 18 && age <= 20) { // 内层:判断年龄
            cout << "符合女性征兵年龄条件,可以报名!" << endl;
        } else {
            cout << "女性年龄不符合征兵条件!" << endl;
        }
    } else {
        cout << "性别输入错误!" << endl;
    }
    
    return 0;
}
        

运行结果:

符合男性征兵年龄条件,可以报名!
        

三、三目运算符

3.1 三目运算符定义

三目运算符(条件运算符)是 C++ 中唯一的三元运算符,语法格式为:条件表达式 ? 表达式1 : 表达式2,可视为 if else 双分支的简化形式。

3.2 三目运算符使用

示例1:求两个数的最大值


#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 20;
    
    // 三目运算符:求最大值
    int maxNum = (a > b) ? a : b;
    cout << "最大值是:" << maxNum << endl;
    
    return 0;
}
            

运行结果:

最大值是:20
            

示例2:判断是否及格


#include <iostream>
#include <string>
using namespace std;

int main() {
    int score = 55;
    
    // 三目运算符:返回字符串
    string result = (score >= 60) ? "及格" : "不及格";
    cout << "成绩:" << score << ",结果:" << result << endl;
    
    return 0;
}
            

运行结果:

成绩:55,结果:不及格
            

3.3 三目运算符与if else对比

特性 三目运算符 if else双分支
语法形式 简洁,一行代码完成 结构化,代码块形式
返回值 有返回值,可直接赋值给变量 无返回值,需手动赋值
执行逻辑 仅支持简单表达式 支持复杂代码块(多行语句)
可读性 简单场景可读性高,复杂场景差 结构化强,复杂场景可读性高
适用场景 简单的二选一赋值场景 所有双分支场景(尤其是多行代码)

示例:相同逻辑的三目运算符与if else对比


// 三目运算符
int num = 8;
string res = (num % 2 == 0) ? "偶数" : "奇数";

// 等价的if else
int num = 8;
string res;
if (num % 2 == 0) {
    res = "偶数";
} else {
    res = "奇数";
}
            

四、典型应用场景

五、注意事项

六、总结

本教程从选择结构的核心概念到if结构的不同形式,再到三目运算符,全面拆解了C++条件判断的核心用法。掌握选择结构的运用,是实现程序灵活逻辑的重要基础。


返回顶部