C++ 核心知识点汇总(第三日)——分支结构(if / switch / 三元运算符)
2026最新版 · 零基础到进阶全覆盖
今天我们进入C++程序控制流的核心篇——分支结构。
掌握分支结构后,你就能写出真正的“会判断、会选择”的程序,这是所有复杂逻辑的基础。
一、分支结构总览(思维导图)
程序流程控制
├── 顺序结构(默认)
├── 分支结构(今天)
│ ├── if 单分支
│ ├── if-else 双分支
│ ├── if-else if-else 多分支
│ ├── switch 多分支(整数/字符)
│ └── 三元运算符(表达式级分支)
└── 循环结构(明天)
二、if 语句(最常用)
1. 单分支 if
#include <iostream>
using namespace std;
int main() {
int score;
cout << "输入成绩: ";
cin >> score;
if (score >= 60) {
cout << "及格!" << endl;
}
return 0;
}
2. 双分支 if-else
if (score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
3. 多分支 if-else if-else(推荐写法)
if (score >= 90) {
cout << "优秀" << endl;
} else if (score >= 80) {
cout << "良好" << endl;
} else if (score >= 70) {
cout << "中等" << endl;
} else if (score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
重要规则:
- 条件必须是布尔表达式(结果为 true/false)
- 多个
else if时,从上到下依次判断,满足一个就不再往下走 - 建议每个分支都用大括号
{},防止悬挂 else 问题
三、switch 语句(多分支神器)
int level;
cout << "输入等级(1-5): ";
cin >> level;
switch (level) {
case 1:
cout << "新手" << endl;
break; // 必须加 break!
case 2:
cout << "入门" << endl;
break;
case 3:
cout << "熟练" << endl;
break;
case 4:
case 5: // 多个case共用同一段代码
cout << "高手" << endl;
break;
default:
cout << "无效等级" << endl;
}
switch 使用要点(重点背诵):
| 项目 | 规则说明 |
|---|---|
| 表达式类型 | 只能是 整数(int、char、enum) |
| case 值 | 必须是常量,不能是变量 |
| break | 必须手动加,否则穿透执行 |
| default | 可省略,建议加上 |
2026 新特性:C++17 后 switch 支持 [[fallthrough]] 明确声明有意穿透。
四、三元运算符(表达式级 if)
int a = 10, b = 20;
int max = (a > b) ? a : b; // 经典写法
// 嵌套三元(不推荐太深)
string result = (score >= 90) ? "优秀" : (score >= 60 ? "及格" : "不及格");
什么时候用三元?
- 赋值语句中需要根据条件选值
- 简单判断返回不同结果
- 复杂逻辑请用 if-else,可读性更好
五、实战综合案例(学生成绩评级系统)
#include <iostream>
using namespace std;
int main() {
double score;
cout << "请输入成绩(0-100): ";
cin >> score;
if (score < 0 || score > 100) {
cout << "成绩输入错误!" << endl;
return 0;
}
char grade;
switch (static_cast<int>(score / 10)) { // 90~100 → 9 或 10
case 10:
case 9: grade = 'A'; break;
case 8: grade = 'B'; break;
case 7: grade = 'C'; break;
case 6: grade = 'D'; break;
default: grade = 'F';
}
cout << "成绩等级: " << grade << endl;
return 0;
}
六、易错点 & 面试高频题
- 悬挂 else(经典陷阱)
if (x > 0)
if (y > 0)
cout << "A";
else
cout << "B"; // 实际属于内层 if!
解决:永远加大括号 {}。
- switch 忘记 break → 穿透执行(面试常考)
- if 条件写成赋值:
if (a = 5)永远为 true! - 浮点数不能直接用 switch(必须转 int)
七、今日作业(建议立刻动手)
- 写一个程序:输入月份(1-12),输出对应季节(春夏秋冬)
- 写一个成绩转换器:输入百分制,输出 A/B/C/D/F + 评语
- 用三元运算符实现:输入两个数,输出较大值和较小值
提交方式:把代码贴在评论区,我会逐个点评!
明天预告(第四日):《C++ 核心知识点汇总 —— 循环结构(for / while / do-while)》
今天的内容你掌握了吗?
有任何不明白的地方(if-else if 逻辑、switch 穿透、三元嵌套等),直接在评论区提问,我立刻解答!
把这篇文章收藏 + 转发给正在学C++的小伙伴,一起打好编程基础!💪
(本文所有代码均在 VS2022 + GCC 14.2 环境下实测通过,符合 C++17/20 标准)