信息技术来源:浙江省县域教研联盟高三年级5月高考模拟考试
第 11 题
答案与解析
本题解析
参考答案
C
程序分析
stk = [0] * len(a)
top, sum_val, min_avg = -1, 0, 8
for i in a:
...程序先创建与 a 等长的列表 stk,将 top、sum_val、min_avg 分别初始化为 −1、0、8,再用 i 依次读取 a 中的每个元素。每轮先更新 stk 中的有效元素,再计算平均值。
if top != -1 and abs(i - stk[top]) < k: # abs函数求绝对值
sum_val -= stk[top]
top -= 1
else:
top += 1
stk[top] = i
sum_val += i满足条件时,程序减去 stk[top] 并将 top 减1;否则先将 top 加1,再把当前元素 i 写入 stk[top] 并累加到 sum_val。写入和删除都发生在有效区的末端,因此 stk 模拟栈,top 是栈顶下标,−1 表示空栈,sum_val 记录栈内元素之和。
栈非空且当前元素与栈顶元素的差的绝对值小于 k 时,原栈顶出栈,当前元素不入栈;其余情况将当前元素入栈。每轮最多出栈一次。
if top != -1:
avg = sum_val / (top + 1)
if avg < min_avg:
min_avg = avg非空栈的有效下标为0到 top,共 top+1 个元素,因此 avg 是当前栈内元素的平均值。只有 avg 小于 min_avg 时才更新,min_avg 保留各轮非空栈平均值与初值8中的最小值;空栈时跳过计算,保留此前结果。
选项分析
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_05_G3_xianyujiaoyan_q011
