内容正文:
高三技术学科练习
注意事项:
1.本题共12页,满分100分,考试时间90分钟。
2.答题前,在答题卡指定区域填写班级、姓名、考场号、座位号及准考证号。
3.所有答案必须写在答题卡上,写在试题上无效。
4.结束后,只需上交答题卡。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题有四个选项,只有一个符合题目要求,不选、多选、错选均不给分)
阅读下列材料,完成下面小题:
某医院的医疗系统,患者可以通过医院自助终端、小程序等自助挂号;取号后可到诊室扫条形码签到,等待叫号;就诊中还可在线查看检查报告;医生开方后可直接到窗口取药,就诊后通过小程序查看医生的用药指南和注意事项。
1. 下列对该系统中的数据、信息及处理过程的相关描述,正确的是( )
A. 患者挂号后生成条形码属于解码的过程
B. 生成的检查报告文档是信息
C. 医生开药方,属于数据的存储
D. 签到扫条形码,属于数据的采集
2. 下列为系统增加的功能中,采用了人工智能技术的是( )
A. 将条形码换成二维码 B. 就诊后增加让患者评价医生的功能
C. 为盲人提供语音互动导医功能 D. 在小程序中添加医院科室分布查询
3. 下列关于该系统组成的描述,不正确的是( )
A. 该系统的主要用户是医生和患者 B. 该医疗系统属于系统软件
C. 患者手机也属于该系统中的硬件 D. 该系统的历史数据可保存在数据库中
4. 下列举措不能提升系统安全性的是( )
A. 优化系统界面设计,提升用户操作体验
B. 采用磁盘阵列,降低数据丢失风险
C. 部署防火墙,关闭闲置端口
D. 定期扫描并修复系统漏洞
5. 医院服务器里存的原始CT断层图,主流为512×512像素、4096级灰度,检查报告截图(给患者看)尺寸压缩至50×25像素,256级灰度的压缩图,丢失大量灰度与细节,不能用于精准诊断。主流图与压缩图的压缩比约为( )
A. 3360:1 B. 310:1 C. 210:1 D. 10:1
6. 下列有关该系统网络相关描述正确的是( )
A. 该系统全部使用无线网络技术,可靠性更高
B. 自助终端必须使用静态IP地址
C. 患者手机需接入医院局域网才能查看报告
D. 该系统中网络协议主要使用TCP/IP
【答案】1. D 2. C 3. B 4. A 5. B 6. D
【解析】
【详解】1. 本题考查数据采集、编码与信息处理的相关知识。A选项错误,患者挂号后生成条形码属于编码的过程,而非解码。B选项错误,检查报告文档本身属于数据,经解读后才成为信息。C选项错误,医生开药方属于数据的生成,而非数据的存储。D选项正确,签到扫条形码将条码信息读取到系统中,属于数据的采集。因此,本题选择D选项。
2. 本题考查人工智能技术应用的相关知识。A选项错误,条形码换成二维码属于编码技术的改进,不属于人工智能。B选项错误,患者评价医生的功能属于常规的反馈功能。C选项正确,为盲人提供语音互动导医功能运用了语音识别、语音合成等人工智能技术。D选项错误,科室分布查询属于常规信息检索功能。因此,本题选择C选项。
3. 本题考查信息系统组成要素的相关知识。A选项正确,该系统的主要用户是医生和患者。B选项错误,该医疗系统属于应用软件,而非系统软件。C选项正确,患者手机是该系统中的硬件设备。D选项正确,该系统的历史数据可保存在数据库中。因此,本题选择B选项。
4. 本题考查系统安全防护的相关知识。A选项错误,优化系统界面设计提升的是用户体验,不能提升系统安全性。B选项正确,采用磁盘阵列可以降低数据丢失风险,提升安全性。C选项正确,部署防火墙并关闭闲置端口可以提升安全性。D选项正确,定期扫描并修复系统漏洞可以提升安全性。因此,本题选择A选项。
5. 本题考查图像数据量与压缩比计算的相关知识。原始CT断层图为512×512像素、4096级灰度,4096级灰度需12位二进制表示,其数据量为512×512×12位;压缩图为50×25像素、256级灰度,256级灰度需8位二进制表示,其数据量为50×25×8位,压缩比为512×512×12÷(50×25×8)≈314.6,约等于310:1。因此,本题选择B选项。
6. 本题考查网络技术应用的相关知识。A选项错误,该系统并非全部使用无线网络,有线网络可靠性通常更高。B选项错误,自助终端不必须使用静态IP地址。C选项错误,患者可通过互联网使用小程序查看报告,无需接入医院局域网。D选项正确,该系统中网络通信主要遵循TCP/IP协议。因此,本题选择D选项。
7. 某算法的流程图如图所示,数组a为[3,5,8,12,17,21,26,30]。图中判断框的条件a[m]<x改为a[m]≤x,则以下x值中,会使输出s改变的是( )
A. 3 B. 8 C. 17 D. 26
【答案】D
【解析】
【详解】本题考查的是流程图识读。数组a=[3,5,8,12,17,21,26,30],二分查找,s 记录循环次数。原判断a[m]< x;修改后a[m]≤x ,A、B、C:两种条件下 s 都不变。D选项,x=26:原 s=3,修改后 s=4,s 发生变化。故选 D。
8. 某栈S初始为空。队列Q初始时从队首到队尾依次为“竹”“梅”“菊”“兰”。操作A:队首元素出队并入栈S;操作B:栈顶元素出栈并入队尾。执行操作序列A①A②B③AA后,栈S从栈底到栈顶为“梅”“兰”“竹”“菊”,则①②③处依次应为( )
A. ①B ②A ③A B. ①A ②B ③A C. ①B ②A ③B D. ①A ②A ③B
【答案】A
【解析】
【详解】本题考查栈和队列的基本操作与特性。初始队列Q队首到队尾为竹、梅、菊、兰,栈S为空。验证第一个选项:第一步执行A操作,队首竹出队入栈,此时S栈底到栈顶为竹,Q队首到队尾为梅、菊、兰。接着执行①处的B操作,栈顶竹出栈入队尾,此时S为空,Q队首到队尾为梅、菊、兰、竹。之后执行A操作,队首梅出队入栈,此时S栈底到栈顶为梅,Q队首到队尾为菊、兰、竹。接着执行②处的A操作,队首菊出队入栈,此时S栈底到栈顶为梅、菊,Q队首到队尾为兰、竹。之后执行B操作,栈顶菊出栈入队尾,此时S栈底到栈顶为梅,Q队首到队尾为兰、竹、菊。接着执行③处的A操作,队首兰出队入栈,此时S栈底到栈顶为梅、兰,Q队首到队尾为竹、菊。最后执行末尾的两个连续A操作,队首竹出队入栈,队首菊出队入栈,最终S从栈底到栈顶为梅、兰、竹、菊,完全符合题目要求,其余选项验证后均无法得到对应结果。故答案为:A。
9. 某二叉树根节点为A,其中序遍历结果为D-C-E-F-A-B。则该二叉树的叶子节点不可能同时为( )
A. B,C,E B. B,D C. B,D,E D. B,C,F
【答案】A
【解析】
【详解】本题考查二叉树遍历与叶子节点判断相关知识。中序遍历结果为D-C-E-F-A-B,根节点A将序列分为左子树{D,C,E,F}和右子树{B},右子树仅一个节点B且无子节点,故B必为叶子。对左子树{D,C,E,F}按中序位置(根可为D、C、E、F之一)枚举全部可能的二叉树形态,可得整棵树的叶子节点集合只能是{F,B}、{E,B}、{C,F,B}、{C,B}、{D,F,B}、{D,E,B}、{D,B}这几种。逐一检查:A选项(B,C,E)要求B、C、E同时为叶子,而所有可能的叶子集合中C与E从不同时出现(含C的集合为{C,F,B}、{C,B},含E的集合为{E,B}、{D,E,B}),故不可能;B选项(B,D)可由叶子集合{D,B}实现,可能;C选项(B,D,E)可由{D,E,B}实现,可能;D选项(B,C,F)可由{C,F,B}实现,可能。因此,本题选择A选项。
10. 有如下程序段:
def dx(h,t):
if h == t:
return ""
if h % 3 == 0:
a[t] = a[h]
return dx((h + 1)% 6,(t + 1)% 6)
else:
return a[h] + dx((h + 1)% 6,t)
a=["1","2","3","4","5","6"]
print(dx(0,5))
执行后显示结果是( )
A. 12453 B. 124536 C. 23514 D. 235614
【答案】C
【解析】
【详解】本题考查递归函数与数组元素动态修改相关知识的程序执行。调用dx(0,5)时,h=0满足h%3==0,执行赋值语句a[5] = a[0],即把a[0]的值"1"赋给a[5],a变为["1","2","3","4","5","1"],然后递归dx(1,0);dx(1,0)中h%3!=0,返回a[1]("2")与dx(2,0)拼接;dx(2,0)返回a[2]("3")与dx(3,0)拼接;dx(3,0)中h%3==0,执行a[0] = a[3],把a[3]的值"4"赋给a[0](关键:a[0]由"1"被改为"4"),a变为["4","2","3","4","5","1"],递归dx(4,1);dx(4,1)返回a[4]("5")与dx(5,1)拼接;dx(5,1)返回a[5]("1")与dx(0,1)拼接;dx(0,1)中h%3==0,执行a[1] = a[0],把a[0]的值"4"赋给a[1],a变为["4","4","3","4","5","1"],递归dx(1,2);dx(1,2)返回a[1]("4")与dx(2,2)拼接,dx(2,2)因h==t返回""。逐层回溯得dx(0,1)="4",dx(5,1)="1"+"4"="14",dx(4,1)="5"+"14"="514",dx(3,0)="514",dx(2,0)="3"+"514"="3514",dx(1,0)="2"+"3514"="23514",最终dx(0,5)="23514"。因此,本题选择C选项。
11. 某Python程序段如下,列表a中存有10个互不相等的整数。
p,q = 0,0
for i in range(1,len(a)):
if a[i] < a[q]:
q = i
else:
p=i
执行该程序段后p的值为3,则下列表达式中一定为True的有( )
① a[4] < a[3] ② a[4] < a[0] ③ a[5] < a[4] ④ a[0] < a[4]
A. 1个 B. 2个 C. 3个 D. 4个
【答案】C
【解析】
【详解】本题考查Python循环与列表变量的逻辑推导能力。首先梳理程序执行逻辑:初始p和q都赋值为0,循环i从1到9依次遍历列表元素。每次循环中,如果当前a[i]小于a[q],就更新q为i(q始终记录当前遍历过的所有元素里最小值的下标),否则就更新p为i。已知最终p的值为3,说明循环执行到i=3之后,后续i=4、5、6、7、8、9的所有循环分支都走了if分支,也就是a[4] < a[q],a[5] < a[q],一直到a[9] < a[q],而q在i=3之前的遍历过程中,记录的是i从0到3里的最小值下标。接下来逐一判断四个表达式:①a[4] < a[3]:因为i=3时走了else分支,说明a[3] >= a[q],而a[4] < a[q],所以a[4] < a[q] <= a[3],该式一定成立。②a[4] < a[0]:a[0]是i=0的元素,q记录的是0到3的最小值,a[q] <= a[0],而a[4] < a[q],因此a[4] < a[0],该式一定成立。③a[5] < a[4]:i=4 循环结束后q=4;i=5 进入 if 分支,判断条件就是a[5] < a[0],该式一定成立。④a[0] < a[4]:和②的结论矛盾,该式一定不成立。综上,一定为True的表达式共有3个。故答案为:C。
12. 使用列表a模拟链表结构,每个节点包含[数据域,指针域]。对链表进行分区整理:使所有数据值小于x的节点位于数据值大于等于x的节点之前,且小于x的节点保持原有相对顺序。如链表a= [[3,1],[1,2],[4,3],[2,4],[5,-1]],head = 0。取x=3,分区整理得到1→2→3→4→5。实现该功能的程序段如下,方框处应填入的语句是( )
def part(head,x,a):
dy=len(a)
a.append([-1,head])
t=prv=dy
cur=head
while cur !=-1:
nxt=a[cur][1]
if a[cur][0]<x:
else:
prv= cur
cur=nxt
return a[dy] [1] #返回头指针
A.
if t== prv:
a[prv][1]=nxt
a[cur][1]=a[t][1]
a[t][1]=cur
cur=a[cur][1]
B.
if t != prv:
a[ prv] [1]=nxt
a[t] [1]=cur
a[ cur][1]=a[t][1]
t=cur
C.
if t!= prv:
a[prv] [1]=cur
a[cur][1]=a[t][1]
a[t] [1]=cur
t=a[t] [1]
D.
if t != prv:
a[ prv][1]=nxt
a[ cur] [1]=a[t][1]
a[t] [1]=cur
t=a[t] [1]
A. A B. B C. C D. D
【答案】D
【解析】
【详解】本题考查链表操作与稳定分区算法相关知识的程序填空。算法设置哨兵节点dy指向原链表头,prv记录当前节点cur的前驱,t记录"小于x节点链"的尾部,遍历时若 a[cur][0] < x 则把cur摘出并接到t之后,否则 prv = cur 继续。摘除并接入的正确顺序应为:先 a[prv][1] = nxt 让前驱跳过cur,再 a[cur][1] = a[t][1] 使cur指向小值链原来的后继,再 a[t][1] = cur 使小值链尾部接上cur,最后无条件 t = a[t][1] 更新小值链尾(若 t == prv 说明cur本就在t之后,无需移动,此时 a[t][1] 即为cur,t同样更新为cur)。A选项if条件写成 t == prv 且无t的更新,错误;B选项将 a[t][1] = cur 写在 a[cur][1] = a[t][1] 之前,使cur的指针域被覆盖为指向自身,且t未无条件更新,错误;C选项用 a[prv][1] = cur 未实现摘除cur,会造成链中重复指向,错误;D选项各步顺序正确且无条件更新t,正确。代入 a = [[3,1],[1,2],[4,3],[2,4],[5,-1]]、head = 0、x = 3 验证,最终链表为1→2→3→4→5,符合要求。因此,本题选择D选项。
二、非选择题(本题共3小题,其中第13题7分,第14题10分,第15题9分,共26分)
13. 有n个集装箱要装上一艘载重量为c的轮船,其中集装箱i的重量为w[i]。现编写Python程序找出一种最优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。程序运行结果如图所示:
最优装载重量:20
物品索引:[[0,1,2,3],[0,1,2,4],[1,2,3,4]]
程序代码如下:
w=[6,3,5,6,6] #集装箱重量列表
c= 20
bestw=0 #初始化最优装载重量
bestc =[] #存储最优解的集装箱索引
①
for i in range(2**n): #使用进制枚举所有物品的组合情况,共2**n种组合
total=0 ;curr=[]
for j in range(n):
if i//2**j%2 == 1: #当i的第j位二进制为1,表示w[j]重量的集装箱装上船
②
curr.append(j)
if total <= c:
if total > estw:
bestw=total
bestc=[curr] #更新最优集装箱索引组合
elif ③ :
bestc.append(curr)
print("最优装载重量:",bestw)
print("集装箱索引:",bestc)
(1)如果轮船载重c改为21,最优装载重量的物品索引为__________
(2)请在划线处填写合适的代码以完成上述功能。①___________、②_____________、③____________
【答案】(1)[0,1,3,4] 注:只要数字顺序正确即可
(2) ①. n=len(w) 或其他等价答案 ②. total+=w[j] 或其他等价答案 ③. total==bestw 或其他等价答案
【解析】
【详解】本题考查循环语句。
(1)当轮船载重c改为21时,程序枚举所有组合并筛选总重量不超过21的最大值,各集装箱重量为w=[6,3,5,6,6],其中索引0、1、3、4对应的重量6+3+6+6=21,恰好等于载重且达到最大,其他组合重量均不超过20或超过21,因此最优装载重量为21,物品索引为[0,1,3,4]。
(2)①处需要先获取集装箱的个数,才能供外层range(2**n)和内层range(n)使用,应填n=len(w);②处表示被选中(二进制位为1)的集装箱重量累加到total中,应填total+=w[j];③处表示当某种组合的总重量等于当前最优装载重量bestw时,将该组合追加到bestc中,应填total==bestw。
14. 某智慧农业园区在各温室设置监测点,每个监测点配备智能终端,连接土壤湿度、空气温度等传感器,采集的数据通过IoT模块上传至服务器。用户可通过浏览器或手机APP查询实时及历史数据等。请回答下列问题:
(1)下列关于该系统硬件连接的说法,正确的是__________(单选,填字母)。
A. 传感器和执行器可以连接在同一智能终端的同一引脚上
B. 不同监测点的智能终端可以通过各自的IoT模块将数据上传至服务器
C. 传感器采集数据时必须通过服务器才能传输到智能终端
(2)下列关于该系统的说法,正确的有__________(多选,填字母)。
A. 该系统同时采用了B/S架构和C/S架构
B. 若服务器损坏,传感器将无法采集数据
C. 服务器可以对历史数据进行存储和分析
D. 智能终端可对采集的数据进行初步处理后上传
(3)小华基于Flask Web框架编写服务器端程序,服务器IP为“192.168.1.100”,端口号为5000,网站部分功能页面规划如下表所示:
序号
访问地址
功能说明
1
/input
提交传感器数据
2
/data/<area>
统计显示某温室的数据,例如/data/A表示显示A温室的数据
管理人员通过浏览器查询C温室的数据时,应访问的URL是:http://__________。
(4)该系统运行一段时间后,发现某温室空气温度数据偶尔出现异常值。请从数据处理的角度提出一种问题解决方案。
(5)从数据库导出2026年全年的监测数据,保存到“data.xlsx”文件中。数据格式如图所示。现要找出全年土壤湿度平均值最低的温室,统计该温室各个月的月平均土壤湿度,并选出土壤湿度最低的5个月份数据用图表呈现。
日期
时间
温室编号
土壤湿度
温度
2026/1/1
8:00
A
47.5
18.2
2026/1/1
8:00
B
59
19.5
2026/1/1
8:00
C
44.6
17.8
2026/1/1
8:00
D
52
18.9
2026/1/2
8:00
A
43.1
17.5
2026/1/2
8:00
B
61.2
20.1
2026/1/2
8:00
C
40.3
16.9
2026/1/2
8:00
D
50.4
18
#导入Pandas相关模块代码略
df=pd.read_excel("data.xlsx")
df["月份"]=df["日期"].str[5:7]
df1=df.groupby("温室编号",as_index=False).mean()
df1= ①____
s=df1["温室编号"] [0]
df2= ②____
df3= ③____
df3=df3.sort_values("土壤湿度").head(5)
plt.bar(df3["月份"],df3["土壤湿度"])
#图表显示设置代码略
程序中①②③处可选的代码如下,请选择合适的代码填入划线处(单选,填字母)。
A.df1.sort_values("土壤湿度",ascending=False)
B.df1.sort_values("土壤湿度")
C.df[df["温室编号"] == s]
D.df1[df1.温室编号=s]
E.df2.groupby("日期",as_index=False).土壤湿度.mean()
F.df2.groupby("月份",as-index=False).mean()
【答案】(1)B (2)ACD
(3)192.168.1.100:5000/data/C (注:不去严格区分 C的大小写)
(4)在服务器端代码中添加过滤异常数据的代码:或在智能终端中添加过滤异常数据的代码或其他可行方案
(5) ①. B ②. C ③. F
【解析】
【小问1详解】
本题考查物联网智慧农业系统的硬件连接常识。选项A,传感器和执行器不能连接在同一智能终端的同一引脚上,会出现信号冲突,无法正常工作;选项B,不同监测点的智能终端可以通过各自的IoT模块将数据上传至服务器,符合系统的设计逻辑;选项C,传感器采集数据是直接传输给本地的智能终端,不需要先经过服务器。故答案为:B。
【小问2详解】
本题考查物联网系统的架构与运行逻辑。选项A,用户通过浏览器访问属于B/S架构,通过手机APP访问属于C/S架构,该系统同时采用两种架构;选项B,传感器采集数据是本地直接和智能终端交互,服务器损坏不影响传感器的采集动作;选项C,服务器的核心功能之一就是对上传的历史数据进行存储和分析;选项D,智能终端可以先对采集的原始数据做去重、校验等初步处理后再上传,减少无效数据传输。故答案为:ACD。
【小问3详解】
本题考查Flask Web框架的URL访问规则。URL的组成为协议头+服务器IP+端口号+路由路径,该服务器IP是192.168.1.100,端口5000,查询C温室数据对应的路由是/data/C,拼接后得到完整地址。故答案为:192.168.1.100:5000/data/C。
【小问4详解】
本题考查物联网数据异常的处理方案。从数据处理的角度,可以在智能终端或者服务器端设置合理的温度数据正常范围阈值,当采集到的温度值超出该合理区间时,判定为异常值直接过滤丢弃,或者采用前后相邻的正常采集数据的平均值替换该异常值,避免异常数据进入后续的统计流程。故答案为:在服务器端或智能终端添加异常值过滤逻辑,设置空气温度的合理取值范围,超出范围的异常数据直接丢弃,或使用相邻正常数据的均值替换异常值。
【小问5详解】
本题考查Pandas数据处理的代码逻辑。①处需要将按温室编号分组求均值后的df1按土壤湿度升序排序,这样排序后第一行就是全年土壤湿度平均值最低的温室,对应选项B;②处需要筛选出这个最低湿度温室的所有原始数据,对应选项C;③处需要对筛选出的该温室数据按月份分组求均值,得到每个月的平均土壤湿度,对应选项F。故答案为:①B ②C ③F。
15. 算力调度平台有若干台服务器,系统按时间顺序处理事件:任务到达时若有空闲服务器则立即执行,否则按优先级(数值越小越高,相同按到达先后)进入等待队列;服务器空闲时从队列中取出优先级最高的任务执行。管理员在特定时刻查询等待队列中等待时间超过阈值TH(如20个时间单位)的任务数量,等待时间 查询时刻-任务提交时刻。请回答下列问题:
任务编号
提交时刻
所需时长
优先级
501
0
5
3
502
1
2
2
503
2
6
1
504
5
3
2
505
6
3
1
506
7
4
3
图a
时刻
事件类型
说明
0
0(提交)
任务501到达
1
0(提交)
任务502到达
…
…
…
7
0(提交)
任务506到达
7
1(查询)
查询等待队列负载
20
1(查询)
查询等待队列负载
图b
(1)某日0时起,等待队列初始为空,平台有2台服务器(编号0、1)。任务信息图a和事件序列图b所示。管理员在7时刻的查询事件中,当TH=20时等待队列中的任务数为___________。(填数字)
(2)函数 add_order将任务idx按优先级插入等待队列que(每个节点为[任务索引,下一指针],优先级相同的按到达先后排列。请在划线处填入合适的代码。
def add_order(head,idx):
que.append([idx,-1]) #新节点加入队列
if head == -1 or tasks[que[head] [0]] [3] > tasks[idx] [3]:
que[len(que)- 1] [1]=head
head=len(que)- 1
else:
pre=head;p=que[pre] [1]
while p != -1 and _______:
pre =p
p=que [p][1]
#新节点插到pre之后,代码略
return head
(3)实现上述调度、查询模拟功能的Python程序如下,请在划线处填入合适的代码。
def proc(m,events,tasks):
que=[];head=-1
srv=[0] * m #各服务器下次空闲时刻
done =[] #done:执行结果[任务编号,开始时刻,服务器];
stats =[] #stats:各次查询的等待超时任务数
i=0;cur=0;n=len(events)
while i < n or head != -1:
if i < n:
cur=events [i] [0] #当前时刻(下一事件时刻)
else:
cur=99999999 #无事件,保证队列清空
#派发队首任务(优先级最高的任务)
if head != -1 and tasks[que[head] [0]][1] <= cur:
j =-1
for x in range(m):
if srv[x] <= cur and(①____):
j=x
if j != -1:
idx =que[head] [0]
head=que[head] [1]
start=max(srv[j],tasks[idx][1])
done.append([tasks [idx] [0],start,j])
②_________
continue
#处理当前时刻的所有事件
if i < n:
while i < n and events[i][0] == cur:
t,typ,idx=events[i]
if typ == 0:
head=add_order(head,idx)
else:
cnt=0;p=head
while p != -1:
if ③_________:
cnt += 1
p=que[p] [1]
stats.append(cnt)
i += 1
return done,stats
""" 服务器数量m、阈值TH已读入。任务序列tasks每条为:[任务编号,提交时刻,所需时长,优先级],已按时间升序排列。事件序列events每条为:[事件时刻,事件类型,任务索引],类型 0=提交,类型 1=查询,查询事件任务索引为-1。已按时间升序排列。 """
done,stats=proc(m,events,tasks)
#输出执行结果与查询统计,代码略
【答案】(1)2 (2)tasks[que[p] [0]][3] <= tasks [idx] [3] 或其他等价答案
(3) ①. j=-1 or srv[x] < srv[j] 或其他等价答案 ②. srv[j]=start + tasks[idx] [2] 或其他等价答案 ③. cur-tasks [que [p] [0]][1] > TH 或其他等价答案
【解析】
【小问1详解】
本题考查的是对规则的理解。
时刻0:501到达,占用服务器0,执行到时刻5结束;
时刻1:502到达,占用服务器1,执行到时刻3结束;
时刻2:503到达,两台服务器都被占用,进入等待队列;
时刻3:服务器1空闲,取出队列中503执行,503运行到时刻9结束;
时刻5:504到达,服务器0刚空闲,直接占用服务器0执行,到时刻8结束;
时刻6:505到达,两台服务器都在运行,进入等待队列;
时刻7:506到达,两台服务器都在运行,进入等待队列 此时等待队列里的任务是505、506,共2个;且当前查询时刻为7,所有等待任务的等待时间最大仅为7-6=1,远小于TH=20,符合统计要求,因此结果为2。
【小问2详解】
本题考查的是队列链表的插入。循环的作用是向后遍历链表,找到第一个优先级比新任务更小(优先级数值更大)的节点,把新任务插到pre和p之间。规则是优先级数值越小优先级越高,相同优先级按到达先后排列,因此只要当前p指向节点的优先级不高于新任务的优先级,就继续往后移动指针。故此处应为:tasks[que[p][0]][3] <= tasks[idx][3]
【小问3详解】
本题考查的是链表的应用。① j == -1 or srv[x] < srv[j]:遍历所有服务器,筛选出空闲且最早可用的服务器,j记录当前最优服务器下标,当遇到新的空闲服务器x比当前j的空闲时刻更早时,更新j为x。 ② srv[j] = start + tasks[idx][2] :更新选中的服务器j的下次空闲时刻,等于任务开始时刻加上该任务的所需运行时长。 ③ cur - tasks[que[p][0]][1] > TH :统计等待队列中等待时间超过阈值TH的任务数,等待时间定义为查询时刻cur减去任务的提交时刻,符合题干要求。
第1页/共1页
学科网(北京)股份有限公司
$
高三技术学科练习
注意事项:
1.本题共12页,满分100分,考试时间90分钟。
2.答题前,在答题卡指定区域填写班级、姓名、考场号、座位号及准考证号。
3.所有答案必须写在答题卡上,写在试题上无效。
4.结束后,只需上交答题卡。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题有四个选项,只有一个符合题目要求,不选、多选、错选均不给分)
阅读下列材料,完成下面小题:
某医院的医疗系统,患者可以通过医院自助终端、小程序等自助挂号;取号后可到诊室扫条形码签到,等待叫号;就诊中还可在线查看检查报告;医生开方后可直接到窗口取药,就诊后通过小程序查看医生的用药指南和注意事项。
1. 下列对该系统中的数据、信息及处理过程的相关描述,正确的是( )
A. 患者挂号后生成条形码属于解码的过程
B. 生成的检查报告文档是信息
C. 医生开药方,属于数据的存储
D. 签到扫条形码,属于数据的采集
2. 下列为系统增加的功能中,采用了人工智能技术的是( )
A. 将条形码换成二维码 B. 就诊后增加让患者评价医生的功能
C. 为盲人提供语音互动导医功能 D. 在小程序中添加医院科室分布查询
3. 下列关于该系统组成的描述,不正确的是( )
A. 该系统的主要用户是医生和患者 B. 该医疗系统属于系统软件
C. 患者手机也属于该系统中的硬件 D. 该系统的历史数据可保存在数据库中
4. 下列举措不能提升系统安全性的是( )
A. 优化系统界面设计,提升用户操作体验
B. 采用磁盘阵列,降低数据丢失风险
C. 部署防火墙,关闭闲置端口
D. 定期扫描并修复系统漏洞
5. 医院服务器里存的原始CT断层图,主流为512×512像素、4096级灰度,检查报告截图(给患者看)尺寸压缩至50×25像素,256级灰度的压缩图,丢失大量灰度与细节,不能用于精准诊断。主流图与压缩图的压缩比约为( )
A. 3360:1 B. 310:1 C. 210:1 D. 10:1
6. 下列有关该系统网络相关描述正确的是( )
A. 该系统全部使用无线网络技术,可靠性更高
B. 自助终端必须使用静态IP地址
C. 患者手机需接入医院局域网才能查看报告
D. 该系统中网络协议主要使用TCP/IP
7. 某算法的流程图如图所示,数组a为[3,5,8,12,17,21,26,30]。图中判断框的条件a[m]<x改为a[m]≤x,则以下x值中,会使输出s改变的是( )
A. 3 B. 8 C. 17 D. 26
8. 某栈S初始为空。队列Q初始时从队首到队尾依次为“竹”“梅”“菊”“兰”。操作A:队首元素出队并入栈S;操作B:栈顶元素出栈并入队尾。执行操作序列A①A②B③AA后,栈S从栈底到栈顶为“梅”“兰”“竹”“菊”,则①②③处依次应为( )
A. ①B ②A ③A B. ①A ②B ③A C. ①B ②A ③B D. ①A ②A ③B
9. 某二叉树根节点为A,其中序遍历结果为D-C-E-F-A-B。则该二叉树的叶子节点不可能同时为( )
A. B,C,E B. B,D C. B,D,E D. B,C,F
10. 有如下程序段:
def dx(h,t):
if h == t:
return ""
if h % 3 == 0:
a[t] = a[h]
return dx((h + 1)% 6,(t + 1)% 6)
else:
return a[h] + dx((h + 1)% 6,t)
a=["1","2","3","4","5","6"]
print(dx(0,5))
执行后显示结果是( )
A. 12453 B. 124536 C. 23514 D. 235614
11. 某Python程序段如下,列表a中存有10个互不相等的整数。
p,q = 0,0
for i in range(1,len(a)):
if a[i] < a[q]:
q = i
else:
p=i
执行该程序段后p的值为3,则下列表达式中一定为True的有( )
① a[4] < a[3] ② a[4] < a[0] ③ a[5] < a[4] ④ a[0] < a[4]
A. 1个 B. 2个 C. 3个 D. 4个
12. 使用列表a模拟链表结构,每个节点包含[数据域,指针域]。对链表进行分区整理:使所有数据值小于x的节点位于数据值大于等于x的节点之前,且小于x的节点保持原有相对顺序。如链表a= [[3,1],[1,2],[4,3],[2,4],[5,-1]],head = 0。取x=3,分区整理得到1→2→3→4→5。实现该功能的程序段如下,方框处应填入的语句是( )
def part(head,x,a):
dy=len(a)
a.append([-1,head])
t=prv=dy
cur=head
while cur !=-1:
nxt=a[cur][1]
if a[cur][0]<x:
else:
prv= cur
cur=nxt
return a[dy] [1] #返回头指针
A.
if t== prv:
a[prv][1]=nxt
a[cur][1]=a[t][1]
a[t][1]=cur
cur=a[cur][1]
B.
if t != prv:
a[ prv] [1]=nxt
a[t] [1]=cur
a[ cur][1]=a[t][1]
t=cur
C.
if t!= prv:
a[prv] [1]=cur
a[cur][1]=a[t][1]
a[t] [1]=cur
t=a[t] [1]
D.
if t != prv:
a[ prv][1]=nxt
a[ cur] [1]=a[t][1]
a[t] [1]=cur
t=a[t] [1]
A. A B. B C. C D. D
二、非选择题(本题共3小题,其中第13题7分,第14题10分,第15题9分,共26分)
13. 有n个集装箱要装上一艘载重量为c的轮船,其中集装箱i的重量为w[i]。现编写Python程序找出一种最优装载方案,将轮船尽可能装满,即在装载体积不受限制的情况下,将尽可能重的集装箱装上轮船。程序运行结果如图所示:
最优装载重量:20
物品索引:[[0,1,2,3],[0,1,2,4],[1,2,3,4]]
程序代码如下:
w=[6,3,5,6,6] #集装箱重量列表
c= 20
bestw=0 #初始化最优装载重量
bestc =[] #存储最优解的集装箱索引
①
for i in range(2**n): #使用进制枚举所有物品的组合情况,共2**n种组合
total=0 ;curr=[]
for j in range(n):
if i//2**j%2 == 1: #当i的第j位二进制为1,表示w[j]重量的集装箱装上船
②
curr.append(j)
if total <= c:
if total > estw:
bestw=total
bestc=[curr] #更新最优集装箱索引组合
elif ③ :
bestc.append(curr)
print("最优装载重量:",bestw)
print("集装箱索引:",bestc)
(1)如果轮船载重c改为21,最优装载重量的物品索引为__________
(2)请在划线处填写合适的代码以完成上述功能。①___________、②_____________、③____________
14. 某智慧农业园区在各温室设置监测点,每个监测点配备智能终端,连接土壤湿度、空气温度等传感器,采集的数据通过IoT模块上传至服务器。用户可通过浏览器或手机APP查询实时及历史数据等。请回答下列问题:
(1)下列关于该系统硬件连接的说法,正确的是__________(单选,填字母)。
A. 传感器和执行器可以连接在同一智能终端的同一引脚上
B. 不同监测点的智能终端可以通过各自的IoT模块将数据上传至服务器
C. 传感器采集数据时必须通过服务器才能传输到智能终端
(2)下列关于该系统的说法,正确的有__________(多选,填字母)。
A. 该系统同时采用了B/S架构和C/S架构
B. 若服务器损坏,传感器将无法采集数据
C. 服务器可以对历史数据进行存储和分析
D. 智能终端可对采集的数据进行初步处理后上传
(3)小华基于Flask Web框架编写服务器端程序,服务器IP为“192.168.1.100”,端口号为5000,网站部分功能页面规划如下表所示:
序号
访问地址
功能说明
1
/input
提交传感器数据
2
/data/<area>
统计显示某温室的数据,例如/data/A表示显示A温室的数据
管理人员通过浏览器查询C温室的数据时,应访问的URL是:http://__________。
(4)该系统运行一段时间后,发现某温室空气温度数据偶尔出现异常值。请从数据处理的角度提出一种问题解决方案。
(5)从数据库导出2026年全年的监测数据,保存到“data.xlsx”文件中。数据格式如图所示。现要找出全年土壤湿度平均值最低的温室,统计该温室各个月的月平均土壤湿度,并选出土壤湿度最低的5个月份数据用图表呈现。
日期
时间
温室编号
土壤湿度
温度
2026/1/1
8:00
A
47.5
18.2
2026/1/1
8:00
B
59
19.5
2026/1/1
8:00
C
44.6
17.8
2026/1/1
8:00
D
52
18.9
2026/1/2
8:00
A
43.1
17.5
2026/1/2
8:00
B
61.2
20.1
2026/1/2
8:00
C
40.3
16.9
2026/1/2
8:00
D
50.4
18
#导入Pandas相关模块代码略
df=pd.read_excel("data.xlsx")
df["月份"]=df["日期"].str[5:7]
df1=df.groupby("温室编号",as_index=False).mean()
df1= ①____
s=df1["温室编号"] [0]
df2= ②____
df3= ③____
df3=df3.sort_values("土壤湿度").head(5)
plt.bar(df3["月份"],df3["土壤湿度"])
#图表显示设置代码略
程序中①②③处可选的代码如下,请选择合适的代码填入划线处(单选,填字母)。
A.df1.sort_values("土壤湿度",ascending=False)
B.df1.sort_values("土壤湿度")
C.df[df["温室编号"] == s]
D.df1[df1.温室编号=s]
E.df2.groupby("日期",as_index=False).土壤湿度.mean()
F.df2.groupby("月份",as-index=False).mean()
15. 算力调度平台有若干台服务器,系统按时间顺序处理事件:任务到达时若有空闲服务器则立即执行,否则按优先级(数值越小越高,相同按到达先后)进入等待队列;服务器空闲时从队列中取出优先级最高的任务执行。管理员在特定时刻查询等待队列中等待时间超过阈值TH(如20个时间单位)的任务数量,等待时间 查询时刻-任务提交时刻。请回答下列问题:
任务编号
提交时刻
所需时长
优先级
501
0
5
3
502
1
2
2
503
2
6
1
504
5
3
2
505
6
3
1
506
7
4
3
图a
时刻
事件类型
说明
0
0(提交)
任务501到达
1
0(提交)
任务502到达
…
…
…
7
0(提交)
任务506到达
7
1(查询)
查询等待队列负载
20
1(查询)
查询等待队列负载
图b
(1)某日0时起,等待队列初始为空,平台有2台服务器(编号0、1)。任务信息图a和事件序列图b所示。管理员在7时刻的查询事件中,当TH=20时等待队列中的任务数为___________。(填数字)
(2)函数 add_order将任务idx按优先级插入等待队列que(每个节点为[任务索引,下一指针],优先级相同的按到达先后排列。请在划线处填入合适的代码。
def add_order(head,idx):
que.append([idx,-1]) #新节点加入队列
if head == -1 or tasks[que[head] [0]] [3] > tasks[idx] [3]:
que[len(que)- 1] [1]=head
head=len(que)- 1
else:
pre=head;p=que[pre] [1]
while p != -1 and _______:
pre =p
p=que [p][1]
#新节点插到pre之后,代码略
return head
(3)实现上述调度、查询模拟功能的Python程序如下,请在划线处填入合适的代码。
def proc(m,events,tasks):
que=[];head=-1
srv=[0] * m #各服务器下次空闲时刻
done =[] #done:执行结果[任务编号,开始时刻,服务器];
stats =[] #stats:各次查询的等待超时任务数
i=0;cur=0;n=len(events)
while i < n or head != -1:
if i < n:
cur=events [i] [0] #当前时刻(下一事件时刻)
else:
cur=99999999 #无事件,保证队列清空
#派发队首任务(优先级最高的任务)
if head != -1 and tasks[que[head] [0]][1] <= cur:
j =-1
for x in range(m):
if srv[x] <= cur and(①____):
j=x
if j != -1:
idx =que[head] [0]
head=que[head] [1]
start=max(srv[j],tasks[idx][1])
done.append([tasks [idx] [0],start,j])
②_________
continue
#处理当前时刻的所有事件
if i < n:
while i < n and events[i][0] == cur:
t,typ,idx=events[i]
if typ == 0:
head=add_order(head,idx)
else:
cnt=0;p=head
while p != -1:
if ③_________:
cnt += 1
p=que[p] [1]
stats.append(cnt)
i += 1
return done,stats
""" 服务器数量m、阈值TH已读入。任务序列tasks每条为:[任务编号,提交时刻,所需时长,优先级],已按时间升序排列。事件序列events每条为:[事件时刻,事件类型,任务索引],类型 0=提交,类型 1=查询,查询事件任务索引为-1。已按时间升序排列。 """
done,stats=proc(m,events,tasks)
#输出执行结果与查询统计,代码略
第1页/共1页
学科网(北京)股份有限公司
$