梦想不会自己发光,真正闪耀的是那个为梦狂奔的你。献给知行的孩子们!(Eric.He著)
本教程将从 C++ 选择结构的核心概念、if选择结构的不同形式(单分支、双分支、多分支、嵌套)到三目运算符,全面拆解 C++ 条件判断的核心用法,帮助你掌握这一基础且重要的流程控制工具。
是指程序执行过程中控制指令执行顺序的机制。根据结构化程序设计理论,任何复杂程序都可以由顺序、选择、循环三种控制结构组合而成。
程序由若干条语句组成,各语句按照顺序一条一条地执行,这种程序结构称为顺序结构。
在解决现实世界的问题中,不可避免地遇到需要进行选择或需要循环工作的情况。这时,程序执行的顺序需要发生变化,而非从前向后逐一执行。因此,程序中除了顺序结构以外,通常还有选择结构、循环结构以及转移机制。
选择结构也称为分支结构,它允许程序根据条件表达式的真假,选择执行不同的代码块,让程序具备“判断决策”的能力。
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;
}
循环结构,它允许程序根据条件表达式的真假,重复执行某段代码,让程序具备“重复处理”的能力。
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单分支结构:仅当条件为真时,执行指定代码块;条件为假时,跳过该代码块,继续执行后续代码。
if (条件表达式)
语句; // 条件为真时执行语句
// 无论条件真假,都会执行的后续代码
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;
}
运行结果:
你已成年,可以进入网吧!
请出示你的身份证进行登记。
程序执行完毕!
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 是奇数!
判断完成!
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;
}
运行结果:
成绩等级:良好
嵌套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;
}
运行结果:
符合男性征兵年龄条件,可以报名!
三目运算符(条件运算符)是 C++ 中唯一的三元运算符,语法格式为:条件表达式 ? 表达式1 : 表达式2,可视为 if else 双分支的简化形式。
表达式1 的结果;表达式2 的结果。
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 20;
// 三目运算符:求最大值
int maxNum = (a > b) ? a : b;
cout << "最大值是:" << maxNum << endl;
return 0;
}
运行结果:
最大值是:20
#include <iostream>
#include <string>
using namespace std;
int main() {
int score = 55;
// 三目运算符:返回字符串
string result = (score >= 60) ? "及格" : "不及格";
cout << "成绩:" << score << ",结果:" << result << endl;
return 0;
}
运行结果:
成绩:55,结果:不及格
| 特性 | 三目运算符 | 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++条件判断的核心用法。掌握选择结构的运用,是实现程序灵活逻辑的重要基础。