内容正文:
浙江省江浙皖共同体2027届高三上一模10月联考
技术试题
考生须知:
1.本卷满分100分,考试时间90分钟;
2.答题前,在答题卷指定区域填写班级、姓名、考场、座位号及准考证号并核对条形码信息;
3.所有答案必须写在答题卷上,写在试卷上无效,考试结束后,只需上交答题卷。
第一部分 信息技术(共50分)
一、选择题(本大题共12题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
阅读下列材料,完成下面小题:
某校智慧图书馆上线智能馆藏管理系统。读者可通过手机APP查看馆藏记录和图书借阅热门榜单。馆内所有书架搭配层级LED指示灯,嵌入RFID读写器和天线,直接读取整层图书标签,对比后台馆藏位置,对书籍进行实时在位监控,错位自动预警,识别到异常后,自动发送短信通知管理员及时整理。
1. 下列关于该系统中数据与信息的说法,正确的是( )
A. 服务器存储的所有数据均来源于传感器
B. RFID标签存储的编号属于信息
C. 摄像头采集到的画面是结构化数据
D. 根据借阅记录生成热门榜单主要体现了信息的可加工处理性
2. 下列关于该系统支撑技术的说法,正确的是( )
A. 馆藏查询软件属于系统软件
B. 服务器接收到的数据长期存放在内存中
C. RFID智能书架属于射频识别技术的发射端
D. 移动端APP的运行依赖于终端设备的操作系统
3. 下列关于该系统功能与应用的描述,正确的是( )
A. 智能书架识别图书错位属于控制技术
B. 该系统最大的局限性是本身具有安全隐患
C. 系统根据借阅记录数据生成热门借阅榜单未应用人工智能
D. 读者通过手机号+验证码的方式登录APP属于系统的访问控制功能
4. 下列关于该系统网络技术的分析,不正确的是( )
A. 传感器与服务器之间可以采用有线通信方式
B. 读者手机查看馆藏书目,体现了网络资源共享
C. 管理员手机未连接图书馆局域网也能接收到短信提醒
D. 移动端APP与服务器之间的数据传输主要采用DHCP协议
5. 下列关于该系统安全与防护的做法,合理的是( )
A. 为方便使用登录方式设置为免验证登录
B. 定期导出借阅记录到外部存储设备作为备份
C. 关闭系统所有更新功能以防止不稳定
D. 允许各种设备直接接入服务器进行数据读写
6. 下列关于数字化与信息编码的说法,正确的是( )
A. 播放计算机中的音频需要经过采样、量化、编码三个环节
B. 某十进制数n转换为二进制数x,n//8的值一定与x最左侧三位的值相等
C. 某八位二进制数最高位是1,则它在内存中不可能表示一个ASCII编码的字符
D. 一幅1024*1024的未经压缩的BMP格式的黑白图像存储容量约为0.25M
7. 某算法的部分流程图如图所示,若输入的非降序列表a为[12,14,16,16,19,x,22,24,y,26],key的值为[20,28]之间的随机偶数,执行这部分流程后c的值为4,请问x,y的值为( )
A. 20,24 B. 22,26 C. 22,24 D. 20,26
8. 创建长度为4的数组来实现循环队列,元素4,7,2,4,9,7,1,8依次等待入队。
入队规则如下:
①若待入队元素已经存在于队列中,则跳过该入队元素;
②若队列未满,直接将该元素加入队尾;
③若队列已满,先把队首元素出队,再将当前元素入队。
全部操作执行完毕后,队首元素为( )
A. 4 B. 7 C. 2 D. 9
9. 某二叉树的前序遍历序列为C-F-A-?-?-E,中序遍历序列为F-D-A-C-E-B,则以下说法正确的是( )
A. 该二叉树的深度为3
B. 节点A和节点E为兄弟节点
C. 将该二叉树变为完全二叉树至少需要增加3个节点
D. 该二叉树的后序遍历序列是DAFEBC
10. 定义如下函数:
def ack(m, n):
if m==0:
return n+1
elif n==0:
return ack(m-1, 1)
else:
return ack(m-1, ack(m, n-1))
调用ack(1,2)时,函数的返回值和调用次数分别为a,b,请问a和b的值分别为( )
A. 4,5 B. 4,6 C. 5,5 D. 5,6
11. 有如下Python程序:
a = [2, 0, 2, 1, 1, 0]
st = [0]*len(a)
top = -1
for i in range(len(a)):
while top != -1 and a[i] < a[st[top]]:
top-=1
top+=1
st[top]=i
res=[0]*3
for j in st:
res[a[j]]+=1
print(res)
运行该程序后,输出的res为( )
A. [2,0,0] B. [0,0,2] C. [2,1,3] D. [2,0,4]
12. 有如下Python程序段:
import random
q = [0]*6
head, tail=0,0
for i in range(6):
t = random. randint(0, i)
if t%2 == 0:
q[tail] = random. randint(1, 9)
elif head < tail and q[head] >= q[tail - 1]:
q[tail]=q[head]
head+=1
else:
head+=1
tail+=1
执行该程序段后,列表q的值不可能是( )
A. [3, 8, 0, 5, 7, 2] B. [7, 7, 0, 2, 8, 5] C. [5, 9, 9, 0, 2, 7] D. [3, 7, 5, 8, 9, 0]
二、非选择题(本大题共3小题,其中第13题10分,第14题7分,第15题9分,共26分)
13. 某智慧图书馆为加强“静音学习区”的管理,搭建了一套噪声监测与管理系统。每个学习区安装声音传感器采集实时分贝值,并通过IoT物联网模块上传至服务器,并实时计算各区域平均分贝值。当某区域平均分贝超过阈值时,服务器向智能终端发送指令,点亮该区域RGB灯带为红色闪烁,同时向管理员手机发送短信通知。管理员可通过浏览器登录管理平台,进行以下操作:远程设置各区域的分贝阈值,查看历史噪声曲线,手动开启或熄灭灯带。
请回答下列问题:
(1)在搭建该系统的前期准备过程中,设计者确定该系统包括数据采集、网络传输、用户终端、数据统计、警告交互等模块。这一步骤属于_________(A.需求分析 B.可行性分析 C.概要设计 D.详细设计)。
(2)下列关于该系统功能实现的描述,正确的是_________
A. 该系统开发模式为B/S架构
B. “历史噪声曲线”的生成应在智能终端完成,以减轻服务器计算压力
C. “手动开启或熄灭灯带”功能的实现,需要服务器向智能终端发送控制指令
D. 若管理员在管理平台修改阈值,修改后的值应同时更新到数据库中
(3)某日管理员发现:某区域的实时平均分贝超过阈值,但RGB灯带并未闪烁,且管理员未收到短信预警。为了排除故障,以下措施中最合理的是_________
A. 用无故障的RGB灯带替换现有的灯带,判断是否是灯带硬件故障
B. 检查服务器中短信API接口的配置信息(如API密钥、手机号码等)是否正确
C. 检查数据库中该区域的阈值设置是否被误修改为更高值
D. 更换该区域声音传感器,判断是否为传感器采集数据偏差
(4)现需增加语音劝导提醒功能,在智能终端接入广播后,还需对软件部分作多处修改。请用文字描述其中2处修改建议。
(5)管理员导出今年9月1日~9月7日的噪声数据,保存为“noise.xlsx”,部分数据如图a所示。已知警戒阈值分贝为45,现要查找出该周提醒次数最多的区域,并统计该区域每天的提醒次数,绘制如图b所示的柱形图(x轴为日期,y轴为超标次数)。实现上述功能的部分Python程序如下,选择合适的代码填入划线处。
import pandas as pd
import matplotlib. pyplot as plt
yz=45
df= pd.read_excel("noise. xlsx")
#插入一列“超标”,该列的值为1或-1,1表示超过阈值,-1表示未超过阈值,代码略
dfl=df[df.超标==1]
df2=df1.groupby("区域", as_index= False).超标.count()
df3=df2.sort_values("超标", ascending=False, ignore_index=True)
# ignore_index=True排序完成后丢弃原有打乱的行索引,重新生成从0开始连续自然数索引
_______①_______
_______②_______
_______③_______
plt.plot(df5.index,df5.超标)
plt.title("1-7日提醒次数最多的区域每日提醒次数分布")
plt.xlim(0,5)
plt.show()
程序中①②③处可选的代码有:_______、_______、_______
A. df4=dfl[df1.区域==qy]
B. df4=df2[df2.区域==qy]
C. qy=df3[0:1]
D. qy=df3.at[0,"区域"]
E. qy=df3.at[len(df3)-1,"区域"]
F. df5=df4.groupby("日期").count()
G.df5=df4.groupby("日期").超标.count()
14. 图书馆噪声监控系统在接入广播后对提醒规则进行了优化和更新,具体实现方式如下:声音传感器每分钟采集一次声音数据,每3分钟为一个时间单位,统计该时间段内声音最大值存入数组peak.。peak每3分钟更新一次,始终按时间顺序存放着最近30分钟内的数据。
规则如下:
①若连续4个统计单位的数据都≥45,则触发并保持“一级提醒”(灯带闪烁)。
②若一级提醒触发后的4个统计单位内,任一次出现数据≥45,则触发“二级提醒”(语音提醒),并重新计数。
③若一级提醒触发后的4个统计单位内,未出现数据≥45,则关闭一级提醒状态。
(1)若系统9:00启动,截至9:36时,请问9:30-9:33这个时间单位内的最大值存储在数组peak的位置为_________(填索引值)。
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
peak = [0]*10
n = cnt = max_val =0
first = False
check = 0
while True:
n+= 1
#声音传感器采集数据存储到变量t中,代码略
if t > max_val:
max_val = t
if ________________:
if max_val >=45:
cnt +=1
else:
cnt = 0
if ________________:
print("一级提醒:灯带闪烁")
first = True
max_val = 0
continue
if first:
check += 1
if max_val >= 45 and check <=4:
print("二级提醒:语音播报")
check = 0
elif check == 4:
print("一级提醒超时关闭")
________________
cnt = 0
check = 0
max_val = 0
#延时一分钟,代码略
15. 某厂房有m台钻床,编号为1~m,每台钻床配有尺寸为1~n的n个可安装的钻头(保证钻头可以满足所有订单需求),初始所有钻床均未加装钻头(以下称为未启用,否则称为已启用)。该厂房接到了k个订单,每个订单编号用该订单需要加工的孔的尺寸item表示。现在需要将这k个订单依次分配给m台钻床,分配方式如下:
①若所有钻床均未启用,则订单分配给1号钻床;
②若已有钻床启用,当前订单的item大于所有已启用钻床的钻头尺寸,且仍有未启用的钻床,则订单分配给未启用钻床中编号最小的(钻床的钻头尺寸取最近一次处理的订单需要的尺寸);
③否则订单分配给所有已启用钻床中钻头尺寸与item相差(差的绝对值)最小钻床,若存在多个钻床符合条件,则分配给编号最小的钻床。
注意:不考虑订单处理的时间,且钻床一旦启用就不能恢复为未启用状态。
例如:当m=3,订单依次为[2,5,3,7,6,8],各订单的分配结果与各钻床当前钻头尺寸如图a所示:
操作日志为:
订单2,规则①:所有钻床未启用,分配给钻床1→加装钻头2
订单5,规则②:启用新钻床2→加装钻头5
订单3,规则③:分配给钻床1
订单7,规则②:启用新钻床3→加装钻头7
订单6,规则③:分配给钻床2
订单8,规则③:分配给钻床3
(1)当m=3,订单依次为[2, 5, 7, 4, 7, 6, 8, 6]时,3台钻床要处理的订单数量分别为_________。(数字间用逗号隔开)
(2)自定义函数alloc实现将order_list中的订单分配给m台钻床。
def alloc(m, order_list):
siz=[-1]*m; cnt=-1
order=[[] for i in range(m)] #order中存放m 台钻床的订单
for item in order_list:
if
cnt+=1
order[cnt]. append(item) #在order[cnt]的末尾添加元素item
siz[cnt]= item
else:
L=0; R=cnt
ans=0
while L<=R:
mid=(L+R)//2
if siz[mid] <= item:
ans= mid
L= mid+1
else:
R= mid-1
if ans==m-1 or item-siz[ans]<= siz[ans+1]-item:
order[ans]. append(item); siz[ans]= item
else:
order[ans+1]. append(item); siz[ans+1]= item
return order
①程序中加框处代码有错,请改正___________________。
②运行下列哪一组数据划线处的语句执行次数最多_________
A. m=6, order_list=[1, 2, 3, 4, 5, 6, 4, 2]
B. m=6, order_list=[1, 2, 3, 4, 5, 6, 6, 2]
C. m=6, order_list=[1, 2, 3, 4, 5, 6, 1, 4]
D. m=6, order_list=[1, 2, 3, 4, 5, 6, 3, 6]
(3)加装一个钻头或卸下一个钻头均称为1次操作。钻床上已有钻头时,可以在原钻头基础上直接加装尺寸更大的钻头,钻床的钻头尺寸更新为新加装上的钻头尺寸。根据订单情况,求每台钻床所需要的最小操作次数。
例如:某钻床需要加工的订单x依次为[2,4,6,3],则完成这些订单的最小操作次数为6,具体操作过程如表b所示:
订单
操作
操作次数
2
加装钻头2
1
4
加装钻头4
2
6
加装钻头6
3
3
卸下钻头6
卸下钻头4
加装钻头3
4
5
6
表b
实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
def option(x):
""创建 drill 列表,其中元素形如[[0,-1], [1,-1], [2,-1], … [n,-1]], drill[i][0]表示尺寸,drill[i][1]表示下一节点索引,代码略""
_____________
tot=1
for i in range(1, len(x)):
while _____________:
head= drill[head][1]
tot+=1
if head == -1 or drill[head][0]!=x[i]:
_____________
head=x[i]
tot+=1
return tot
m= int(input())
order_list= eval(input()) # eval()函数实现将输入订单存入列表order_list中
order= alloc(m, order_list)
#输出每台钻床的订单order[i],最小操作次数option(order[i]),代码略
第1页/共1页
学科网(北京)股份有限公司
$
浙江省江浙皖共同体2027届高三上一模10月联考
技术试题
考生须知:
1.本卷满分100分,考试时间90分钟;
2.答题前,在答题卷指定区域填写班级、姓名、考场、座位号及准考证号并核对条形码信息;
3.所有答案必须写在答题卷上,写在试卷上无效,考试结束后,只需上交答题卷。
第一部分 信息技术(共50分)
一、选择题(本大题共12题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
阅读下列材料,完成下面小题:
某校智慧图书馆上线智能馆藏管理系统。读者可通过手机APP查看馆藏记录和图书借阅热门榜单。馆内所有书架搭配层级LED指示灯,嵌入RFID读写器和天线,直接读取整层图书标签,对比后台馆藏位置,对书籍进行实时在位监控,错位自动预警,识别到异常后,自动发送短信通知管理员及时整理。
1. 下列关于该系统中数据与信息的说法,正确的是( )
A. 服务器存储的所有数据均来源于传感器
B. RFID标签存储的编号属于信息
C. 摄像头采集到的画面是结构化数据
D. 根据借阅记录生成热门榜单主要体现了信息的可加工处理性
2. 下列关于该系统支撑技术的说法,正确的是( )
A. 馆藏查询软件属于系统软件
B. 服务器接收到的数据长期存放在内存中
C. RFID智能书架属于射频识别技术的发射端
D. 移动端APP的运行依赖于终端设备的操作系统
3. 下列关于该系统功能与应用的描述,正确的是( )
A. 智能书架识别图书错位属于控制技术
B. 该系统最大的局限性是本身具有安全隐患
C. 系统根据借阅记录数据生成热门借阅榜单未应用人工智能
D. 读者通过手机号+验证码的方式登录APP属于系统的访问控制功能
4. 下列关于该系统网络技术的分析,不正确的是( )
A. 传感器与服务器之间可以采用有线通信方式
B. 读者手机查看馆藏书目,体现了网络资源共享
C. 管理员手机未连接图书馆局域网也能接收到短信提醒
D. 移动端APP与服务器之间的数据传输主要采用DHCP协议
5. 下列关于该系统安全与防护的做法,合理的是( )
A. 为方便使用登录方式设置为免验证登录
B. 定期导出借阅记录到外部存储设备作为备份
C. 关闭系统所有更新功能以防止不稳定
D. 允许各种设备直接接入服务器进行数据读写
【答案】1. D 2. D 3. C 4. D 5. B
【解析】
【1题详解】
本题考查数据与信息的基本概念辨析。选项A,服务器存储的数据除了传感器采集的信息,还包含读者借阅记录、用户信息等人工录入或其他渠道产生的数据,并非全部来源于传感器;选项B,RFID标签存储的编号是 raw 的数据,经过加工赋予对应图书的含义后才成为信息,编号本身属于数据;选项C,摄像头采集到的画面是非结构化的视频数据,不属于结构化数据;选项D,对原始的借阅记录进行统计、排序处理后生成热门榜单,体现了信息的可加工处理性,该说法正确。故答案为:D。
【2题详解】
本题考查信息系统支撑技术的相关概念。选项A,馆藏查询软件是面向读者使用的应用软件,不属于系统软件;选项B,内存是临时存储介质,服务器接收到的长期数据需要存放在硬盘等外存设备中,无法长期保存在内存;选项C,RFID智能书架集成了读写器和天线,属于射频识别技术的读写端,并非单纯的发射端;选项D,移动端APP是运行在对应终端操作系统之上的应用程序,其运行依赖于终端设备的操作系统,该说法正确。故答案为:D。
【3题详解】
本题考查信息系统功能与应用的相关知识。选项A,智能书架识别图书错位属于数据采集与比对识别的感知技术范畴,不属于控制技术;选项B,该系统的安全隐患是可以通过防护手段规避的,并非系统最大的局限性;选项C,根据借阅记录统计排序生成热门榜单是常规的数据统计处理流程,没有应用人工智能相关技术,该说法正确;选项D,手机号加验证码登录属于身份验证环节,访问控制是身份验证之后的权限管控环节,该描述错误。故答案为:C。
【4题详解】
本题考查信息系统网络技术的相关分析。选项A,传感器与服务器之间既可以采用无线通信,也可以采用有线通信方式传输数据;选项B,读者通过网络访问服务器上的馆藏书目资源,体现了网络的资源共享特性;选项C,系统发送的短信是通过公共移动通信网络传输,管理员手机无需连接图书馆局域网即可接收;选项D,DHCP协议的作用是为终端自动分配IP地址,移动端APP与服务器之间的数据传输并不主要采用该协议,该说法错误。故答案为:D。
【5题详解】
本题考查信息系统安全与防护的合理措施。选项A,免验证登录会大幅降低系统安全性,容易出现账号冒用的问题,做法不合理;选项B,定期将借阅记录导出到外部存储设备做备份,可以防止数据丢失,属于合理的容灾防护措施;选项C,关闭所有系统更新会导致系统无法修补已知的安全漏洞,反而提升安全风险,做法不合理;选项D,允许各类设备直接接入服务器读写数据会带来严重的数据泄露、篡改风险,做法不合理。故答案为:B。
6. 下列关于数字化与信息编码的说法,正确的是( )
A. 播放计算机中的音频需要经过采样、量化、编码三个环节
B. 某十进制数n转换为二进制数x,n//8的值一定与x最左侧三位的值相等
C. 某八位二进制数最高位是1,则它在内存中不可能表示一个ASCII编码的字符
D. 一幅1024*1024的未经压缩的BMP格式的黑白图像存储容量约为0.25M
【答案】C
【解析】
【详解】本题考查数字化与信息编码相关知识。选项A,采样、量化、编码是将模拟音频数字化的环节,播放计算机中已经数字化的音频不需要经过这三个环节,该说法错误。选项B,十进制数n整除8的结果等价于将对应二进制数x右移3位后的数值,仅当x的二进制位数大于等于3位时,n//8才和x最左侧开始的对应高位值相关,若x的二进制位数不足3位,该结论不成立,该说法错误。选项C,标准ASCII编码的字符对应的二进制是7位,在内存中存储时最高位固定为0,因此最高位是1的八位二进制数不可能表示标准ASCII编码的字符,该说法正确。选项D,1024*1024的黑白图像每个像素占1位,总存储容量为1024*1024*1比特,换算后为128KB,约0.125M,不是0.25M,该说法错误。故答案为:C。
7. 某算法的部分流程图如图所示,若输入的非降序列表a为[12,14,16,16,19,x,22,24,y,26],key的值为[20,28]之间的随机偶数,执行这部分流程后c的值为4,请问x,y的值为( )
A. 20,24 B. 22,26 C. 22,24 D. 20,26
【答案】A
【解析】
【详解】本题考查对二分查找算法流程的理解与执行推演能力。首先分析流程图逻辑:初始i=0,j=9,c=0,每次循环先判断i<=j,成立则计算中间位置m,c自增1,再根据a[m]和key的大小调整i或j,直到i>j时结束循环输出c。已知key是20到28之间的随机偶数,可能取值为20、22、24、26,要求无论key取该范围内哪个合法偶数,循环执行次数都为4。逐一验证选项:代入选项A的x=20、y=24,序列为[12,14,16,16,19,20,22,24,24,26],分别对key=20、22、24执行二分流程,循环次数均为4,符合c=4的要求。其余选项代入后,会出现部分key取值下循环次数不等于4的情况,不符合题意。故答案为:A
8. 创建长度为4的数组来实现循环队列,元素4,7,2,4,9,7,1,8依次等待入队。
入队规则如下:
①若待入队元素已经存在于队列中,则跳过该入队元素;
②若队列未满,直接将该元素加入队尾;
③若队列已满,先把队首元素出队,再将当前元素入队。
全部操作执行完毕后,队首元素为( )
A. 4 B. 7 C. 2 D. 9
【答案】C
【解析】
【详解】本题考查循环队列的入队规则应用与队列状态推演能力。第一步,元素4入队,队列为[4];第二步,元素7入队,队列为[4,7];第三步,元素2入队,队列为[4,7,2];第四步,待入队元素4已存在于队列中,跳过该元素,队列无变化;第五步,队列长度为3未满,元素9入队,队列变为满状态[4,7,2,9];第六步,待入队元素7已存在于队列中,跳过该元素,队列无变化;第七步,队列已满,先将队首元素4出队,再将元素1入队,队列变为[7,2,9,1];第八步,队列已满,先将队首元素7出队,再将元素8入队,队列变为[2,9,1,8],此时队首元素为2。故答案为:C
9. 某二叉树的前序遍历序列为C-F-A-?-?-E,中序遍历序列为F-D-A-C-E-B,则以下说法正确的是( )
A. 该二叉树的深度为3
B. 节点A和节点E为兄弟节点
C. 将该二叉树变为完全二叉树至少需要增加3个节点
D. 该二叉树的后序遍历序列是DAFEBC
【答案】D
【解析】
【详解】本题考查二叉树的遍历与结构特性相关知识点。首先结合前序遍历根左右的规则和中序遍历左根右的规则推导二叉树结构:前序首元素C是根节点,从中序序列可知C的左子树包含F、D、A,右子树包含E、B;前序第二个元素F是C左子树的根,从中序可知F无左子树,右子树包含D、A;前序第三个元素A是F右子树的根,从中序可知A的左孩子是D,A无右孩子;前序后续的两个缺失元素为D、B,最后E是C右子树的根,从中序可知E无左孩子,右孩子是B。接下来逐一分析选项:第一个选项,该二叉树的深度为4,不是3,该说法错误;第二个选项,节点A的父节点是F,节点E的父节点是根C,二者不是兄弟节点,该说法错误;第三个选项,该二叉树总共有6个节点,深度为4的完全二叉树第4层最多可放8个节点,当前第4层仅1个节点,补齐为完全二叉树至少需要增加4个节点,不是3个,该说法错误;第四个选项,按照后序遍历左根右的规则,得到的后序遍历序列为DAFEBC,该说法正确。故答案为:D。
10. 定义如下函数:
def ack(m, n):
if m==0:
return n+1
elif n==0:
return ack(m-1, 1)
else:
return ack(m-1, ack(m, n-1))
调用ack(1,2)时,函数的返回值和调用次数分别为a,b,请问a和b的值分别为( )
A. 4,5 B. 4,6 C. 5,5 D. 5,6
【答案】B
【解析】
【详解】本题考查递归函数相关知识。调用ack(1,2)时,因m、n均非0,需先计算ack(1,1);计算ack(1,1)又需先算ack(1,0);ack(1,0)因n=0转而调用ack(0,1),m=0直接返回2,故ack(1,0)=2,接着ack(0,2)返回3,ack(1,1)=3,最后ack(0,3)返回4,故ack(1,2)=4,即a=4。整个过程中依次调用了ack(1,2)、ack(1,1)、ack(1,0)、ack(0,1)、ack(0,2)、ack(0,3)共6次,即b=6。因此,本题选择B选项。
11. 有如下Python程序:
a = [2, 0, 2, 1, 1, 0]
st = [0]*len(a)
top = -1
for i in range(len(a)):
while top != -1 and a[i] < a[st[top]]:
top-=1
top+=1
st[top]=i
res=[0]*3
for j in st:
res[a[j]]+=1
print(res)
运行该程序后,输出的res为( )
A. [2,0,0] B. [0,0,2] C. [2,1,3] D. [2,0,4]
【答案】C
【解析】
【详解】本题考查Python单调栈逻辑的运行分析能力。初始a为[2,0,2,1,1,0],st是长度为6的全0列表,top初始为-1。
i=0时,top为-1不进入while,top自增为0,st[0]=0;
i=1时,a[1]=0 < a[st[0]]=2,top自减为-1,退出while后top自增为0,st[0]=1;
i=2时,a[2]=2不小于a[st[0]]=0,top自增为1,st[1]=2;
i=3时,a[3]=1 < a[st[1]]=2,top自减为0,此时a[3]=1不小于a[st[0]]=0,top自增为1,st[1]=3;
i=4时,a[4]=1不小于a[st[1]]=1,top自增为2,st[2]=4;
i=5时,a[5]=0 < a[st[2]]=1,top自减为1,a[5]=0 < a[st[1]]=1,top自减为0,a[5]=0不小于a[st[0]]=0,top自增为1,st[1]=5。
最终得到st数组前3位有效元素为1,5,4,剩余位置为初始的0,完整st为[1,5,4,0,0,0]。
遍历st统计res:a[1]=0、a[5]=0、a[4]=1、a[0]=2、a[0]=2、a[0]=2,累加后res为[2,1,3]。故答案为:C。
12. 有如下Python程序段:
import random
q = [0]*6
head, tail=0,0
for i in range(6):
t = random. randint(0, i)
if t%2 == 0:
q[tail] = random. randint(1, 9)
elif head < tail and q[head] >= q[tail - 1]:
q[tail]=q[head]
head+=1
else:
head+=1
tail+=1
执行该程序段后,列表q的值不可能是( )
A. [3, 8, 0, 5, 7, 2] B. [7, 7, 0, 2, 8, 5] C. [5, 9, 9, 0, 2, 7] D. [3, 7, 5, 8, 9, 0]
【答案】B
【解析】
【详解】本题考查队列模拟与程序逻辑推断相关知识。程序中 head、tail 分别模拟队头、队尾指针,每轮 tail 自增 1;t 为偶数时 q[tail] 被赋 1~9 的随机数,t 为奇数且 head<tail 且 q[head]>=q[tail-1] 时 q[tail] 复制 q[head],否则 q[tail] 保持 0,且 i=0 时 t=randint(0,0)=0 恒为偶数,故 q[0] 必为非零值。A选项可达,如 t 序列(0,0,1,0,0,0)可生成[3,8,0,5,7,2]。B选项不可达,其 q[0]=q[1]=7,而 i=2 时若 t 为偶数则 q[2] 被赋非零随机数,若 t 为奇数,由于 head 必指向 q[0] 或 q[1],q[head]=7 且 q[tail-1]=q[1]=7,满足 q[head]>=q[tail-1] 必执行复制,使 q[2]=7,故 q[2] 不可能为 0,该结果无法生成。C选项可达,如 t 序列(0,0,0,1,0,0)可生成[5,9,9,0,2,7]。D选项可达,如 t 序列(0,0,0,0,0,1)可生成[3,7,5,8,9,0]。因此,本题选择B选项。
二、非选择题(本大题共3小题,其中第13题10分,第14题7分,第15题9分,共26分)
13. 某智慧图书馆为加强“静音学习区”的管理,搭建了一套噪声监测与管理系统。每个学习区安装声音传感器采集实时分贝值,并通过IoT物联网模块上传至服务器,并实时计算各区域平均分贝值。当某区域平均分贝超过阈值时,服务器向智能终端发送指令,点亮该区域RGB灯带为红色闪烁,同时向管理员手机发送短信通知。管理员可通过浏览器登录管理平台,进行以下操作:远程设置各区域的分贝阈值,查看历史噪声曲线,手动开启或熄灭灯带。
请回答下列问题:
(1)在搭建该系统的前期准备过程中,设计者确定该系统包括数据采集、网络传输、用户终端、数据统计、警告交互等模块。这一步骤属于_________(A.需求分析 B.可行性分析 C.概要设计 D.详细设计)。
(2)下列关于该系统功能实现的描述,正确的是_________
A. 该系统开发模式为B/S架构
B. “历史噪声曲线”的生成应在智能终端完成,以减轻服务器计算压力
C. “手动开启或熄灭灯带”功能的实现,需要服务器向智能终端发送控制指令
D. 若管理员在管理平台修改阈值,修改后的值应同时更新到数据库中
(3)某日管理员发现:某区域的实时平均分贝超过阈值,但RGB灯带并未闪烁,且管理员未收到短信预警。为了排除故障,以下措施中最合理的是_________
A. 用无故障的RGB灯带替换现有的灯带,判断是否是灯带硬件故障
B. 检查服务器中短信API接口的配置信息(如API密钥、手机号码等)是否正确
C. 检查数据库中该区域的阈值设置是否被误修改为更高值
D. 更换该区域声音传感器,判断是否为传感器采集数据偏差
(4)现需增加语音劝导提醒功能,在智能终端接入广播后,还需对软件部分作多处修改。请用文字描述其中2处修改建议。
(5)管理员导出今年9月1日~9月7日的噪声数据,保存为“noise.xlsx”,部分数据如图a所示。已知警戒阈值分贝为45,现要查找出该周提醒次数最多的区域,并统计该区域每天的提醒次数,绘制如图b所示的柱形图(x轴为日期,y轴为超标次数)。实现上述功能的部分Python程序如下,选择合适的代码填入划线处。
import pandas as pd
import matplotlib. pyplot as plt
yz=45
df= pd.read_excel("noise. xlsx")
#插入一列“超标”,该列的值为1或-1,1表示超过阈值,-1表示未超过阈值,代码略
dfl=df[df.超标==1]
df2=df1.groupby("区域", as_index= False).超标.count()
df3=df2.sort_values("超标", ascending=False, ignore_index=True)
# ignore_index=True排序完成后丢弃原有打乱的行索引,重新生成从0开始连续自然数索引
_______①_______
_______②_______
_______③_______
plt.plot(df5.index,df5.超标)
plt.title("1-7日提醒次数最多的区域每日提醒次数分布")
plt.xlim(0,5)
plt.show()
程序中①②③处可选的代码有:_______、_______、_______
A. df4=dfl[df1.区域==qy]
B. df4=df2[df2.区域==qy]
C. qy=df3[0:1]
D. qy=df3.at[0,"区域"]
E. qy=df3.at[len(df3)-1,"区域"]
F. df5=df4.groupby("日期").count()
G.df5=df4.groupby("日期").超标.count()
【答案】(1)C (2)ACD (3)C
(4)
修改位置
修改内容
智能终端
在智能终端程序中增加接收服务器“播放语音”指令的解析代码
智能终端
在智能终端程序中增加控制广播设备播放语音文件的代码
服务器端
在服务器端程序中增加连续3次超标的判断逻辑,满足条件时向智能终端发送“播放语音”指令
服务器端
在服务器端程序中增加语音播放记录日志功能,记录每次播放的时间、区域等信息
数据库
在数据库中添加语音播放记录表(如voice_log),用于存储播放日志数据
智能终端
在智能终端程序中增加语音播放完毕后的状态反馈功能,向服务器回传播放完成状态
服务器端
在服务器端程序中增加防重复提醒机制,避免短时间内(如5分钟内)对同一区域重复播放语音
(5) ①. D ②. A ③. F【解析】
【小问1详解】
本题考查信息系统开发各阶段的任务。需求分析阶段是明确系统的功能需求和性能需求;可行性分析是评估项目的技术、经济等可行性;概要设计阶段的核心任务是划分系统的功能模块,确定模块间的调用关系;详细设计是对每个模块的具体实现逻辑进行细化。题目中设计者确定系统的各个组成模块,属于概要设计阶段的工作。故答案为:C。
【小问2详解】
本题考查物联网信息系统的架构与功能实现逻辑。管理员通过浏览器登录管理平台,无需安装专用客户端,符合B/S架构的特征,第一个描述正确;历史噪声曲线需要基于全量的历史噪声数据生成,数据都存储在服务器端,在智能终端生成会带来数据传输压力,也不符合该系统的架构逻辑,第二个描述错误;管理员在平台手动操作控制灯带,指令需要由服务器下发给对应区域的智能终端才能执行,第三个描述正确;管理员修改的阈值属于系统的核心配置数据,必须持久化存储到数据库中,修改后要同步更新数据库保证数据一致性,第四个描述正确。故答案为:ACD。
【小问3详解】
本题考查物联网系统的故障排查逻辑。题目明确已知条件是“某区域的实时平均分贝超过阈值”,说明传感器采集、服务器的分贝计算逻辑都是正常的,故障点优先排查阈值配置是否异常:如果该区域阈值被误改为更高值,就会出现实际分贝超过原阈值但未触发预警和灯带动作的现象。其余选项的故障场景都和已知的“实时平均分贝超过阈值”的前提矛盾,排查优先级更低。故答案为:C。
【小问4详解】
本题考查物联网系统功能扩展的软件设计能力。新增语音劝导功能需要在智能终端、服务器端、数据库等多个环节做适配修改,合理的修改建议包括:1. 在智能终端程序中增加接收服务器“播放语音”指令的解析代码,识别服务器下发的语音播放控制指令;2. 在智能终端程序中增加控制广播设备播放预设语音劝导音频的代码,实现广播的语音输出;3. 在服务器端程序中增加触发语音劝导的判断逻辑,比如当区域噪声连续多次超标时,向对应区域的智能终端发送语音播放指令;4. 在服务器端新增语音播放日志记录功能,将每次语音播放的区域、时间等信息存储到数据库中;5. 在数据库中新增语音播放日志表,用于持久化存储语音劝导的相关记录;6. 在服务器端增加防重复提醒机制,避免短时间内对同一区域反复发送语音播放指令造成干扰。从中选取任意2处合理的描述即可。
【小问5详解】
本题考查基于pandas的数据分析流程实现。排序后的df3是按区域总超标次数降序排列的结果,索引0对应的就是超标次数最多的区域,所以①处需要取出该区域的名称,对应代码D选项qy=df3.at[0,"区域"];接下来需要从所有超标数据df1中筛选出该区域的所有超标记录,对应代码A选项df4=dfl[df1.区域==qy];最后需要按日期分组统计该区域每天的超标次数,对应代码F选项df5=df4.groupby("日期").count(),完成分组统计后即可用于后续绘图。故答案为:D、A、F。
14. 图书馆噪声监控系统在接入广播后对提醒规则进行了优化和更新,具体实现方式如下:声音传感器每分钟采集一次声音数据,每3分钟为一个时间单位,统计该时间段内声音最大值存入数组peak.。peak每3分钟更新一次,始终按时间顺序存放着最近30分钟内的数据。
规则如下:
①若连续4个统计单位的数据都≥45,则触发并保持“一级提醒”(灯带闪烁)。
②若一级提醒触发后的4个统计单位内,任一次出现数据≥45,则触发“二级提醒”(语音提醒),并重新计数。
③若一级提醒触发后的4个统计单位内,未出现数据≥45,则关闭一级提醒状态。
(1)若系统9:00启动,截至9:36时,请问9:30-9:33这个时间单位内的最大值存储在数组peak的位置为_________(填索引值)。
(2)实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
peak = [0]*10
n = cnt = max_val =0
first = False
check = 0
while True:
n+= 1
#声音传感器采集数据存储到变量t中,代码略
if t > max_val:
max_val = t
if ________________:
if max_val >=45:
cnt +=1
else:
cnt = 0
if ________________:
print("一级提醒:灯带闪烁")
first = True
max_val = 0
continue
if first:
check += 1
if max_val >= 45 and check <=4:
print("二级提醒:语音播报")
check = 0
elif check == 4:
print("一级提醒超时关闭")
________________
cnt = 0
check = 0
max_val = 0
#延时一分钟,代码略
【答案】(1)8 (2) ①. n % 3 == 0 ②. cnt >=4 and not first或者cnt >= 4 and first == False ③. first = False
【解析】
【详解】本题考查循环计数逻辑与数组存储规则的理解。
(1)系统9:00启动,每3分钟为一个时间单位,peak数组长度为10对应存储最近30分钟的10个时间单位数据。从9:00-9:03是第1个时间单位,对应索引0,依次推算,9:30-9:33是第11个时间单位,11对3分钟计数的模运算结合循环覆盖规则,最终该时间单位的最大值存储在索引8的位置。
(2)①程序中n是每分钟自增的计数,每3分钟完成一个时间单位的采集,才需要将当前统计的max_val存入peak并执行后续的规则判断,因此判断条件为n%3 == 0。②触发一级提醒的条件是连续4个统计单位的数据都≥45,且当前还未处于一级提醒状态,因此判断条件为cnt >=4 and not first。③规则要求一级提醒触发后4个统计单位内都没有出现≥45的数据时,需要关闭一级提醒状态,对应将标记一级提醒状态的first变量置为False。
15. 某厂房有m台钻床,编号为1~m,每台钻床配有尺寸为1~n的n个可安装的钻头(保证钻头可以满足所有订单需求),初始所有钻床均未加装钻头(以下称为未启用,否则称为已启用)。该厂房接到了k个订单,每个订单编号用该订单需要加工的孔的尺寸item表示。现在需要将这k个订单依次分配给m台钻床,分配方式如下:
①若所有钻床均未启用,则订单分配给1号钻床;
②若已有钻床启用,当前订单的item大于所有已启用钻床的钻头尺寸,且仍有未启用的钻床,则订单分配给未启用钻床中编号最小的(钻床的钻头尺寸取最近一次处理的订单需要的尺寸);
③否则订单分配给所有已启用钻床中钻头尺寸与item相差(差的绝对值)最小钻床,若存在多个钻床符合条件,则分配给编号最小的钻床。
注意:不考虑订单处理的时间,且钻床一旦启用就不能恢复为未启用状态。
例如:当m=3,订单依次为[2,5,3,7,6,8],各订单的分配结果与各钻床当前钻头尺寸如图a所示:
操作日志为:
订单2,规则①:所有钻床未启用,分配给钻床1→加装钻头2
订单5,规则②:启用新钻床2→加装钻头5
订单3,规则③:分配给钻床1
订单7,规则②:启用新钻床3→加装钻头7
订单6,规则③:分配给钻床2
订单8,规则③:分配给钻床3
(1)当m=3,订单依次为[2, 5, 7, 4, 7, 6, 8, 6]时,3台钻床要处理的订单数量分别为_________。(数字间用逗号隔开)
(2)自定义函数alloc实现将order_list中的订单分配给m台钻床。
def alloc(m, order_list):
siz=[-1]*m; cnt=-1
order=[[] for i in range(m)] #order中存放m 台钻床的订单
for item in order_list:
if
cnt+=1
order[cnt]. append(item) #在order[cnt]的末尾添加元素item
siz[cnt]= item
else:
L=0; R=cnt
ans=0
while L<=R:
mid=(L+R)//2
if siz[mid] <= item:
ans= mid
L= mid+1
else:
R= mid-1
if ans==m-1 or item-siz[ans]<= siz[ans+1]-item:
order[ans]. append(item); siz[ans]= item
else:
order[ans+1]. append(item); siz[ans+1]= item
return order
①程序中加框处代码有错,请改正___________________。
②运行下列哪一组数据划线处的语句执行次数最多_________
A. m=6, order_list=[1, 2, 3, 4, 5, 6, 4, 2]
B. m=6, order_list=[1, 2, 3, 4, 5, 6, 6, 2]
C. m=6, order_list=[1, 2, 3, 4, 5, 6, 1, 4]
D. m=6, order_list=[1, 2, 3, 4, 5, 6, 3, 6]
(3)加装一个钻头或卸下一个钻头均称为1次操作。钻床上已有钻头时,可以在原钻头基础上直接加装尺寸更大的钻头,钻床的钻头尺寸更新为新加装上的钻头尺寸。根据订单情况,求每台钻床所需要的最小操作次数。
例如:某钻床需要加工的订单x依次为[2,4,6,3],则完成这些订单的最小操作次数为6,具体操作过程如表b所示:
订单
操作
操作次数
2
加装钻头2
1
4
加装钻头4
2
6
加装钻头6
3
3
卸下钻头6
卸下钻头4
加装钻头3
4
5
6
表b
实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
def option(x):
""创建 drill 列表,其中元素形如[[0,-1], [1,-1], [2,-1], … [n,-1]], drill[i][0]表示尺寸,drill[i][1]表示下一节点索引,代码略""
_____________
tot=1
for i in range(1, len(x)):
while _____________:
head= drill[head][1]
tot+=1
if head == -1 or drill[head][0]!=x[i]:
_____________
head=x[i]
tot+=1
return tot
m= int(input())
order_list= eval(input()) # eval()函数实现将输入订单存入列表order_list中
order= alloc(m, order_list)
#输出每台钻床的订单order[i],最小操作次数option(order[i]),代码略
【答案】(1)1,3,4
(2) ①. cnt==-1 or item>siz[cnt] and cnt<m-1 ②. B
(3) ①. head=x[0] ②. head!=-1 and x[i]<drill[head][0] ③. drill[x[i]][1]=head
【解析】
【小问1详解】
本题考查的是规则的理解及应用。
订单2:所有钻床未启用,分配给1号钻床,1号计数1,钻头尺寸2
订单5:5>已启用钻床的最大尺寸2,启用新钻床2,2号计数1,钻头尺寸5
订单7:7>已启用钻床的最大尺寸5,启用新钻床3,3号计数1,钻头尺寸7
订单4:走规则③,和3、1号钻床的尺寸2差2、和2号钻床的尺寸5差1,分配给2号钻床,2号计数2,钻头更新为4
订单7:走规则③,和1号钻床的2差5、和2号钻床的4差3、和3号钻床的7差0,分配给3号钻床,3号计数2,钻头更新为7
订单6:走规则③,和1号钻床的2差4、和2号钻床的4差2、和3号钻床的7差1,分配给3号钻床,3号计数3,钻头更新为6
订单8:8>已启用钻床的最大尺寸7,但3台钻床已全部启用,走规则③,分配给3号钻床,3号计数4,钻头更新为8
订单6:走规则③,和1号钻床的2差4、和2号钻床的4差2、和3号钻床的8差2,差值相等选编号更小的2号钻床,2号计数3,钻头更新为6 最终三台钻床订单数为1、3、4。
【小问2详解】
本题考查的是二分查找的应用及调试。①cnt 是当前已启用钻床下标,最多 m-1,cnt == m-1代表所有 m 台全部启用,不能再开新钻床,故应改为:cnt==-1 or item>siz[cnt] and cnt < m-1。②划线语句ans=m在二分查找if分支内。 当item不断变大,二分循环中 siz[mid] <= item更容易成立,ans=mid被执行次数更多,选项中,前 6 个订单一样 1,2,3,4,5,6,依次启用 m=6 台钻床,siz=[1,2,3,4,5,6],选项B中第 7 个 item=6,siz[mid]≤6永远成立,二分查找每次循环都触发ans=m,次数最多。故选B。
【小问3详解】
本题考查的是链表的应用。①初始状态:第一个订单x[0]已经加装,tot=1,head初始指向第一个钻头尺寸,故此处应为:head=x[0]。②循环作用:当栈非空且前栈顶钻头尺寸 > 下一个订单尺寸,就要卸下(出栈),故此处应为:head!=-1 and x[i]。③if 判断:head 为空-1 或者 当前栈顶钻头不等于目标尺寸x[i],需要把新钻头挂在当前 head 前面(链表插入),链表操作:新节点x[i]的下一跳指向现在的 head,故此处应为:drill[x[i]][1]=head。
第1页/共1页
学科网(北京)股份有限公司
$