C++ 核心知识点汇总(第三日)(分支结构)

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;
}

六、易错点 & 面试高频题

  1. 悬挂 else(经典陷阱)
   if (x > 0)
       if (y > 0)
           cout << "A";
   else
       cout << "B";     // 实际属于内层 if!

解决:永远加大括号 {}

  1. switch 忘记 break → 穿透执行(面试常考)
  2. if 条件写成赋值if (a = 5) 永远为 true!
  3. 浮点数不能直接用 switch(必须转 int)

七、今日作业(建议立刻动手)

  1. 写一个程序:输入月份(1-12),输出对应季节(春夏秋冬)
  2. 写一个成绩转换器:输入百分制,输出 A/B/C/D/F + 评语
  3. 用三元运算符实现:输入两个数,输出较大值和较小值

提交方式:把代码贴在评论区,我会逐个点评!


明天预告(第四日):《C++ 核心知识点汇总 —— 循环结构(for / while / do-while)》

今天的内容你掌握了吗?
有任何不明白的地方(if-else if 逻辑、switch 穿透、三元嵌套等),直接在评论区提问,我立刻解答!

把这篇文章收藏 + 转发给正在学C++的小伙伴,一起打好编程基础!💪

(本文所有代码均在 VS2022 + GCC 14.2 环境下实测通过,符合 C++17/20 标准)

文章已创建 4992

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部