L4 - 条件分支与逻辑运算
L4 - 条件分支与逻辑运算
🎯 教学目标
- 掌握多条件判断的嵌套写法
- 理解逻辑运算符的优先级规则
- 能处理复合条件判断问题
- 应用短路运算优化代码逻辑
🔑 核心知识点
多条件判断模板
1 | // 三分支温度预警系统 |
执行流程解析:
- 严格顺序检查条件
- 首个满足条件的分支执行后立即退出
else if
本质是嵌套的if
语句的语法糖- 推荐使用大括号明确作用域,避免悬空else问题
逻辑运算符优先级表
运算符 | 描述 | 优先级 | 结合性 |
---|---|---|---|
! | 逻辑非 | 3 | 右到左 |
&& | 逻辑与 | 11 | 左到右 |
|| | 逻辑或 | 12 | 左到右 |
经典案例解析:
1 | if(a > 5 || b < 3 && c == 10) |
⚡ 短路运算深度解析
短路机制示意图
1 | A && B → 当A为false时,B不执行 |
实际应用案例:
1 | // 安全指针访问 |
性能优化实验
1 | bool funcA() { /* 耗时操作 */ } |
🕹️ 互动案例系统
闰年判断器(ISO标准)
1 | bool isLeapYear(int year) { |
测试用例集:
年份 | 预期结果 | 测试要点 |
---|---|---|
2000 | true | 世纪闰年 |
1900 | false | 世纪非闰年 |
2020 | true | 普通闰年 |
2021 | false | 平年 |
成绩等级转换系统
1 | char getGrade(int score) { |
条件覆盖分析:
- 边界值测试:89,90,0,100
- 非法值处理:负分、超过100分
- 数据类型验证:浮点数输入处理
💣 易错点详解
运算符优先级陷阱
1 | if(a & 1 == 0) // 实际解析:a & (1 == 0) |
浮点数比较危机
1 | double d = 0.1 + 0.2; |
悬空else问题
1 | if(a > 0) |
🛠️ 调试技巧
条件追踪法
1 |
|
真值表验证法
A | B | A&&B | A||B | !A |
---|---|---|---|---|
0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 0 |
应用场景:
- 验证复杂逻辑表达式的所有可能情况
- 生成测试用例确保条件覆盖
🎓 教学提示
个人所得税计算器实现要点
- 税率区间处理:
1 | double tax = 0; |
- 精度处理方法:
- 使用
round(tax*100)/100
进行四舍五入 - 输出时使用
fixed << setprecision(2)
电梯调度系统逻辑框架
1 | int current = 5; // 当前楼层 |
🏋️ 配套练习
-
智能闰年检测
- 输入:年份(1-9999)
- 输出:
- 闰年判断结果
- 带世纪年说明(如2000是世纪闰年)
-
三角形检察官
- 输入:三个边长
- 输出:
- 类型(普通/等腰/等边)
- 是否直角三角形(误差<0.001)
-
自动售票机系统
- 输入:票价、投入金额
- 输出:
- 应找零钱(优先用大面额)
- 示例:
输入:46 100
输出:
50元×1
1元×4
-
个人所得税计算器
- 规则:
1
2
3
40-5000:0%
5000-8000:3%
8000-17000:10%
17000-30000:20% - 输入:月收入
- 输出:应纳税额(精确到分)
- 规则:
-
电梯调度系统
- 输入:当前楼层,目标楼层
- 输出:
- 运行方向(上行/下行/停留)
- 预计到达时间(每层2秒)
- 超载检测(假设载重≤1000kg)
评论