内容正文:
浙江强基联盟2025年10月高三联考
技术试题
浙江强基联盟研究院 命制
注意事项:
1.答题前,考生务必将自己的姓名、考生号、考场号、座位号填写在答题卡上。
2.回答选择题时,选出每小题答案后,用铅笔把答题卡上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。回答非选择题时,将答案写在答题卡上。写在本试卷上无效。
3.考试结束后,将本试卷和答题卡一并交回。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 某动物保护机构推出“动物保护与科普”平台,24小时播放园内实时画面,并配有动物科普文章、中英文讲解功能。注册用户可以收藏喜欢的动物,并接收相关资讯推送。下列关于数据的说法,正确的是( )
A. 园内实时播放画面属于大数据中的图数据
B. 直播视频和讲解音频都属于结构化数据
C. 不同格式的数据不能存储在同一存储介质中
D. 分析用户的收藏和观看数据可用于个性化推荐
2. 某动物保护机构推出“动物保护与科普”平台,24小时播放园内实时画面,并配有动物科普文章、中英文讲解功能。注册用户可以收藏喜欢动物,并接收相关资讯推送。下列措施中,不能有效提升该平台数据安全的是( )
A. 定期验证用户的身份信息 B. 删除视频缓存释放存储空间
C. 不定期更新平台管理员密码 D. 对系统进行漏洞扫描和修补
3. 某动物保护机构推出“动物保护与科普”平台,24小时播放园内实时画面,并配有动物科普文章、中英文讲解功能。注册用户可以收藏喜欢的动物,并接收相关资讯推送。以下关于该平台数据编码与数据存储的说法,正确的是( )
A. 采集实时画面需要经过模数转换
B. 科普文章和讲解音频使用相同的编码方式
C. 注册用户的收藏数据存储在内存RAM中
D. 讲解同一内容的中文音频和英文音频存储容量一定相同
4. 某校利用物联网、云计算、大数据等技术,构建了“智慧校园”系统。该系统可远程控制教室照明和温度,通过人脸识别进行学生课堂考勤,食堂就餐、超市购物时可使用校园一卡通刷卡支付或手机扫码支付。终端数据实时同步到校园云平台,使用者可通过浏览器或手机App进行查询。关于该系统中数据处理过程的说法,不正确的是( )
A. 数据在同步到云平台过程中可能会丢失
B. 使用校园一卡通刷卡支付需要访问数据库
C. 数据及时加工处理才能充分发挥其价值
D. 加工处理后数据会以相同形式向不同通信端口输出
5. 某校利用物联网、云计算、大数据等技术,构建了“智慧校园”系统。该系统可远程控制教室照明和温度,通过人脸识别进行学生课堂考勤,食堂就餐、超市购物时可使用校园一卡通刷卡支付或手机扫码支付。终端数据实时同步到校园云平台,使用者可通过浏览器或手机App进行查询。下列关于该系统中硬件和网络的说法,正确的是( )
A. 远程控制教室灯光的客户端无需配置IP地址
B. 用户扫码支付时使用的手机不是该系统的硬件
C. 消费数据同步至云平台需要网络协议的支持
D. 服务器的硬盘容量越大,支付结算的处理速度越快
6. 某校利用物联网、云计算、大数据等技术,构建了“智慧校园”系统。该系统可远程控制教室照明和温度,通过人脸识别进行学生课堂考勤,食堂就餐、超市购物时可使用校园一卡通刷卡支付或手机扫码支付。终端数据实时同步到校园云平台,使用者可通过浏览器或手机App进行查询。下列关于该系统功能与设计的说法,不正确的是( )
A. 输入设计是系统设计的关键环节
B. 系统测试需要在开发完成后进行
C. 数据库系统是“智慧校园”的基础
D. 在开发过程中需要为系统将来可能的扩充与修改做准备
7. 某校利用物联网、云计算、大数据等技术,构建了“智慧校园”系统。该系统可远程控制教室照明和温度,通过人脸识别进行学生课堂考勤,食堂就餐、超市购物时可使用校园一卡通刷卡支付或手机扫码支付。终端数据实时同步到校园云平台,使用者可通过浏览器或手机App进行查询。该系统通过人脸识别进行考勤,以下不会影响识别准确率的因素是( )
A. 算法模型参数 B. 网络传输带宽 C. 多样化的训练数据 D. 人脸与摄像头距离
8. 某包含7个节点的完全二叉树,将某叶子节点在前序遍历、中序遍历、后序遍历中的位置序号分别记为x、y、z,则|x-y|+|y-z|的值为( )
A. 0 B. 1 C. 2 D. 3
9. Web浏览器中有“前进”和“后退”的功能,原理是使用两个栈(back栈和for栈)来存储用户访问的网址。若打开一个新网页,将原网页压入back栈中。若按下“←”键,将当前页面压入for栈,并从back栈中弹出一个页面作为当前页面,当back栈空时,命令忽略。若按下“→”键,将当前页面压入back栈,并从for栈中弹出一个页面作为当前页面,当for栈空时,命令忽略。现两栈共享空间V[0]~V[9],当前栈内存储网页情况如图所示,topb指针指向back栈顶,topf指针指向for栈顶,▲表示访问新网页,经过“▲→▲→←▲→”后,topf指向( )
A 7 B. 8 C. 9 D. 10
10. 某Python程序如下:
q=[0]*7
s ='abcdabc'
head,tail = 0,0
for i in s:
if tail-head == 3:
head += 1
elif i not in q[head:tail]:
q[tail] = i
tail += 1
print (q[head:tail])
执行上述程序后,输出的结果为( )
A. [ 'c', 'a'] B. [ 'c', 'd'] C. [ 'd'] D. [ 'b', 'c']
11. 以下python程序用“双指针”检测链表中的环并找到环的起始点,快指针(fast)步进为2,慢指针(slow)步进为1,若存在环,快慢指针一定会在环内相遇。
gra=[['水星',1],[ '金星',2],[ '地球',3],[ '火星',4],[ '木星',2]
head = 0
slow = fast = head
while True:
slow = gra[slow][1]
fast = (1)
if slow == fast:
meetn = slow
break
p = (2)
q = meetn
while p != q:
p = gra[p][1]
q = gra[q][1]
print (gra[p][0])
运行程序,输出结果为“地球”,上述程序中划线(1)(2)处可选的代码有:
①gra[fast][1] ②gra[gra[fast][1]][1] ③head ④meetn
则(1)(2)处正确的语句顺序是( )
A. ②③ B. ②④ C. ①③ D. ①④
12. 对非降序数组nums循环右移一定位数,构建新的数组,如nums=[1,2,3,4,5],循环右移3位后新数组为[3,4,5,1,2],以下Python程序尝试在循环右移后的数组中查找到目标值key。
def search (nums,key):
i,j=0,len (nums)-1
while i <= j:
m= (i+j)//2
if nums[m] == key:
return True
if nums[i] <= nums[m]:
if nums[i] <= key < nums[m]:
j=m-1
else:
i=m+1
else:
if nums[m] < key <= nums[j]:
i=m+1
else:
j=m-1
return False
调用函数,以下哪组数据的返回值与其它三项不同( )
A. nums = [3,1],key = 1 B. nums = [2,3,4,5,6],key = 2
C. nums = [1,0,1,1,1],key = 0 D. nums = [4,5,6,7,0,1,2],key = 4
二、非选择题(本大题共3小题,其中第13小题8分,第14小题9分,第15小题9分,共26分)
13. 某小组在教学楼搭建了一套智能照明系统,如果监测到有人经过且环境光线值h低于阈值,智能终端控制亮灯,否则关灯。智能终端每隔1分钟通过无线WiFi将采集到的数据上传至服务器,当服务器检测到异常情况时,会向管理员发送警示信息,并通过智能终端控制指示灯闪烁示警。用户可以通过手机APP查看系统数据。请回答下列问题:
(1)用户通过手机APP查看数据的过程中,数据不需要流经____(单选,填字母)。
A.传感器 B.服务器 C.数据库
(2)以下关于该系统的说法,正确的是____(单选,填字母)。
A.灯光亮灭可由服务器直接控制
B.可使用加速度传感器检测是否有人经过
C.光线值与阈值的比较可由智能终端或服务器完成
(3)若数据库故障,可能会引发的问题有____(多选,填字母)。
A.光线传感器无法正常采集光线数据 B.智能终端无法向服务器发送数据
C.用户无法通过手机App查询历史数据 D.服务器接收到的数据无法存储
(4)以下用于判断是否亮灯的流程图,正确的是____(多选,填字母)。
A. B. C. D.
(5)系统运行一段时间后,发现数据存储量骤增,网络带宽占用过大,系统运行效率降低,请提出2种改进措施。____
14. 智能照明系统已采集某教学楼一星期的灯光数据,存储于“data.xlsx”文件中,部分数据如图a所示,其中“是否亮灯”一栏,1表示灯亮,0表示灯灭。现要对这些数据进行分析,请回答下列问题:
(1)现要统计一周内该教学楼亮灯次数最多的区域,并统计该区域平均亮灯次数超过20次的小时段,绘制如图b所示的柱形图。实现上述功能的部分Python程序如下,请选择合适的代码填入划线处(单选)。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel (’data.xlsx’)
①____
②____
max_area = df2.at[0,"监测点"]
print ("亮灯次数最多的区域是",max_area)
df3=df[df["监测点"] =max_area]
③____
for i in df4.index:
df4[i] = df4[i]/7
df5 = df4[df4.values >= 20]
plt.bar (df5.index,df5.values)
#设置绘图参数,显示如=图b所示的柱形图,代码略
程序中①②③处可选的代码有:
A.df1 = df.groupby ("监测点",as_index=False).是否亮灯.sum() # 分组求和
B.dfl = df.groupby ("日期",as_index=False).sum()
C.df4 = df3.groupby ("时",as_index=True).是否亮灯.sum()
D.df2 = dfl.sort_values ("是否亮灯",ascending=False) #降序排序
E.df4 = df3.groupby ("时",as_index=True).否亮灯.mean() #分组求平均
F.df2=df1.sort_values ("监测点",ascending=False)
(2)异常状态定义为:当光照强度低于或等于阈值且有人经过但未亮灯,或光照强度高于阈值但亮灯。如果一小时内,服务器检测出系统出现30次以上的异常状态,或者出现连续20次的异常状态,则向管理员发送警示信息。实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
#获取光线阈值存入变量h中
events = []
while True:
#每隔一分钟获取当前时间戳cur_time
#清理events中超过1小时的记录,保留最近59分钟内(含59)的记录,代码略
#获取当前光照值curl,红外检测数据curp(True为有人经过,False为无人经过),亮灯状态curb(1为灯亮,0为灯灭),代码略
①____
if curl <= h and curp == True and curb == 0:
is_abnormal = True
elif ②____:
is_abnormal = True
events.append ([cur_time,is_abnormal])
cnt=0; con=0; max_con=0
for e in events:
if e[1] == True:
cnt += 1
③____
if con > max_con:
max_con = con
else:
con=0
if cnt >= 30 or max_con >= 20:
#服务器向管理员发送警示信息,并重置events为空,代码略
15. 某工厂利用m台机器加工n个工件,每个工件需要经过m道工序,每台机器负责其中一道工序(每道工序不可拆分),每道工序的加工时间均不超过30分钟,且同一时刻每台机器只能加工一个工件。
现给定3个工件在2台机器上加工的安排顺序,如“A1 A2 B1 C2 C1 B2”,表示先安排工件A在机器1上加工,再安排A在机器2上加工,然后安排工件B在机器1上加工,再安排工件C在机器2上加工,以此类推。“安排顺序”只要求按照给定的顺序安排每个操作,不一定是各机器上的实际操作顺序。
给定工件在各机器上的加工时间,如表1所示,单位为分钟。
工件号
机器1
机器2
A
3
2
B
2
5
C
4
2
表1
若给定A1 A2 B1 C2 C1 B2的安排顺序,为求得完成该优先顺序规定的任务需要的最短时间,可进行如下安排:
时间(分钟)
1
2
3
4
5
6
7
8
9
10
机器1 加工工件
A
A
A
B
B
C
C
C
C
无
机器2 加工工件
C
C
无
A
A
B
B
B
B
B
表2
根据上表,完成该方案所需的最短时间为10分钟。请回答以下问题:
(1)如果安排顺序不变,工件C在机器2上的加工时间变更为4,实现该加工顺序的最短时间为____分钟。
(2)定义函数sort_t (item,m),用于确定某工件在各机器上的加工顺序,其中item表示工件名称(如’A’表示工件A),m表示机器数量(即加工工序数)。函数会根据该工件在每台机器上的加工时间,按加工时间从短到长,返回其加工顺序。加工时间数据存储在全局列表worktime中,worktime[i]表示第i+1个工件在各机器上的加工时间列表。
def sort_t (item,m):
t = worktime[ord (item) - 65]
index = [i for i in range (1,m+1)]
for i in range (0,m-1):
for j in range (0,m-i-1):
if :
index[j],index[j+1] = index[j+1],index[j]
return index
加框处代码有误,请改正。____
(3)为求得按照安排顺序进行任务所需的最短时间,编写以下python程序,请在划线处填写合适的代码。
def check (begin_time,end_time,worked): #检查给定时间范围内机器使用状态
for time in range (begin_time,end_time):
if ①____:
return False
return True
def pro (worklist,worktime):
lasttime = [0] * (n+1)
for i in range (len (worklist)):
nowitem = ord (worklist[i][0]) – 65
nownum = int (worklist[i][1:]) – 1
costtime = worktime[nowitem][nownum]
②____
while True:
if check (time,time + costtime,nownum):
③____
timeline[nownum][t] = 1
lasttime[nowitem] = time + costtime -1
break
time += 1
ans=0
for i in range (0,n):
if ans < lasttime[i]:
ans = lasttime[i]
return ans
n,m = map (int,input ().split ()) #从终端输入n和m的值
timeline = [[0]*(30*n) for i in range (m+1)] #生成(30*n)*(m+1)的二维表
'''
通过调用sort_t函数,对工件C在各机器上的加工顺序进行预处理,并将得到的序列按顺序插入到worklist列表的随机位置中。worklist列表最终存放预设的安排顺序,如worklist=['A1', 'A2', 'B1', 'C2', 'C1', 'B2']
worktime列表存放工件在各机器上的加工时间,worktime[i]表示第i+1个工件在每个机器上的加工时间。如worktime=[3,2],[2,5],[2,4]
代码略
'''
print (pro (worklist,worktime))
第1页/共1页
学科网(北京)股份有限公司
$
浙江强基联盟2025年10月高三联考
技术试题
浙江强基联盟研究院 命制
注意事项:
1.答题前,考生务必将自己的姓名、考生号、考场号、座位号填写在答题卡上。
2.回答选择题时,选出每小题答案后,用铅笔把答题卡上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。回答非选择题时,将答案写在答题卡上。写在本试卷上无效。
3.考试结束后,将本试卷和答题卡一并交回。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 某动物保护机构推出“动物保护与科普”平台,24小时播放园内实时画面,并配有动物科普文章、中英文讲解功能。注册用户可以收藏喜欢的动物,并接收相关资讯推送。下列关于数据的说法,正确的是( )
A. 园内实时播放画面属于大数据中的图数据
B. 直播视频和讲解音频都属于结构化数据
C. 不同格式的数据不能存储在同一存储介质中
D. 分析用户的收藏和观看数据可用于个性化推荐
【答案】D
【解析】
【详解】本题考查数据相关内容。A选项错误,实时画面属于视频数据,通常为非结构化数据或流数据,而“图数据”多指图论中的网络结构数据。B选项错误,视频和音频均为非结构化数据,结构化数据通常指具有固定格式(如表格)的数据。C选项错误,不同格式的数据(如文本、视频、音频)可以存储在同一存储介质中,如硬盘或云存储。D选项正确,通过分析用户的收藏和观看行为数据,可以运用算法实现个性化推荐,提升用户体验。故本题答案是D选项。
2. 某动物保护机构推出“动物保护与科普”平台,24小时播放园内实时画面,并配有动物科普文章、中英文讲解功能。注册用户可以收藏喜欢的动物,并接收相关资讯推送。下列措施中,不能有效提升该平台数据安全的是( )
A. 定期验证用户的身份信息 B. 删除视频缓存释放存储空间
C. 不定期更新平台管理员密码 D. 对系统进行漏洞扫描和修补
【答案】B
【解析】
【详解】本题考查数据安全相关内容。A选项能提升安全,通过定期验证用户身份可防止身份伪造。B选项不能提升安全,删除视频缓存仅用于释放存储空间,与数据安全无关。C选项能提升安全,不定期更新管理员密码可降低密码被破解的风险。D选项能提升安全,漏洞扫描和修补是防范系统入侵的重要措施。故本题答案是B选项。
3. 某动物保护机构推出“动物保护与科普”平台,24小时播放园内实时画面,并配有动物科普文章、中英文讲解功能。注册用户可以收藏喜欢的动物,并接收相关资讯推送。以下关于该平台数据编码与数据存储的说法,正确的是( )
A. 采集实时画面需要经过模数转换
B. 科普文章和讲解音频使用相同的编码方式
C. 注册用户的收藏数据存储在内存RAM中
D. 讲解同一内容的中文音频和英文音频存储容量一定相同
【答案】A
【解析】
【详解】本题考查的是数据编码。A选项正确,采集实时画面需要经过模数转换(ADC),将模拟信号转换为数字信号。B选项错误,科普文章为文本数据,使用文本编码(如UTF-8),讲解音频为声音数据,使用音频编码,二者编码方式不同。C选项错误,注册用户的收藏数据通常存储在外存(如硬盘)中,而不是仅存储在内存RAM中。D选项错误,同一内容的中文和英文音频因发音、语速和时长差异,存储容量不一定相同。故选A。
4. 某校利用物联网、云计算、大数据等技术,构建了“智慧校园”系统。该系统可远程控制教室照明和温度,通过人脸识别进行学生课堂考勤,食堂就餐、超市购物时可使用校园一卡通刷卡支付或手机扫码支付。终端数据实时同步到校园云平台,使用者可通过浏览器或手机App进行查询。关于该系统中数据处理过程的说法,不正确的是( )
A. 数据在同步到云平台过程中可能会丢失
B. 使用校园一卡通刷卡支付需要访问数据库
C. 数据及时加工处理才能充分发挥其价值
D. 加工处理后的数据会以相同形式向不同通信端口输出
【答案】D
【解析】
【详解】本题考查的是数据处理。
A选项正确,数据在同步到云平台过程中,受网络波动、故障等影响,可能会发生丢失,这是云计算中的常见风险,需要通过备份或重传机制缓解。
B选项正确,使用校园一卡通刷卡涉及验证身份和扣费,需要实时访问数据库以查询余额和记录交易。
C选项正确,数据只有经过及时加工处理,才能转化为有价值的洞察。
D选项不正确,加工处理后数据会根据不同通信端口(如浏览器、手机App)的需求,以不同形式输出,例如浏览器可能输出HTML格式,App可能输出JSON格式,并非相同形式。
故本题应选D。
5. 某校利用物联网、云计算、大数据等技术,构建了“智慧校园”系统。该系统可远程控制教室照明和温度,通过人脸识别进行学生课堂考勤,食堂就餐、超市购物时可使用校园一卡通刷卡支付或手机扫码支付。终端数据实时同步到校园云平台,使用者可通过浏览器或手机App进行查询。下列关于该系统中硬件和网络的说法,正确的是( )
A. 远程控制教室灯光的客户端无需配置IP地址
B. 用户扫码支付时使用的手机不是该系统的硬件
C. 消费数据同步至云平台需要网络协议的支持
D. 服务器的硬盘容量越大,支付结算的处理速度越快
【答案】C
【解析】
【详解】本题考查的是信息系统组成。A选项错误,远程开启教室灯光属于物联网控制,需要通过网络地址(如IP地址)定位和访问设备控制器。B选项错误,该系统包括用户使用的手机作为终端硬件,用于App查询、扫码支付等功能,是系统硬件组成部分。C选项正确,消费数据同步至云平台涉及数据传输,需要网络协议(如TCP/IP、HTTP)的支持,以确保数据可靠性和安全性。D选项错误,服务器硬盘容量主要影响存储能力,而非处理速度。故本题应选C。
6. 某校利用物联网、云计算、大数据等技术,构建了“智慧校园”系统。该系统可远程控制教室照明和温度,通过人脸识别进行学生课堂考勤,食堂就餐、超市购物时可使用校园一卡通刷卡支付或手机扫码支付。终端数据实时同步到校园云平台,使用者可通过浏览器或手机App进行查询。下列关于该系统功能与设计的说法,不正确的是( )
A. 输入设计是系统设计的关键环节
B. 系统测试需要在开发完成后进行
C. 数据库系统是“智慧校园”的基础
D. 在开发过程中需要为系统将来可能的扩充与修改做准备
【答案】B
【解析】
【详解】本题考查信息系统搭建相关内容。A选项正确,输入设计(如数据采集、用户交互界面)是系统设计的关键环节,直接影响数据准确性和用户体验。B选项不正确,系统测试不应仅在开发完成后进行,而应贯穿整个开发过程(如单元测试、集成测试)。C选项正确,数据库系统用于存储和管理各类数据(如考勤、消费记录),是“智慧校园”系统的核心基础。D选项正确,在开发过程中,应考虑系统的可扩展性和模块化设计,为将来可能的扩充(如新增功能)与修改预留接口和灵活性。故本题答案是B选项。
7. 某校利用物联网、云计算、大数据等技术,构建了“智慧校园”系统。该系统可远程控制教室照明和温度,通过人脸识别进行学生课堂考勤,食堂就餐、超市购物时可使用校园一卡通刷卡支付或手机扫码支付。终端数据实时同步到校园云平台,使用者可通过浏览器或手机App进行查询。该系统通过人脸识别进行考勤,以下不会影响识别准确率的因素是( )
A. 算法模型参数 B. 网络传输带宽 C. 多样化的训练数据 D. 人脸与摄像头距离
【答案】B
【解析】
【详解】本题考查的是人工智能。A选项错误,算法模型参数(如阈值、权重)直接影响人脸特征提取和匹配的精确度,参数优化可提升准确率。B选项正确,网络传输带宽主要影响数据同步速度和延迟(如图像上传到云端的时间),但不会直接影响人脸识别算法本身的准确率(准确率取决于图像质量和模型,而非带宽)。C选项错误,多样化的训练数据能提升模型的泛化能力,减少对光照、角度等变异的敏感性,从而提高识别准确率。D选项错误,人脸与摄像头距离会影响图像清晰度和细节捕捉,距离过远或过近可能导致模糊或畸变,降低识别准确率。故本题应选B。
8. 某包含7个节点的完全二叉树,将某叶子节点在前序遍历、中序遍历、后序遍历中的位置序号分别记为x、y、z,则|x-y|+|y-z|的值为( )
A. 0 B. 1 C. 2 D. 3
【答案】C
【解析】
【详解】本题考查二叉树相关内容。一个包含7个节点的完全二叉树是满二叉树,节点按层序编号为1(根)、2、3(第二层)、4、5、6、7(第三层),叶子节点为4、5、6、7。
前序遍历(根-左-右):1,2,4,5,3,6,7
中序遍历(左-根-右):42,5,1,6,3,7
后序遍历(左-右-根):4,5,2,6,7,3,1
对于任意叶子节点:
节点4:x=3,y=1,z=1 → |3-1|+|1-1| = 2
节点5:x=4,y=3,z=2 → |4-3|+|3-2| = 2
节点6:x=6,y=5,z=4 → |6-5|+|5-4| = 2
节点7:x=7,y=7,z=5 → |7-7|+|7-5| = 2
所有叶子节点的计算结果均为2,因此|x-y|+|y-z|的值为2。
故本题答案是C选项。
9. Web浏览器中有“前进”和“后退”的功能,原理是使用两个栈(back栈和for栈)来存储用户访问的网址。若打开一个新网页,将原网页压入back栈中。若按下“←”键,将当前页面压入for栈,并从back栈中弹出一个页面作为当前页面,当back栈空时,命令忽略。若按下“→”键,将当前页面压入back栈,并从for栈中弹出一个页面作为当前页面,当for栈空时,命令忽略。现两栈共享空间V[0]~V[9],当前栈内存储网页情况如图所示,topb指针指向back栈顶,topf指针指向for栈顶,▲表示访问新网页,经过“▲→▲→←▲→”后,topf指向( )
A. 7 B. 8 C. 9 D. 10
【答案】D
【解析】
【详解】本题考查栈操作相关内容。分析题目内容,其操作过程如图所示:
故本题答案是D选项。
10. 某Python程序如下:
q=[0]*7
s ='abcdabc'
head,tail = 0,0
for i in s:
if tail-head == 3:
head += 1
elif i not in q[head:tail]:
q[tail] = i
tail += 1
print (q[head:tail])
执行上述程序后,输出的结果为( )
A. [ 'c', 'a'] B. [ 'c', 'd'] C. [ 'd'] D. [ 'b', 'c']
【答案】A
【解析】
【详解】本题考查队列。q模拟一个队列(通过head和tail维护有效部分),遍历字符串s='abcdabc'中的每个字符i,维护一个最多包含3个不重复字符的子序列。当队列长度达到3时,移除队首元素(head +=1),但不添加当前i:当长度小于3且i不在当前队列中时,才添加i到队尾。
逐步模拟执行过程:
初始化:q = [0,0,0,0,0,0,0],head=0,tail=0。
i='a':长度=0<3,'a'不在q[0:0](空),添加q[0]= 'a',tail=1。当前队列:['a']。
i='b':长度=1<3,'b'不在['a'],添加q[1]= 'b',tail=2。当前队列:['a', 'b']。
i='c':长度=2<3,'c'不在['a', 'b'],添加q[2]= 'c',tail=3。当前队列:['a', 'b', 'c']。
i='d':长度=3==3,head+=1 (head=1),跳过添加。当前队列:['b', 'c']。
i='a':长度=2<3,'a'不在['b', 'c'],添加q[3]= 'a',tail=4。当前队列:['b', 'c', 'a']。
i='b':长度=3==3,head+=1 (head=2),跳过添加。当前队列:['c', 'a']。
i='c':长度=2<3,'c'在['c', 'a'],不添加。当前队列:['c', 'a']。
最终print(q[head:tail])输出['c', 'a']。因此,本题选择A。
11. 以下python程序用“双指针”检测链表中的环并找到环的起始点,快指针(fast)步进为2,慢指针(slow)步进为1,若存在环,快慢指针一定会在环内相遇。
gra=[['水星',1],[ '金星',2],[ '地球',3],[ '火星',4],[ '木星',2]
head = 0
slow = fast = head
while True:
slow = gra[slow][1]
fast = (1)
if slow == fast:
meetn = slow
break
p = (2)
q = meetn
while p != q:
p = gra[p][1]
q = gra[q][1]
print (gra[p][0])
运行程序,输出结果为“地球”,上述程序中划线(1)(2)处可选的代码有:
①gra[fast][1] ②gra[gra[fast][1]][1] ③head ④meetn
则(1)(2)处正确的语句顺序是( )
A. ②③ B. ②④ C. ①③ D. ①④
【答案】A
【解析】
【详解】本题考查链表操作相关内容。分析题目内容,推知:
该程序模拟链表检测环,并找到环的起始节点。链表:水星(0)→金星(1)→地球(2)→火星(3)→木星(4)→地球(2),环入口为地球(2)。
(1)处为②gra[gra[fast][1][1](快指针前进两步)。
(2)处为③head(一个指针从头开始)。
原理:
阶段一(环检测):
慢指针每次走1步,快指针每次走2步
如果有环,快慢指针必定会在环内相遇
阶段二(找环起点):
一个指针从链表头开始,另一个从相遇点开始
两指针都每次走1步,相遇处就是环的起始点
数学原理:
设链表头到环起点距离为a,环起点到相遇点距离为b,环长为c。
相遇时:慢指针走了a+b,快指针走了a+b+nc(n圈)
因为快指针速度是慢指针2倍:2 (a+b) = a+b+nc
解得:a = nc-b = (n-1) c + (c-b)
这意味着从头走a步 = 从相遇点走(c-b)步,两者会在环起点相遇。
本例输出"地球",因为地球是环的起始节点。
故本题答案是A选项。
12. 对非降序数组nums循环右移一定位数,构建新的数组,如nums=[1,2,3,4,5],循环右移3位后新数组为[3,4,5,1,2],以下Python程序尝试在循环右移后的数组中查找到目标值key。
def search (nums,key):
i,j=0,len (nums)-1
while i <= j:
m= (i+j)//2
if nums[m] == key:
return True
if nums[i] <= nums[m]:
if nums[i] <= key < nums[m]:
j=m-1
else:
i=m+1
else:
if nums[m] < key <= nums[j]:
i=m+1
else:
j=m-1
return False
调用函数,以下哪组数据的返回值与其它三项不同( )
A. nums = [3,1],key = 1 B. nums = [2,3,4,5,6],key = 2
C. nums = [1,0,1,1,1],key = 0 D. nums = [4,5,6,7,0,1,2],key = 4
【答案】C
【解析】
【详解】本题考查数据查找操作相关内容。
逐个跟踪执行过程:
A.nums = [3,1],key = 1
m=0: nums[0]=3≠1,nums[0]≤nums[0],但3≤1<3为假→i=1
m=1: nums[1]=1=key → 返回True
B.nums=[2,3,4,5,6],key=2
m=2: nums[2]=4≠2,nums[0]≤nums[2],且2≤2<4为真→j=1
m=0: nums[0]=2=key → 返回True
C.nums=[1,0,1,1,1],key=0
m=2: nums[2]=1≠0,nums[0]≤nums[2],但1≤0<1为假→i=3
m=3: nums[3]=1≠0,nums[3]≤nums[3],但1≤0<1为假→i=4
m=4: nums[4]=1≠0,nums[4]≤nums[4],但1≤0<1为假→i=5
i>j,退出循环 → 返回False
D.nums=[4,5,6,7,0,1,2],key=4
m=3: nums[3]=7≠4,nums[0]≤nums[3],且4≤4<7为真→j=2
m=1: nums[1]=5≠4,nums[0]≤nums[1],且4≤4<5为真→j=0
m=0: nums[0]=4=key → 返回True
结果:A、B、D返回True,C返回False
故本题答案是C选项。
二、非选择题(本大题共3小题,其中第13小题8分,第14小题9分,第15小题9分,共26分)
13. 某小组在教学楼搭建了一套智能照明系统,如果监测到有人经过且环境光线值h低于阈值,智能终端控制亮灯,否则关灯。智能终端每隔1分钟通过无线WiFi将采集到的数据上传至服务器,当服务器检测到异常情况时,会向管理员发送警示信息,并通过智能终端控制指示灯闪烁示警。用户可以通过手机APP查看系统数据。请回答下列问题:
(1)用户通过手机APP查看数据的过程中,数据不需要流经____(单选,填字母)。
A.传感器 B.服务器 C.数据库
(2)以下关于该系统的说法,正确的是____(单选,填字母)。
A.灯光的亮灭可由服务器直接控制
B.可使用加速度传感器检测是否有人经过
C.光线值与阈值的比较可由智能终端或服务器完成
(3)若数据库故障,可能会引发的问题有____(多选,填字母)。
A.光线传感器无法正常采集光线数据 B.智能终端无法向服务器发送数据
C.用户无法通过手机App查询历史数据 D.服务器接收到的数据无法存储
(4)以下用于判断是否亮灯流程图,正确的是____(多选,填字母)。
A. B. C. D.
(5)系统运行一段时间后,发现数据存储量骤增,网络带宽占用过大,系统运行效率降低,请提出2种改进措施。____
【答案】 ①. A ②. C ③. CD ④. AC ⑤. ①降低上传频率,减少冗余数据的上传。②分批上传,上传前对数据进行压缩。③定期删除或归档超过一定时限的非关键数据
【解析】
【详解】本题考查搭建信息系统
(1)用户通过手机APP查看数据时,数据主要从服务器或数据库获取并传输到APP显示。传感器负责采集原始数据(如光线值或有人经过信号),但在查看过程中已不需要流经传感器(传感器仅用于数据采集端)。
(2)A选项错误,灯光的亮灭由智能终端直接控制(监测到有人且光线低于阈值时控制),服务器仅在异常时通过智能终端间接控制指示灯闪烁,而非直接控制灯光。
B选项错误,检测是否有人经过通常使用红外传感器、超声波传感器或运动传感器,加速度传感器主要用于检测物体加速度或振动,不适合精确检测人经过。
C选项正确,系统描述中,智能终端可本地监测光线值h与阈值的比较并控制灯光:服务器接收上传数据后,也可进行比较检测异常,因此比较可由终端或服务器完成。
(3)A选项错误,光线传感器采集数据是硬件层面独立过程,不依赖数据库存储,仅需正常供电和传感器自身功能。
B选项错误,智能终端每隔1分钟通过WiFi上传数据到服务器的过程依赖网络连接,而非数据库;数据库故障不会阻止上传,仅影响后续存储。
C选项正确,用户通过手机APP查询历史数据(如过去的光线值或控制记录)需从数据库读取,故障会导致无法查询。
D选项正确,服务器接收到的数据(如上传的采集数据)需存储到数据库,故障将导致数据无法持久化存储,可能丢失历史记录。
(4)B错,灯灭操作应在循环内部。D错,若h大于阈值无灯灭操作。
(5)①降低上传频率,减少冗余数据的上传。②分批上传,上传前对数据进行压缩。③定期删除或归档超过一定时限的非关键数据
14. 智能照明系统已采集某教学楼一星期的灯光数据,存储于“data.xlsx”文件中,部分数据如图a所示,其中“是否亮灯”一栏,1表示灯亮,0表示灯灭。现要对这些数据进行分析,请回答下列问题:
(1)现要统计一周内该教学楼亮灯次数最多的区域,并统计该区域平均亮灯次数超过20次的小时段,绘制如图b所示的柱形图。实现上述功能的部分Python程序如下,请选择合适的代码填入划线处(单选)。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel (’data.xlsx’)
①____
②____
max_area = df2.at[0,"监测点"]
print ("亮灯次数最多的区域是",max_area)
df3=df[df["监测点"] =max_area]
③____
for i in df4.index:
df4[i] = df4[i]/7
df5 = df4[df4.values >= 20]
plt.bar (df5.index,df5.values)
#设置绘图参数,显示如=图b所示的柱形图,代码略
程序中①②③处可选的代码有:
A.df1 = df.groupby ("监测点",as_index=False).是否亮灯.sum() # 分组求和
B.dfl = df.groupby ("日期",as_index=False).sum()
C.df4 = df3.groupby ("时",as_index=True).是否亮灯.sum()
D.df2 = dfl.sort_values ("是否亮灯",ascending=False) #降序排序
E.df4 = df3.groupby ("时",as_index=True).是否亮灯.mean() #分组求平均
F.df2=df1.sort_values ("监测点",ascending=False)
(2)异常状态定义为:当光照强度低于或等于阈值且有人经过但未亮灯,或光照强度高于阈值但亮灯。如果一小时内,服务器检测出系统出现30次以上的异常状态,或者出现连续20次的异常状态,则向管理员发送警示信息。实现上述功能的部分Python程序如下,请在划线处填入合适的代码。
#获取光线阈值存入变量h中
events = []
while True:
#每隔一分钟获取当前时间戳cur_time
#清理events中超过1小时的记录,保留最近59分钟内(含59)的记录,代码略
#获取当前光照值curl,红外检测数据curp(True为有人经过,False为无人经过),亮灯状态curb(1为灯亮,0为灯灭),代码略
①____
if curl <= h and curp == True and curb == 0:
is_abnormal = True
elif ②____:
is_abnormal = True
events.append ([cur_time,is_abnormal])
cnt=0; con=0; max_con=0
for e in events:
if e[1] == True:
cnt += 1
③____
if con > max_con:
max_con = con
else:
con=0
if cnt >= 30 or max_con >= 20:
#服务器向管理员发送警示信息,并重置events为空,代码略
【答案】 ①. A ②. D ③. C ④. is_abnormal = False ⑤. elif curl > h and curb == 1 ⑥. con+=1
【解析】
【详解】本题考查信息系统数据处理相关内容。分析题目内容,推知:
(1)程序目的是统计一周内亮灯次数最多的区域,并绘制该区域平均亮灯次数超过20次的小时段柱形图。思路为先统计每个区域的总亮灯次数,然后排序找出亮灯次数最多的区域,接下来分析分析该区域各小时段的平均亮灯次数,接下来筛选找出平均次数≥20的小时段绘图即可。
①处:需要对数据按“监测点”进行分组,统计每个区域的总亮灯次数(即“是否亮灯”为1的次数之和)。正确选项是A,按“监测点”分组,对“是否亮灯”求和,得到每个区域的总亮灯次数。
②处:在得到各区域亮灯总次数后,需按亮灯次数降序排序,以便找出亮灯最多的区域。正确选项是D,按“是否亮灯”列降序排列,第一行即为亮灯最多的区域。
③处:需要按小时分组,对亮灯次数求和,以便后续计算平均值。选项C正确。
(2)①处:每次循环开始时初始化is_abnormal为False,因为需要判断当前分钟是否异常。填入is_abnormal = False。
②处:对应第二个异常条件,光照强度高于阈值但亮灯。填入curl > h and curb == 1。
③处:在异常状态下,连续异常次数con需增加1。填入con += 1
15. 某工厂利用m台机器加工n个工件,每个工件需要经过m道工序,每台机器负责其中一道工序(每道工序不可拆分),每道工序的加工时间均不超过30分钟,且同一时刻每台机器只能加工一个工件。
现给定3个工件在2台机器上加工的安排顺序,如“A1 A2 B1 C2 C1 B2”,表示先安排工件A在机器1上加工,再安排A在机器2上加工,然后安排工件B在机器1上加工,再安排工件C在机器2上加工,以此类推。“安排顺序”只要求按照给定的顺序安排每个操作,不一定是各机器上的实际操作顺序。
给定工件在各机器上的加工时间,如表1所示,单位为分钟。
工件号
机器1
机器2
A
3
2
B
2
5
C
4
2
表1
若给定A1 A2 B1 C2 C1 B2的安排顺序,为求得完成该优先顺序规定的任务需要的最短时间,可进行如下安排:
时间(分钟)
1
2
3
4
5
6
7
8
9
10
机器1 加工工件
A
A
A
B
B
C
C
C
C
无
机器2 加工工件
C
C
无
A
A
B
B
B
B
B
表2
根据上表,完成该方案所需的最短时间为10分钟。请回答以下问题:
(1)如果安排顺序不变,工件C在机器2上的加工时间变更为4,实现该加工顺序的最短时间为____分钟。
(2)定义函数sort_t (item,m),用于确定某工件在各机器上的加工顺序,其中item表示工件名称(如’A’表示工件A),m表示机器数量(即加工工序数)。函数会根据该工件在每台机器上的加工时间,按加工时间从短到长,返回其加工顺序。加工时间数据存储在全局列表worktime中,worktime[i]表示第i+1个工件在各机器上的加工时间列表。
def sort_t (item,m):
t = worktime[ord (item) - 65]
index = [i for i in range (1,m+1)]
for i in range (0,m-1):
for j in range (0,m-i-1):
if :
index[j],index[j+1] = index[j+1],index[j]
return index
加框处代码有误,请改正。____
(3)为求得按照安排顺序进行任务所需的最短时间,编写以下python程序,请在划线处填写合适的代码。
def check (begin_time,end_time,worked): #检查给定时间范围内机器使用状态
for time in range (begin_time,end_time):
if ①____:
return False
return True
def pro (worklist,worktime):
lasttime = [0] * (n+1)
for i in range (len (worklist)):
nowitem = ord (worklist[i][0]) – 65
nownum = int (worklist[i][1:]) – 1
costtime = worktime[nowitem][nownum]
②____
while True:
if check (time,time + costtime,nownum):
③____
timeline[nownum][t] = 1
lasttime[nowitem] = time + costtime -1
break
time += 1
ans=0
for i in range (0,n):
if ans < lasttime[i]:
ans = lasttime[i]
return ans
n,m = map (int,input ().split ()) #从终端输入n和m的值
timeline = [[0]*(30*n) for i in range (m+1)] #生成(30*n)*(m+1)的二维表
'''
通过调用sort_t函数,对工件C在各机器上的加工顺序进行预处理,并将得到的序列按顺序插入到worklist列表的随机位置中。worklist列表最终存放预设的安排顺序,如worklist=['A1', 'A2', 'B1', 'C2', 'C1', 'B2']
worktime列表存放工件在各机器上的加工时间,worktime[i]表示第i+1个工件在每个机器上的加工时间。如worktime=[3,2],[2,5],[2,4]
代码略
'''
print (pro (worklist,worktime))
【答案】 ①. 14 ②. t[index[j]-1] > t[index[j+1]-1] ③. timeline[workid][time]或timeline[workid][time] == 1 ④. time=lasttime[nowitem]+1 ⑤. for t in range (time,time + costtime)
【解析】
【详解】本题考查流水线调度问题中的作业安排与时间优化,核心是理解“安排顺序”与“实际执行时间”的区别,以及如何在满足约束条件下安排工序,使总时间最短。
(1)若工件C在机器2上的加工时间变更为4,即各零件加工时间为“[[3,2],[2,5],[4,4]”安排顺序为“A1 A2 B1 C2 C1 B2”的情况下,具体方案为
时间
1
2
3
4
5
6
7
8
9
10
11
12
13
14
机器1加工工件
A
A
A
B
B
C
C
C
C
机器2加工工件
A
A
C
C
C
C
B
B
B
B
B
(2)原代码直接使用机器编号(1-indexed)索引加工时间列表(0-indexed),导致排序时访问索引错误,可在比较时使用t[index[j]-1]和t[index[j+1]-1],并改为升序排序(原为降序),即t[index[j] - 1] > t[index[j + 1] - 1]:
(3)完整代码如下:
def check (begin_time,end_time,worked):
for time in range (begin_time,end_time):
if timeline[workid][time]:①
return False
return True
def pro (worklist,worktime):
lasttime=[0]*(n+1) #记录每个工件上一道工序的完成时间
for i in range (len (worklist)):
nowitem = ord (worklist[i][0])-65 # 工件序号
nownum = int (worklist[i][1:])-1 # 机器序号(0-indexed)
costtime = worktime[nowitem][nownum] #加工时间
② # 设置起始时间time,应该为lasttime[nowitem](该工件上一道工序完成时间)
while True:
if check (time,time+costtime,nownum): #如果机器nownum在[time,time+costtime)空闲
③ # 占用该时间段
for t in range (time,time+costtime):
timeline[nownum][t] = 1 # 标记为占用
lasttime[nowitem] = time + costtime-1 # 更新该工件的最后完成时间
break
time += 1 # 否则,尝试下一个时间点
ans = 0
for i in range (0,n):
if ans < lasttime[i]:
ans = lasttime[i]
return ans
worklist= ['A1', 'A2', 'B1', 'C2', 'C1', 'B2']
worktime=[[3,2],[2,5],[4,2]]
# n,m=map (int,input ().split ())
n,m=3,2
timeline=[[0]* (n*30) for i in range (m+1)]
print (pro (worklist,worktime))
①处填入timeline[workid][time] == 1,用于检查机器在时间点是否被占用。
②处初始化time,从该工件上一道工序完成时间后一个时刻开始尝试,所以填:time = lasttime[nowitem]+1
③处填入for t in range (time,time + costtime),占用机器在[time,time+costtime)时间段,标记为已使用
第1页/共1页
学科网(北京)股份有限公司
$