信息技术2026年1月浙江选考
第 14 题
答案与解析
第(1)小题
参考答案
2
发送必须同时满足两个条件:当前状态码连续出现3次,且与最近已发送的状态码不同。每次发送后,要立即更新“最近已发送状态码”,不能始终与初始值1比较。
| 序列位置 | 连续状态码段 | 本段开始时最近已发送状态码 | 发送情况 | 本段结束时最近已发送状态码 |
|---|---|---|---|---|
| 1~3 | 0,0,0 | 1 | 第3个0出现时发送0 | 0 |
| 4 | 2 | 0 | 只连续出现1次,不发送 | 0 |
| 5~6 | 0,0 | 0 | 连续不足3次,且与最近已发送码相同,不发送 | 0 |
| 7~9 | 1,1,1 | 0 | 第3个1出现时发送1 | 1 |
| 10 | 0 | 1 | 只连续出现1次,不发送 | 1 |
位置4的2已中断前面的连续0,位置5~6的两个0不能与位置1~3的0累计。两次发送分别发生在位置3、9,故发送次数为2。
第(2)小题
参考答案
code=0
code != sent
cnt+=1
程序分析
sent=last =-1
#获取k值,代码略
while True:
#获取温度数据保存到变量t中,代码略
...sent和last初值均为-1,而合法状态码只有0、1、2,因此-1可表示尚无状态记录。程序每轮获取温度后生成状态码,按条件判断是否发送,再更新本轮记录,延时后继续下一轮。
①
if t>=35:
code = 2
elif t > 15:
code = 1已知分支分别处理t≥35和15<t<35两种情况;t≤15时,两个分支均不执行。
if ②:
if code != last:
cnt = 1
else:
③
if cnt == k:
#发送状态码code,代码略
sent = code空②控制计数和发送判断。进入该分支后,code与last不同时执行cnt=1,相同时执行空③;cnt达到k时发送code,并令sent=code。因此sent保存最近一次实际发送的状态码。
last = code
#延时1分钟,代码略last=code位于空②控制的分支之外,每轮都会执行。因此下一轮使用last时,它保存的是上一轮生成的状态码,可用于判断当前连续段是否中断。
填空分析
①
题干规定t≤15时状态码为0,应在温度分支之前设置默认值:
code=0
该赋值在循环内每轮执行,避免低温时沿用上一轮的状态码。t=15时保留0;t=35时由已有分支覆盖为2。
②
只有当前状态码与最近已发送码不同,才需要进入计数和发送判断,故填:
code != sent
不能用code != last代替:连续出现相同状态码时,仍需累计次数,而last只记录上一轮生成值。
③
进入else说明code与上一轮相同,应将连续次数加1:
cnt+=1
首次循环时,合法状态码与last的初值-1不同,会先执行cnt=1。若因code等于sent而跳过计数,last仍更新;之后遇到不同于sent的新状态码时,连续段从1重新计数。
