多层条件判断 —— else配对规则与执行流程
2021年真题 · 程序填空
答案解析 · 二分查找
函数参数:传入待查找的整型数组
highKey初始化为数组最后元素下标
计算中间元素下标
未找到时返回-1表示查找失败
scanf传入value的地址
二分查找要求数组有序,每次比较中间元素,缩小一半搜索范围
if 语句嵌套 · 核心规则
嵌套的if语句从外层到内层依次判断条件。外层条件为真,才执行内层if判断。
if语句可以多层嵌套,但层数过多会降低代码可读性。建议通过合理缩进保持清晰。
每个else只与最近的前面的未配对if配对,与书写格式(缩进)无关!
{} 明确配对关系。练习1 · 程序分析结果题
① if(a) → a=5,非零为真,进入外层if
② a++>5 → 先比较5>5为假,后a变为6
③ else → 与最近的 if(a++>5) 配对
④ 执行 b-- → b从0变为-1
练习2 · 程序填空
if分支赋值y=1,对应x>0的情况。
else分支处理x<0的情况,赋值y=-1。
练习3 · 程序分析结果题
| 步骤 | 操作 | a | b |
|---|---|---|---|
| 初始 | — | 123 | 324 |
| ① | a<b → 123<324 真 | 123 | 324 |
| ② | if(a) → 123≠0 真 | 123 | 324 |
| ③ | 执行 b++ | 123 | 325 |
练习4 · 程序改错
错误:main()
改正:int main()
C语言标准要求main函数需有明确返回类型int
错误:if(a+b<c||...)
改正:if(a+b<=c||...)
两边之和等于第三边时也不能构成三角形,应使用 ≤
高频陷阱 · Dangling Else
⚠️ 缩进会误导你认为else与外层if(a)配对
✓ else总是与最近的未配对if配对,与缩进无关
知识点2 · 完
① 嵌套if从外到内依次判断
② else与最近的未配对if配对(高频考点)
③ 使用花括号避免悬空else问题
④ a++先取值后自增,注意运算顺序
下一篇:知识点3 switch语句 →