【C++】零基础入门 · 第 3 节:条件判断(if、switch)

程序的世界和现实一样,充满了"如果......就......"的选择。比如:如果余额足够就扣款,如果密码正确就登录成功。这一节我们学习 C++ 中两个最常用的条件判断工具:if 和 switch。

1. if 语句:最基础的条件判断

1.1 基本语法

cpp 复制代码
if (条件) {
    // 条件为 true 时执行的代码
}

举个例子,判断一个人是否成年:

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int age = 20;
    if (age >= 18) {
        cout << "你已成年" << endl;
    }
    return 0;
}

age >= 18 是一个布尔表达式,结果要么是 true,要么是 false。当结果为 true 时,花括号里的代码才会执行。

1.2 if-else:两种情况

cpp 复制代码
if (条件) {
    // 条件为 true
} else {
    // 条件为 false
}

改进上面的例子:

cpp 复制代码
if (age >= 18) {
    cout << "你已成年" << endl;
} else {
    cout << "你还未成年" << endl;
}

1.3 if-else if-else:多种情况

当需要判断多个条件时,用 else if 串联起来:

cpp 复制代码
#include <iostream>
using namespace std;

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

    if (score >= 90) {
        cout << "优秀" << endl;
    } else if (score >= 80) {
        cout << "良好" << endl;
    } else if (score >= 60) {
        cout << "及格" << endl;
    } else {
        cout << "不及格" << endl;
    }
    return 0;
}

注意判断顺序很重要------这里从高到低判断,所以 score >= 80 的时候,说明前面 score >= 90 已经不成立了,成绩一定在 80 到 89 之间。

1.4 条件表达式中常用的运算符

  • == 等于(注意不是 =,= 是赋值)
  • != 不等于
  • > 大于、< 小于
  • >= 大于等于、<= 小于等于
  • && 逻辑与(两个条件都满足)
  • || 逻辑或(至少一个条件满足)
  • ! 逻辑非(取反)

例如,判断一个年份是否为闰年:

cpp 复制代码
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
    cout << year << " 是闰年" << endl;
}

2. switch 语句:精确匹配的多分支

当你需要根据一个变量的精确值来做不同处理时,switch 比一长串 if-else if 更清晰。

2.1 基本语法

cpp 复制代码
switch (表达式) {
    case 值1:
        // 表达式等于值1时执行
        break;
    case 值2:
        // 表达式等于值2时执行
        break;
    default:
        // 都不匹配时执行
}

2.2 实例:根据数字输出星期

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int day;
    cout << "请输入 1-7 的数字:";
    cin >> day;

    switch (day) {
        case 1:
            cout << "星期一" << endl;
            break;
        case 2:
            cout << "星期二" << endl;
            break;
        case 3:
            cout << "星期三" << endl;
            break;
        case 4:
            cout << "星期四" << endl;
            break;
        case 5:
            cout << "星期五" << endl;
            break;
        case 6:
            cout << "星期六" << endl;
            break;
        case 7:
            cout << "星期日" << endl;
            break;
        default:
            cout << "输入无效" << endl;
    }
    return 0;
}

2.3 break 不能忘

每个 case 后面的 break 非常重要。如果不写 break,程序会"穿透"到下一个 case 继续执行,这通常不是你想要的。看一个故意利用穿透的例子:

cpp 复制代码
switch (month) {
    case 1: case 3: case 5: case 7:
    case 8: case 10: case 12:
        cout << "31 天" << endl;
        break;
    case 4: case 6: case 9: case 11:
        cout << "30 天" << endl;
        break;
    case 2:
        cout << "28 或 29 天" << endl;
        break;
    default:
        cout << "无效月份" << endl;
}

这里故意让多个 case 共享同一段代码,利用穿透来简化逻辑。但这种情况不多见,日常使用记得加 break。

3. if 和 switch 怎么选

简单原则:

  • 比较范围(大于、小于、区间)→ 用 if
  • 精确匹配(等于某个具体值)→ 用 switch
  • switch 只能用于整数类型(int、char、enum),不能用于浮点数或字符串

实际开发中 if 用得更多,switch 在处理枚举状态、菜单选项等场景下比较方便。

4. 嵌套条件判断

条件判断可以嵌套,但不建议超过三层,否则代码会变得难以阅读。如果发现嵌套太深,可以考虑用函数拆分逻辑,或者用提前 return 来减少嵌套层级。

5. 小结

这一节我们学了两种条件判断方式:if 适合范围判断和复杂条件组合,switch 适合精确值匹配。重点掌握 if-else if-else 的多分支写法和 switch 的 break 用法。下一节我们将学习循环结构,让程序能够重复执行某些操作。

相关推荐
怕浪猫11 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i12 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J13 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
小师兄吃牛肉13 小时前
C语言篇:宏
c语言·开发语言
郑同学的笔记13 小时前
【c++随笔28】strcmp 和 memcmp对比
开发语言·c++
随意起个昵称13 小时前
【背包dp】输出方案路径
c++·动态规划
言乐614 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
weixin_3077791314 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
kakakahahahaha14 小时前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
朝朝辞暮i14 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法