内容正文:
高二技术练习
考生须知:
1.本卷分为信息技术和通用技术两部分,满分 100 分,考试时间 90 分钟。
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题卷上,写在试题上无效。
4.结束后,只需上交答题卷。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题 2 分,共 24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
阅读下列材料,完成下面小题。
某城市采用智慧停车诱导系统,该系统在停车场入口安装车牌识别摄像机,在车位部署地磁传感器,实时采集车辆进出信息与车位占用状态。数据通过4G/5G网络传输至服务器,经处理后通过诱导屏发布区域车位总量、具体停车场余位等信息。车主可通过手机APP查询目的地周边停车场实时余位、收费标准,并获取导航路线。系统支持车牌识别自动计费、ETC无感支付,还可通过车位指示灯引导车主快速找到空闲车位。
1. 下列关于该系统中数据与信息的说法,不正确的是( )
A. 车主从APP上获取的车位剩余情况属于信息
B. 地磁传感器采集的“0”和“1”信号序列属于数据
C. 在诱导屏上显示车位总量体现了信息的共享性
D. 车辆进出停车场的过程中不会产生新数据
2. 下列关于该系统组成的描述,正确的是( )
A. 车主手机APP属于系统软件
B. 车主和管理员都是该系统的用户
C. 停车管理数据库属于该系统的硬件
D. 系统采集的数据都存储在车主手机APP中
3. 为了防止车辆轨迹信息在传输过程中被窃取,该系统最可能采用的安全防护措施是( )
A. 定期备份数据库 B. 对敏感数据进行加密传输
C. 安装防火墙 D. 设置复杂的系统登录密码
4. 当车主驾车离开停车场时,系统自动计算停车时长和费用,这一过程主要体现了信息系统的哪项功能( )
A. 数据采集与输入 B. 数据存储与查询 C. 数据加工与处理 D. 数据传输与控制
5. 相比传统的人工管理停车场模式,该智慧停车诱导系统极大地提升了停车效率和用户体验。但在实际使用中还存在一些问题。下列关于该信息系统的说法,不正确的是( )
A. 数据更新存在延迟,可能导致车主看到的“余位信息”与实际不符
B. 该系统高度依赖网络环境,一旦断网,远程查询和支付功能将受限
C. 系统一旦建成即可永久使用,无需后续的硬件维护与软件升级
D. 系统难以处理非标准化的突发事件(如车辆剐蹭纠纷等),需人工介入
6. 将车牌识别摄像机采集的图像存储为未经压缩的BMP格式图像文件,下列说法正确的是( )
A. 图像采集实现了从数字信号到模拟信号的转换
B. 摄像头的分辨率是影响图像清晰度的唯一因素
C. 为了节省存储空间,可将BMP格式图像转换为JPG格式
D. 放大BMP格式图像不会影响其清晰度
【答案】1. D 2. B 3. B 4. C 5. C 6. C
【解析】
【1题详解】
本题考查数据与信息的基本概念和特征。信息是经过加工具有实际意义的数据,车主从APP获取的车位剩余情况是有实际意义的内容,属于信息,对应选项A说法正确;数据是表示客观事物的符号,地磁传感器采集的0和1信号序列属于数据,对应选项B说法正确;信息可以被多个主体共享,在诱导屏上发布车位信息供车主使用,体现了信息的共享性,对应选项C说法正确;车辆进出停车场时,会产生车辆进出记录、车位状态更新等新数据,对应选项D说法错误,本题要求选不正确的选项。故答案为:D。
【2题详解】
本题考查信息系统的组成。车主手机APP是针对停车服务开发的应用软件,不属于系统软件,对应选项A错误;车主可以使用该系统查询停车信息、完成缴费,管理员可以通过该系统管理停车场,二者都是该系统的用户,对应选项B正确;停车管理数据库属于信息系统的软件/数据部分,不属于硬件,对应选项C错误;系统采集的数据主要存储在系统端的服务器中,并不会都存储在车主手机APP中,对应选项D错误。故答案为:B。
【3题详解】
本题考查信息安全防护措施。定期备份数据库的作用是防止数据丢失,无法防范传输过程中信息被窃取,对应选项A不符合要求;对车辆轨迹这类敏感数据进行加密传输,即使传输过程中数据被窃取,窃取者也无法获取有效信息,是防止传输过程中信息被窃取的有效措施,对应选项B符合要求;防火墙主要用于防范非法访问入侵,不针对传输过程中的数据窃取问题,对应选项C不符合要求;设置复杂登录密码主要保护系统账号的登录安全,和传输过程中信息被窃取无关,对应选项D不符合要求。故答案为:B。
【4题详解】
本题考查信息系统的基本功能。车主驾车离开时,系统根据车辆进入时间和离开时间计算停车时长与费用,是对原始的进出时间数据进行加工得到所需的费用信息,该过程属于数据加工与处理;数据采集输入是获取原始数据,数据存储与查询是存储和检索数据,数据传输与控制是传输数据和控制设备,均不符合该过程的描述。故答案为:C。
【5题详解】
本题考查信息系统的特点与维护。受采集传输延迟影响,该系统的数据更新可能存在延迟,会导致车主查看的余位信息和实际情况不符,对应选项A说法正确;该系统的数据传输依赖网络,断网后远程查询、在线支付等功能都会受限,对应选项B说法正确;信息系统的硬件会出现老化损耗,软件需要修复漏洞、更新功能适配新需求,因此系统建成后也需要定期进行硬件维护和软件升级,无法永久使用无需维护,对应选项C说法错误;信息系统只能处理预设的标准化问题,对于非标准化的突发事件如车辆剐蹭纠纷无法处理,需要人工介入,对应选项D说法正确。本题要求选不正确的选项。故答案为:C。
【6题详解】
本题考查图像数字化与图像文件格式的基础知识。图像采集过程是将现实世界的模拟信号转换为数字信号存储,不是从数字信号到模拟信号的转换,对应选项A错误;影响图像清晰度的因素除了摄像头分辨率,还有色彩深度、拍摄对焦等,分辨率不是唯一因素,对应选项B错误;BMP是未经压缩的位图格式,JPG是压缩图像格式,将BMP转换为JPG可以有效节省存储空间,对应选项C正确;BMP属于位图,放大图像后会降低清晰度,对应选项D错误。故答案为:C。
7. 某算法的部分流程图如图所示,执行这部分流程后,输出b的值是( )
A. 81 B. 27 C. 13 D. 40
【答案】A
【解析】
【详解】本题考查的是流程图的识读。初始值:b=1,s=0
第一次判断:s=0<30,条件成立: s = 0+1 = 1,b = 1×3 = 3,回到判断
第二次判断:s=1<30,条件成立: s = 1+3 = 4,b = 3×3 = 9,回到判断
第三次判断:s=4<30,条件成立: s = 4+9 = 13,b = 9×3 = 27,回到判断
第四次判断:s=13<30,条件成立: s = 13+27 = 40,b = 27×3 = 81,回到判断
第五次判断:s=40<30,条件不成立,退出循环,最终输出b=81。故选A。
8. 用数组表示某二叉树,如下所示,则该二叉树的前序遍历序列为( )
A. ABDECFG B. ABDFCEG C. BFDAEGC D. ABDFECG
【答案】B
【解析】
【详解】本题考查二叉树的顺序存储与前序遍历。首先根据二叉树顺序存储的规则,下标为i的结点的左孩子下标为2i+1,右孩子下标为2i+2,可还原出该二叉树的结构:根结点为A,A的左孩子为B,右孩子为C;B没有左孩子,右孩子为D;D的左孩子为F,没有右孩子;C没有右孩子,左孩子为E;E没有左孩子,右孩子为G。前序遍历遵循根结点-左子树-右子树的访问规则,依次访问后得到的遍历序列为ABDFCEG,对应第二个选项。故答案为:B。
9. 有一个队列,队首到队尾元素依次为6,14,9,8。若队首元素是奇数,则直接出队;若队首元素是偶数,则先出队,再将该偶数整除2后的值入队。经过5次出队操作后,队列从队首到队尾的元素依次是( )
A. 7,4 B. 4,7 C. 8,3,7,4 D. 3,7,4
【答案】A
【解析】
【详解】本题考查队列的基本运算与奇偶判断规则。初始队列队首到队尾:6,14,9,8。第1次:队首6是偶数,出队,6//2=3入队,队列变为14,9,8,3;第2次:队首14是偶数,出队,14//2=7入队,队列变为9,8,3,7;第3次:队首9是奇数,直接出队,队列变为8,3,7;第4次:队首8是偶数,出队,8//2=4入队,队列变为3,7,4;第5次:队首3是奇数,直接出队,队列变为7,4。因此,本题选择A选项。
10. 有如下Python程序段:
s="PyThOn"
res=""
count=0
for c in s:
m=ord (c) #大写字母"A"的 ASCII 码值为65
if 65 <= m <= 90:
new_c=chr((m-65+2) %26+97)
else:
new_c=chr ((m-97-1) %26+65)
if count%2=0:
res+=new_c
else:
res=new_c+res
count+=1
print(res)
运行该程序段后,输出的值为( )
A. rXvGqM B. mgxRVQ C. qvrXGM D. MGXrvq
【答案】D
【解析】
【详解】本题考查Python字符ASCII码运算、分支判断与字符串拼接逻辑。初始字符串s="PyThOn",res为空字符串,count初值为0;遍历每个字符,大写字母按公式转为小写后移2位,小写字母按公式转为大写前移1位;count为偶数时新字符拼在res末尾,count为奇数时新字符拼在res开头;逐个模拟:字符P大写,转为r,count=0偶数,res="r";字符y小写,转为X,count=1奇数,res="Xr";字符T大写,转为v,count=2偶数,res="Xrv";字符h小写,转为G,count=3奇数,res="GXrv";字符O大写,转为q,count=4偶数,res="GXrvq";字符n小写,转为M,count=5奇数,res="MGXrvq"。因此,本题选择D选项。
11. 有如下 Python 程序段:
def remove_stack (num, k):
n=len (num); t=n-k
stack = [""]*n
top=-1
for i in num:
while k > 0 and top != -1 and stack[top] > i:
top-=1 ;k -= 1
top+=1
stack [top]=i
while k > 0:
top-=1; k -= 1
result = "". join (stack[:t])
#执行语句 print("".join(["a","b","c"])),输出abc
return result
#主程序
num= "14325"
k = 2
print(remove_stack(num, k))
执行该程序段后,输出的值为( )
A. 143 B. 125 C. 325 D. 132
【答案】B
【解析】
【详解】本题考查Python程序执行流程分析与栈的应用。初始num="14325",k=2,计算得n=5,t=5-2=3,初始化长度为n的栈,栈顶指针top=-1。逐个遍历num中的字符:
第一个字符是'1',不满足弹出循环的条件,top自增为0,stack[0]存入'1';
第二个字符是'4',栈顶元素'1'小于'4',不满足弹出条件,top自增为1,stack[1]存入'4';
第三个字符是'3',满足k>0、栈不为空且栈顶元素'4'大于'3',弹出栈顶,top变为0,k变为1,此时栈顶元素'1'小于'3',停止弹出,top自增为1,stack[1]存入'3';
第四个字符是'2',满足k>0、栈不为空且栈顶元素'3'大于'2',弹出栈顶,top变为0,k变为0,停止弹出,top自增为1,stack[1]存入'2';
第五个字符是'5',k已经为0,不满足弹出条件,top自增为2,stack[2]存入'5'。
遍历结束后k已经为0,不需要继续弹出,拼接栈的前t=3个元素得到结果为125,对应第二个选项。故答案为:B。
12. 有如下Py thon程序段:
import random
n = 6
a = [random. randint (1, 9) for i in range(n)]
for i in range(1, n - 1):
if i % 2 == 1:
while a[i] <= a[i - 1] or a[i] <= a[i + 1]:
a[i] += random. randint (1, 5)
else:
while a[i] >= a[i - 1] or a[i] >= a[i + 1]:
a[i]-= random. randint(1, 5)
print(a)
执行该程序段后,输出结果可能是( )
A. [3, 7, 2, 8, 1, 10] B. [0, 8, 3, 7, 2, 5] C. [2, 6, 5, 15, 8, 9] D. [5, 9, 4, 10, 3, 8]
【答案】D
【解析】
【详解】本题考查Python程序的逻辑分析能力。首先梳理程序逻辑:n为6,初始生成的数组a每个元素都是1到9之间的随机整数,循环i的取值为1、2、3、4,只有这几个位置的元素会被修改,a[0]和a[5]不会被修改,因此a[0]和a[5]一定在1到9之间;当i为奇数时,循环结束后一定满足a[i]大于左邻元素a[i-1]且大于右邻元素a[i+1];当i为偶数时,循环结束后一定满足a[i]小于左邻元素a[i-1]且小于右邻元素a[i+1]。接下来逐个分析选项:第二个选项包含0,不符合初始元素的范围,直接排除;第一个选项中未被修改的a[5]是10,超出1到9的范围,排除;第三个选项不满足所有位置的最终条件要求,第四个选项所有条件都符合:a[0]为5、a[5]为8都在1到9范围内,i=1是奇数满足9大于5且9大于4,i=2是偶数满足4小于9且4小于10,i=3是奇数满足10大于4且10大于3,i=4是偶数满足3小于10且3小于8,所有条件都符合。故答案为:D。
二、非选择题(本大题共3小题,其中第13小题7分,第14小题10分,第15小题9分,共26分)
13. 课程冲突检测。某大学教务系统需要检测学生的课程安排是否存在冲突,每门课程由3个属性表示,分别为课程名、上课时间(包括周几、开始节次和结束节次)、必修/选修,如学生甲的一门课程是:["大学英语",[1,4,5],"必修"],表示学生甲的必修课“大学英语”安排在周一第4至第5节。
冲突定义:两门课程上课时间重叠(同一天节次区间有交集)即为冲突。
调整规则:
a. 必修课之间不能冲突,如果冲突,输出“课程冲突无法调整”;
b.必修课与选修课冲突时,保留必修课,选修课标注为“待调整”;
c.选修课之间存在冲突,保留一门,另一门标注为“待调整”。
如学生甲的部分课程如下:[["高等数学",[1,1,3],"必修"],["大学英语",[1,4,5],"必修"], ["Python 编程",[1,3,5],"选修"],["体育",[3,5,6],"选修"]]。
显然,学生甲有3门课程存在冲突,分别是“Python编程” (选修)、“高等数学” (必修)及“大学英语”(必修) ,根据调整规则,课表可暂定为如图所示。
请回答下列问题。
(1)若学生甲新增两门课程["计算机网络", [2,1,3],"选修"],["大学物理",[3,1,5],"必修"],则已确定课程变为____门。
(2)定义函数is_conflict(time1,time2),判断两门课程是否冲突,其中time1和time2表示上课时间。请在划线处填入合适代码。
def is_conflict(timel, time2):
if time1[0] != time2[0]: #两门课程不在同一天
return False
if ___:
return False
return True
(3)实现上述功能的部分Python 程序如下,请在划线处填入合适代码。
```读取某位学生的必修课程存入required列表,每个元素包含课程名、上课时间(形如:[星期几,开始节次,结束节次]),必修/选修3个数据项;选修课程存入elective列表,结构与required相同;代码略。
flag = False;n=len (required)
for i in range(n-1):
for j in range(①____):
if is_conflict (required[i][1], required[j] [1]):
flag = True; break
if flag:
break
if flag:
print ("课程冲突无法调整")
else:
final = required[:]
adjusted= [] # 存储待调整的选修课
for m in elective:
flag = False
for sel in final:
if ②____:
flag = True;break
if not flag:
final. append (m)
else:
ad justed. append (m)
#输出暂定课表,代码略。
【答案】(1)4 (2)time2[2] < timel[1] or time1[2] <time2[1] 或其它合理答案
(3) ①. i+1,n或n-1,i,-1 ②. is_conflict(m[1],sel[1])或is_conflict(sel[1],m[1])
【解析】
【详解】本题考查Python程序算法逻辑设计,结合课程冲突规则考查规则应用、区间重叠判断、循环遍历逻辑与冲突检测的代码实现。
(1)原有例子中已确定课程共3门,分别是高等数学、大学英语、体育,新增两门课程后,计算机网络(选修,周二1-3节)无时间冲突,保留为已确定课程;新增必修大学物理(周三1-5节)和原有已确定的选修体育(周三5-6节)时间重叠,按照规则保留必修大学物理,体育调整为待调整,最终已确定课程共4门。
(2)已经判断不在同一天直接返回不冲突,同一天中区间无交集(不冲突)的情况是:第一门课程结束早于第二门课程开始,或第二门课程结束早于第一门课程开始,故此处应为:time2[2] < timel[1] or time1[2]<time2[1] 或其它合理答案。
(3)① 此处需要遍历所有两两不同的必修课,检查冲突,为了避免重复检查同一对课程,j从i+1开始,到n(n是必修课总数,Python的range左闭右开,因此终点写n),故此处应为:i+1,n或n-1,i,-1;② 此处需要判断当前处理的选修课m,和已加入最终课表的课程sel是否冲突,m[1]、sel[1]分别对应两门课的时间,因此调用冲突判断函数填入该条件即可,故此次应为:is_conflict(m[1],sel[1])或is_conflict(sel[1],m[1])。
14. 某小组模拟搭建空气质量监测系统,采集某地区PM2.5浓度数据进行空气质量监测。智能终端连接传感器,每分钟采集一次数据,通过网络将数据传输至服务器,存储到数据库中。服务器对数据进行处理,根据处理结果判断出异常情况后,通过智能终端控制执行器发出预警信号。用户通过浏览器进行实时数据查看和历史记录查询。请回答下列问题。
(1)在该系统的搭建过程中,不需要编写的程序是____(单选,填字母: A.客户端程序/B.服务器端程序/C.智能终端程序)
(2)下列关于该系统中数据处理的说法正确的是 (多选,填字母)
A. 系统中所有数据均来自传感器
B. 系统中数据只能存储在服务器
C. 智能终端与服务器之间的数据传输是双向的
D. 用户通过浏览器查看历史数据时,服务器需访问数据库
(3)下列技术中,不能用于智能终端与服务器之间连接的是____(单选,填字母: A.5G/B.Wi-Fi/C.RFID)
(4)当服务器判定出PM2.5数据有异常情况后,会通过智能终端控制执行器发出预警信号。请写出一种适合的执行器名称,并简述其工作过程。
(5)将系统中某年1月至8月的PM2.5日平均监测数据导出到文件data.xlsx中,部分数据如图a所示。现要统计分析PM2.5月平均监测数据,并绘制如图b所示的柱形图。
实现上述功能的部分Python 程序如下:
import pandas as pd
import matplotlib. pyplot as plt
df=pd. read_excel ("data. xlsx")
plt.bar(df2["月份"],df2["PM2.5"], label="月平均值")
#其它代码略
方框中应填入的语句依次为___(选3项,填数字序列)
① df1=df. groupby("月份", as_index=False)
② dfl=df. groupby ("月份", as_index=True)
③ df2=df1. sort_values ("PM2. 5")
④ df1=df1. sum()
⑤ dfl=df1. mean()
(6)观察图b可知,1月份的空气质量相对较差。现要筛选出1月份数据以便进一步分析,可以在第(5)小题处理结果的基础上,再运行如下语句,请在划线处填入合适的代码。
df3=df[____]
【答案】(1)A (2)CD
(3)C (4)执行器:蜂鸣器;
工作过程:当智能终端接收到服务器下发的异常指令后,驱动蜂鸣器发出报警声。
执行器:LED 指示灯;
工作过程:当智能终端接收到服务器下发的异常指令后,控制 LED 灯进行高频闪烁。
或其它合理答案 (5)①⑤③
(6)df.月份=="1月"或df["月份"]=="1月"
【解析】
【小问1详解】
本题考查物联网应用系统的开发知识。本题中用户使用浏览器查看数据,浏览器本身是通用的客户端程序,不需要额外编写专门的客户端程序;服务器需要处理数据、响应请求,需要编写服务器端程序;智能终端需要完成数据采集、接收指令控制执行器,需要编写智能终端程序,因此不需要编写的是客户端程序。故答案为:A。
【小问2详解】
本题考查物联网系统数据处理基础知识。选项A:系统除传感器采集的数据外,还有用户操作、指令等其他数据,并非所有数据都来自传感器,A错误。选项B:数据可以暂存于智能终端本地,也可存储在服务器,不是只能存储在服务器,B错误。选项C:智能终端向服务器上传采集数据,服务器向智能终端下发控制指令,二者数据传输是双向的,C正确。选项D:历史数据存储在服务器的数据库中,用户查看历史数据时,服务器需要访问数据库获取数据,D正确。故答案为:CD。
【小问3详解】
本题考查物联网通信技术的应用知识。5G和Wi-Fi都可以实现智能终端和服务器之间的网络连接,传输数据;RFID是射频识别技术,主要用于短距离标签识别,无法实现智能终端与服务器之间的网络连接,因此不能使用。故答案为:C。
【小问4详解】
本题考查物联网执行器的应用知识。常见的预警执行器都可使用,对应工作过程描述合理即可。故答案为:示例:执行器为蜂鸣器,工作过程:服务器判定PM2.5数据异常后,向智能终端下发预警指令,智能终端接收指令后驱动蜂鸣器发出报警鸣响,发出预警;或执行器为LED指示灯,工作过程:服务器判定数据异常后向智能终端下发预警指令,智能终端接收指令后控制LED指示灯高频闪烁,发出预警,其他合理答案均可。
【小问5详解】
本题考查Python中pandas库的数据处理知识。本题需要计算月平均PM2.5,首先按月份分组,绘图需要保留月份为普通列,因此设置as_index=False,第一步选①;分组后需要计算每月PM2.5的平均值,因此第二步选⑤;观察图b可知,柱形图的顺序是按PM2.5月平均值从小到大排序的,因此需要对结果按PM2.5排序,第三步选③,因此正确顺序为①⑤③。故答案为:①⑤③。
【小问6详解】
本题考查pandas的数据筛选语法。要筛选出1月份的数据,筛选条件为数据的月份列等于"1月",两种符合pandas语法的写法都正确。故答案为:df.月份=="1月" 或 df["月份"]=="1月"。
15. 某奶茶店配备两台相同的机器同时制作奶茶,每天接收大量订单。订单按下单顺序存储在列表data中,每份订单包含4个数据项:订单号、下单时间、制作时长和奶茶名称(假设每份订单仅包含一杯奶茶)。奶茶制作规则如下:
a.订单只能在其下单时间之后开始制作,不能提前;
b.每台机器同一时间仅可制作一杯奶茶,且制作过程不能中断;
c.当某台机器空闲时,从所有“已到达但尚未制作”的订单中,优先选择制作时长最短的订单制作。
将下单后至开始制作前的时长定义为该订单的等待时长。在满足所有订单制作的前提下,实现订单等待总时长最短,计算总等待时长,并输出。(注:本题中所有时间均以分钟为单位)
现有4份订单,数据如下:data=[[101,10,5,"珍珠奶茶"],[102,12,4,"椰果奶茶"],[103,12,6,"红豆奶茶"],[104,15,3,"柠檬奶茶"]],订单制作顺序及总等待时长如图所示。
请回答下列问题。
(1)若将上例中“椰果奶茶”的制作时间调整为7 分钟,则总等待时长为____分钟。
(2)定义如下函数Ink(wait_Ink, head, idx),函数功能为将新节点按制作时长升序插入链表。
def lnk(wait_lnk, head, idx):
if head == -1:
head= idx
return head
new_dur = wait_Ink[idx][1]
p = q = head
while :#①
q=p
p = wait_lnk[p][4]
if p == head:
②
head = idx
else:
wait_lnk[idx][4] =p ;wait_lnk[q][4] = idx
return head
①程序加框处代码有错,请改正。____
②请在划线处填入合适代码。____
(3)实现以上功能的 Python 程序如下,请在划线处填入合适代码。
```订单信息按下单顺序存入data列表,每个元素包含4个数据项,依次为包含订单号、下单时间、制作时长和奶茶名称,代码略。```
head = -1
m = [0, 0]
wait_lnk = []
total_wait = 0
i = 0
whilei < len(data) or head != -1:
k = 0
if m[0] > m[1]:
k= 1
while i < len(data) and data[i][1] <= m[k]:
num, time, dur, name= data[i]
idx = len (wait_Ink)
wait_Ink. append ([num, dur, time, name, -1])
head=lnk (wait_lnk, head, idx)
i += 1
if head !=-1:
num, dur, time, name, head = wait_lnk[head]
start_time = m[k]
①____
total_wait += wait
m[k] = start_time + dur
#输出订单制作信息,代码略
else:
if i < len(data):
②____
#输出总等待时长,代码略
【答案】(1)6 (2) ①. 改错:p != -1 and wait_Ink[p][1] <=new_dur 或 wait_lnk[p] [1] <= new_dur and p != -1 或p != -1 and wait_Ink[p][1] < new_dur 或wait_lnk[p][1] < new_dur and p != -1 ②. wait_lnk[idx][4] = head 或wait_lnk[idx] [4] = p
(3) ①. wait = start_time-time ②. m[k] = data[i][1]
【解析】
【详解】本题考查贪心调度算法、单链表插入逻辑与Python程序填空,核心是实现短任务优先的订单调度以最小化总等待时长。
(1)若将“椰果奶茶”的制作时间调整为7分钟,则总等待时长为6分钟。模拟过程:订单101于时间10开始制作(机器0,10-15),订单103于时间12开始制作(机器1,12-18),订单102于时间15开始制作(机器0,15-22,等待3分钟),订单104于时间18开始制作(机器1,18-21,等待3分钟),总等待时长=3+3=6。
(2)①处链表插入循环条件改正,该处函数需遍历链表找到第一个制作时长大于新节点时长的位置,原条件逻辑错误,正确条件为p != -1 and wait_lnk[p][1] < new_dur,其中p != -1防止遍历到链表末尾出错,wait_lnk[p][1] < new_dur确保当前节点时长小于新节点时继续向后遍历。 ②处链表头插入代码填空,该处当新节点需插入链表最前端时,需将新节点的next指向原头节点,因此该空答案为wait_lnk[idx][4] = head。
(3)主程序填空,①处计算订单等待时长,该处等待时长为订单实际开始制作时间与下单时间的差值,因此该空答案为wait = start_time - time;②处两台机器均空闲且无待制作订单时,需同步机器空闲时间至下一个订单的到达时间,避免空转,因此该空答案为 m[k] = data[i][1]。
第1页/共1页
学科网(北京)股份有限公司
$
高二技术练习
考生须知:
1.本卷分为信息技术和通用技术两部分,满分 100 分,考试时间 90 分钟。
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题卷上,写在试题上无效。
4.结束后,只需上交答题卷。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题 2 分,共 24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
阅读下列材料,完成下面小题。
某城市采用智慧停车诱导系统,该系统在停车场入口安装车牌识别摄像机,在车位部署地磁传感器,实时采集车辆进出信息与车位占用状态。数据通过4G/5G网络传输至服务器,经处理后通过诱导屏发布区域车位总量、具体停车场余位等信息。车主可通过手机APP查询目的地周边停车场实时余位、收费标准,并获取导航路线。系统支持车牌识别自动计费、ETC无感支付,还可通过车位指示灯引导车主快速找到空闲车位。
1. 下列关于该系统中数据与信息的说法,不正确的是( )
A. 车主从APP上获取的车位剩余情况属于信息
B. 地磁传感器采集的“0”和“1”信号序列属于数据
C. 在诱导屏上显示车位总量体现了信息的共享性
D. 车辆进出停车场的过程中不会产生新数据
2. 下列关于该系统组成的描述,正确的是( )
A. 车主手机APP属于系统软件
B. 车主和管理员都是该系统的用户
C. 停车管理数据库属于该系统的硬件
D. 系统采集的数据都存储在车主手机APP中
3. 为了防止车辆轨迹信息在传输过程中被窃取,该系统最可能采用的安全防护措施是( )
A. 定期备份数据库 B. 对敏感数据进行加密传输
C. 安装防火墙 D. 设置复杂的系统登录密码
4. 当车主驾车离开停车场时,系统自动计算停车时长和费用,这一过程主要体现了信息系统的哪项功能( )
A. 数据采集与输入 B. 数据存储与查询 C. 数据加工与处理 D. 数据传输与控制
5. 相比传统的人工管理停车场模式,该智慧停车诱导系统极大地提升了停车效率和用户体验。但在实际使用中还存在一些问题。下列关于该信息系统的说法,不正确的是( )
A. 数据更新存在延迟,可能导致车主看到的“余位信息”与实际不符
B. 该系统高度依赖网络环境,一旦断网,远程查询和支付功能将受限
C. 系统一旦建成即可永久使用,无需后续的硬件维护与软件升级
D. 系统难以处理非标准化的突发事件(如车辆剐蹭纠纷等),需人工介入
6. 将车牌识别摄像机采集的图像存储为未经压缩的BMP格式图像文件,下列说法正确的是( )
A. 图像采集实现了从数字信号到模拟信号的转换
B. 摄像头的分辨率是影响图像清晰度的唯一因素
C. 为了节省存储空间,可将BMP格式图像转换为JPG格式
D. 放大BMP格式图像不会影响其清晰度
7. 某算法的部分流程图如图所示,执行这部分流程后,输出b的值是( )
A. 81 B. 27 C. 13 D. 40
8. 用数组表示某二叉树,如下所示,则该二叉树的前序遍历序列为( )
A. ABDECFG B. ABDFCEG C. BFDAEGC D. ABDFECG
9. 有一个队列,队首到队尾元素依次为6,14,9,8。若队首元素是奇数,则直接出队;若队首元素是偶数,则先出队,再将该偶数整除2后的值入队。经过5次出队操作后,队列从队首到队尾的元素依次是( )
A. 7,4 B. 4,7 C. 8,3,7,4 D. 3,7,4
10. 有如下Python程序段:
s="PyThOn"
res=""
count=0
for c in s:
m=ord (c) #大写字母"A"的 ASCII 码值为65
if 65 <= m <= 90:
new_c=chr((m-65+2) %26+97)
else:
new_c=chr ((m-97-1) %26+65)
if count%2=0:
res+=new_c
else:
res=new_c+res
count+=1
print(res)
运行该程序段后,输出的值为( )
A. rXvGqM B. mgxRVQ C. qvrXGM D. MGXrvq
11. 有如下 Python 程序段:
def remove_stack (num, k):
n=len (num); t=n-k
stack = [""]*n
top=-1
for i in num:
while k > 0 and top != -1 and stack[top] > i:
top-=1 ;k -= 1
top+=1
stack [top]=i
while k > 0:
top-=1; k -= 1
result = "". join (stack[:t])
#执行语句 print("".join(["a","b","c"])),输出abc
return result
#主程序
num= "14325"
k = 2
print(remove_stack(num, k))
执行该程序段后,输出的值为( )
A. 143 B. 125 C. 325 D. 132
12. 有如下Py thon程序段:
import random
n = 6
a = [random. randint (1, 9) for i in range(n)]
for i in range(1, n - 1):
if i % 2 == 1:
while a[i] <= a[i - 1] or a[i] <= a[i + 1]:
a[i] += random. randint (1, 5)
else:
while a[i] >= a[i - 1] or a[i] >= a[i + 1]:
a[i]-= random. randint(1, 5)
print(a)
执行该程序段后,输出结果可能是( )
A. [3, 7, 2, 8, 1, 10] B. [0, 8, 3, 7, 2, 5] C. [2, 6, 5, 15, 8, 9] D. [5, 9, 4, 10, 3, 8]
二、非选择题(本大题共3小题,其中第13小题7分,第14小题10分,第15小题9分,共26分)
13. 课程冲突检测。某大学教务系统需要检测学生的课程安排是否存在冲突,每门课程由3个属性表示,分别为课程名、上课时间(包括周几、开始节次和结束节次)、必修/选修,如学生甲的一门课程是:["大学英语",[1,4,5],"必修"],表示学生甲的必修课“大学英语”安排在周一第4至第5节。
冲突定义:两门课程上课时间重叠(同一天节次区间有交集)即为冲突。
调整规则:
a. 必修课之间不能冲突,如果冲突,输出“课程冲突无法调整”;
b.必修课与选修课冲突时,保留必修课,选修课标注为“待调整”;
c.选修课之间存在冲突,保留一门,另一门标注为“待调整”。
如学生甲的部分课程如下:[["高等数学",[1,1,3],"必修"],["大学英语",[1,4,5],"必修"], ["Python 编程",[1,3,5],"选修"],["体育",[3,5,6],"选修"]]。
显然,学生甲有3门课程存在冲突,分别是“Python编程” (选修)、“高等数学” (必修)及“大学英语”(必修) ,根据调整规则,课表可暂定为如图所示。
请回答下列问题。
(1)若学生甲新增两门课程["计算机网络", [2,1,3],"选修"],["大学物理",[3,1,5],"必修"],则已确定课程变为____门。
(2)定义函数is_conflict(time1,time2),判断两门课程是否冲突,其中time1和time2表示上课时间。请在划线处填入合适代码。
def is_conflict(timel, time2):
if time1[0] != time2[0]: #两门课程不在同一天
return False
if ___:
return False
return True
(3)实现上述功能的部分Python 程序如下,请在划线处填入合适代码。
```读取某位学生的必修课程存入required列表,每个元素包含课程名、上课时间(形如:[星期几,开始节次,结束节次]),必修/选修3个数据项;选修课程存入elective列表,结构与required相同;代码略。
flag = False;n=len (required)
for i in range(n-1):
for j in range(①____):
if is_conflict (required[i][1], required[j] [1]):
flag = True; break
if flag:
break
if flag:
print ("课程冲突无法调整")
else:
final = required[:]
adjusted= [] # 存储待调整的选修课
for m in elective:
flag = False
for sel in final:
if ②____:
flag = True;break
if not flag:
final. append (m)
else:
ad justed. append (m)
#输出暂定课表,代码略。
14. 某小组模拟搭建空气质量监测系统,采集某地区PM2.5浓度数据进行空气质量监测。智能终端连接传感器,每分钟采集一次数据,通过网络将数据传输至服务器,存储到数据库中。服务器对数据进行处理,根据处理结果判断出异常情况后,通过智能终端控制执行器发出预警信号。用户通过浏览器进行实时数据查看和历史记录查询。请回答下列问题。
(1)在该系统的搭建过程中,不需要编写的程序是____(单选,填字母: A.客户端程序/B.服务器端程序/C.智能终端程序)
(2)下列关于该系统中数据处理的说法正确的是 (多选,填字母)
A. 系统中所有数据均来自传感器
B. 系统中数据只能存储在服务器
C. 智能终端与服务器之间的数据传输是双向的
D. 用户通过浏览器查看历史数据时,服务器需访问数据库
(3)下列技术中,不能用于智能终端与服务器之间连接的是____(单选,填字母: A.5G/B.Wi-Fi/C.RFID)
(4)当服务器判定出PM2.5数据有异常情况后,会通过智能终端控制执行器发出预警信号。请写出一种适合的执行器名称,并简述其工作过程。
(5)将系统中某年1月至8月的PM2.5日平均监测数据导出到文件data.xlsx中,部分数据如图a所示。现要统计分析PM2.5月平均监测数据,并绘制如图b所示的柱形图。
实现上述功能的部分Python 程序如下:
import pandas as pd
import matplotlib. pyplot as plt
df=pd. read_excel ("data. xlsx")
plt.bar(df2["月份"],df2["PM2.5"], label="月平均值")
#其它代码略
方框中应填入的语句依次为___(选3项,填数字序列)
① df1=df. groupby("月份", as_index=False)
② dfl=df. groupby ("月份", as_index=True)
③ df2=df1. sort_values ("PM2. 5")
④ df1=df1. sum()
⑤ dfl=df1. mean()
(6)观察图b可知,1月份的空气质量相对较差。现要筛选出1月份数据以便进一步分析,可以在第(5)小题处理结果的基础上,再运行如下语句,请在划线处填入合适的代码。
df3=df[____]
15. 某奶茶店配备两台相同的机器同时制作奶茶,每天接收大量订单。订单按下单顺序存储在列表data中,每份订单包含4个数据项:订单号、下单时间、制作时长和奶茶名称(假设每份订单仅包含一杯奶茶)。奶茶制作规则如下:
a.订单只能在其下单时间之后开始制作,不能提前;
b.每台机器同一时间仅可制作一杯奶茶,且制作过程不能中断;
c.当某台机器空闲时,从所有“已到达但尚未制作”的订单中,优先选择制作时长最短的订单制作。
将下单后至开始制作前的时长定义为该订单的等待时长。在满足所有订单制作的前提下,实现订单等待总时长最短,计算总等待时长,并输出。(注:本题中所有时间均以分钟为单位)
现有4份订单,数据如下:data=[[101,10,5,"珍珠奶茶"],[102,12,4,"椰果奶茶"],[103,12,6,"红豆奶茶"],[104,15,3,"柠檬奶茶"]],订单制作顺序及总等待时长如图所示。
请回答下列问题。
(1)若将上例中“椰果奶茶”的制作时间调整为7 分钟,则总等待时长为____分钟。
(2)定义如下函数Ink(wait_Ink, head, idx),函数功能为将新节点按制作时长升序插入链表。
def lnk(wait_lnk, head, idx):
if head == -1:
head= idx
return head
new_dur = wait_Ink[idx][1]
p = q = head
while :#①
q=p
p = wait_lnk[p][4]
if p == head:
②
head = idx
else:
wait_lnk[idx][4] =p ;wait_lnk[q][4] = idx
return head
①程序加框处代码有错,请改正。____
②请在划线处填入合适代码。____
(3)实现以上功能的 Python 程序如下,请在划线处填入合适代码。
```订单信息按下单顺序存入data列表,每个元素包含4个数据项,依次为包含订单号、下单时间、制作时长和奶茶名称,代码略。```
head = -1
m = [0, 0]
wait_lnk = []
total_wait = 0
i = 0
whilei < len(data) or head != -1:
k = 0
if m[0] > m[1]:
k= 1
while i < len(data) and data[i][1] <= m[k]:
num, time, dur, name= data[i]
idx = len (wait_Ink)
wait_Ink. append ([num, dur, time, name, -1])
head=lnk (wait_lnk, head, idx)
i += 1
if head !=-1:
num, dur, time, name, head = wait_lnk[head]
start_time = m[k]
①____
total_wait += wait
m[k] = start_time + dur
#输出订单制作信息,代码略
else:
if i < len(data):
②____
#输出总等待时长,代码略
第1页/共1页
学科网(北京)股份有限公司
$