深耕专业教研,探索前沿技术
信息技术来源:诸暨市2026年5月高三诊断性考试

第 13 题

答案与解析

第(1)小题

参考答案

2

序列中的连续错误段为开头的0,0,0和末尾的0,0,0,0,中间被正确状态1隔开。两段的长度分别为3和4,均达到连续3次错误的条件,各计1次故障,共2次。

第(2)小题

参考答案
  1. count = 0

  2. flag == False and a[i] == 0

  3. k = end - start + 1

程序分析

n = len(a)  # 数组a中存放了某传感器24小时的验证数据
start = end = 0; i = 0
①
flag = False
while i < n:
    if ②:
        flag = True; start = i
    elif a[i] == 0:
        end = i
    elif flag == True and a[i] == 1:
        ③
        if k >= 3:
            count = count + 1
        flag = False
    i = i + 1

i从0开始,每轮增加1,依次处理数组中的验证数据。第一个分支执行时,将flag设为True,并把当前下标保存到start;若进入后面的a[i]==0分支,则把当前下标保存到end。

当flag为True且当前数据为1时,程序进入第三个分支,判断k是否达到3,满足时将count增加1,然后把flag恢复为False。结合题意,这里是在一段连续错误结束时判断是否计为故障,因此count记录累计故障次数,flag用于标记是否正在处理连续错误段。

连续错误段开始时需要记录start;同段后续的0由end记录其下标。对于长度至少为2的错误段,start、end分别对应这一段首尾两个0的位置。

if flag == True and end - start + 1 >= 3:
    count = count + 1
if count > 5:
    print("该线路需要检修!")

如果数组以0结束,最后一段不会遇到1,循环内的第三个分支便没有机会统计它。循环后的判断用flag检查是否还有未结束的错误段,并在长度达到3时补计一次。最后只有count>5才输出检修提示,累计恰好5次时不预警。

填空分析

①

后文每发现一处故障就执行count=count+1,因此count是故障计数器。遍历开始前尚未统计任何故障,应初始化为0,填写:

count = 0

②

该分支执行flag=True和start=i,应在一段连续错误的第一个0处进入。此时尚未处于错误段,flag为False,且当前数据a[i]为0,两个条件需同时满足,填写:

flag == False and a[i] == 0

进入错误段后flag为True,同段后续的0转入下一分支更新end,保留原来的起点start。

③

当前位置已遇到1,接下来用k>=3判断刚结束的错误段是否构成故障。错误段首尾下标都计入长度,因此由start到end共有end-start+1个元素,填写:

k = end - start + 1

若某段只有一个0,end尚未更新到这一段,仍不大于start,计算结果至多为1,不会误计为故障;长度至少为2时,end已更新为本段末尾下标,上式得到实际长度。