软件工程 选择题 较难 ★ 精品

循环边界与循环不变式 — 软件工程选择题

软件构建 控制流与逻辑组织 AI 三重审校通过

题目
某非降序数组 a[1..n] 另设哨兵 a[0] = -∞、a[n+1] = +∞。下列伪代码求最后一个满足 a[i] ≤ x 的下标: lo ← 0; hi ← n while lo < hi: mid ← ⌊(lo + hi + 1)/2⌋ if a[mid] ≤ x: lo ← mid else: hi ← mid - 1 return lo 下列哪一项是该循环的循环不变式(每次迭代开始前均成立,并保证终止时返回值正确)? A. a[lo] ≤ x < a[hi] B. a[lo] ≤ x < a[hi+1] 且 lo = hi C. 0 ≤ lo ≤ hi ≤ n 且 a[lo] ≤ x < a[hi+1] D. 0 ≤ lo ≤ hi ≤ n 且 a[lo] > x ≥ a[hi+1]