C++ 多层分支结构教程

学习 if-else if-else 和嵌套分支的使用

什么是多层分支?

当程序需要根据多个条件做出不同决策时,就需要使用多层分支结构。

就像生活中的选择:如果...否则如果...否则...

多层分支流程图:

条件1 → 执行代码1

↓ 不满足

条件2 → 执行代码2

↓ 不满足

条件3 → 执行代码3

↓ 都不满足

执行默认代码

if-else if-else 结构

用于处理多个互斥的条件

// 示例1:成绩等级判断
int score = 85;

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;
}
注意: else if 的条件是按顺序检查的,一旦某个条件满足,后面的条件就不会再检查了。

嵌套 if 语句

在一个 if 语句内部再包含另一个 if 语句

// 示例2:年龄和身份判断
int age = 16;
bool isStudent = true;

if (age < 18) {
    cout << "未成年人" << endl;
    
    // 嵌套的 if 语句
    if (isStudent) {
        cout << "学生票价: 5元" << endl;
    } else {
        cout << "儿童票价: 8元" << endl;
    }
    
} else {
    cout << "成年人" << endl;
    cout << "全价: 10元" << endl;
}

实际应用示例

// 示例3:计算器程序
double num1, num2;
char op;

cout << "请输入算式 (如: 5 + 3): ";
cin >> num1 >> op >> num2;

if (op == '+') {
    cout << "结果: " << num1 + num2 << endl;
} else if (op == '-') {
    cout << "结果: " << num1 - num2 << endl;
} else if (op == '*') {
    cout << "结果: " << num1 * num2 << endl;
} else if (op == '/') {
    if (num2 != 0) {
        cout << "结果: " << num1 / num2 << endl;
    } else {
        cout << "错误:除数不能为0!" << endl;
    }
} else {
    cout << "错误:不支持的运算符!" << endl;
}

测试题

题目1:下面的代码输出什么?

int x = 15;
if (x > 10) {
    cout << "A";
} else if (x > 5) {
    cout << "B";
} else {
    cout << "C";
}

答案:A

因为 x=15 满足第一个条件 x>10,所以输出 A,后面的条件不再检查。

题目2:下面的代码输出什么?

int a = 8, b = 12;
if (a > 5) {
    if (b > 10) {
        cout << "X";
    } else {
        cout << "Y";
    }
} else {
    cout << "Z";
}

答案:X

因为 a=8>5 满足外层条件,进入内层判断 b=12>10 也满足,所以输出 X。

题目3:找出代码中的错误

int score = 75;
if (score = 100) {
    cout << "满分";
} else if (score >= 60) {
    cout << "及格";
} else {
    cout << "不及格";
}

答案:第一行的条件写错了

应该用 == 而不是 == 是赋值运算符,== 才是比较运算符。

错误:if (score = 100) 会把 score 赋值为 100,然后条件永远为真

正确:if (score == 100)

编程练习

练习1:季节判断

编写程序,输入月份(1-12),输出对应的季节:

  • 3-5月:春季
  • 6-8月:夏季
  • 9-11月:秋季
  • 12月、1月、2月:冬季
int month;
cout << "请输入月份 (1-12): ";
cin >> month;

if (month >= 3 && month <= 5) {
    cout << "春季" << endl;
} else if (month >= 6 && month <= 8) {
    cout << "夏季" << endl;
} else if (month >= 9 && month <= 11) {
    cout << "秋季" << endl;
} else if (month == 12 || month == 1 || month == 2) {
    cout << "冬季" << endl;
} else {
    cout << "月份输入错误!" << endl;
}

练习2:登录系统

编写一个简单的登录验证程序:

  • 预设用户名 "admin",密码 "123456"
  • 如果用户名和密码都正确:显示"登录成功"
  • 如果用户名正确但密码错误:显示"密码错误"
  • 如果用户名错误:显示"用户不存在"
string username, password;

cout << "请输入用户名: ";
cin >> username;
cout << "请输入密码: ";
cin >> password;

if (username == "admin") {
    if (password == "123456") {
        cout << "登录成功!" << endl;
    } else {
        cout << "密码错误!" << endl;
    }
} else {
    cout << "用户不存在!" << endl;
}

总结

重点回顾:
  • 使用 if-else if-else 处理多个互斥条件
  • 使用嵌套 if 处理更复杂的条件关系
  • 注意条件的顺序,更具体的条件应该放在前面
  • 使用 {} 明确代码块范围,避免错误
  • 区分 =(赋值)和 ==(比较)
题目 对/错/率 难度 记录 通过
姓名 分数 提交时间 操作