Course playlist
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;
}
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;
}
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;
}
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";
}
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";
}
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) {
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;
}
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;
}
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处理更复杂的条件关系 - 注意条件的顺序,更具体的条件应该放在前面
- 使用
{}明确代码块范围,避免错误 - 区分
=(赋值)和==(比较)
| 题目 | 对/错/率 | 难度 | 记录 | 通过 |
|---|
| 姓名 | 分数 | 提交时间 | 操作 |
|---|