内容正文:
2024年浙江省高考技术模拟卷
命题:浙江省衢州第二中学
考生须知:
1.本卷满分100分,考试时间90分钟;
2.答题前,在答题卷指定区域填写班级、姓名、试场号、座位号及准考证号。
3.所有答案必须写在答题纸上,写在试卷上无效;
4.考试结束后,只需上交答题纸。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 下列有关数据、大数据和信息的说法正确的是( )
A. 同一数据在不同语境中承载的信息可能不同
B. 数据在计算机中可以采用十六进制方式进行存储
C. 信息的保存和传播必须依附于载体,信息的价值永恒不变
D. 若数据库中的数据量特别庞大,这样的数据就可以称为大数据
2. 下列关于人工智能的说法,正确的是( )
A. 在混合增强智能中,机器智能是整个智能回路的总开关
B. 深度学习在自然语言处理、语音识别和视频运动提取等领域表现良好
C. 某人工智能系统自我博弈中不断提升自身智能和效率,这属于符号主义
D. 人工智能技术的发展只依赖于计算机科学和数学,无需其他学科的支持
3. 某共享电瓶车租赁系统的工作原理:用户通过手机APP扫描电瓶车上的二维码,获取电瓶车的唯一编码并发送给云端服务器。云端服务器在验证用户身份和口令后,会向车控终端发送解锁命令。车控终端接收到解锁命令后对车辆进行解锁。用户骑行结束后,车控终端检测到锁车动作后,向云端服务器发送信号,云端服务器根据骑行时间计算费用,并通知用户。下列关于该共享电瓶车系统的组成说法不正确的是( )
A. 电控终端和扫码用的手机都属于该系统的硬件
B. 共享电瓶车的维修人员属于该系统的用户
C. 手机APP以及手机上安装的操作系统组成了共享单车的软件
D. 共享单车的唯一编号,开锁密码等都属于该信息系统中的数据
4. 某共享电瓶车租赁系统工作原理:用户通过手机APP扫描电瓶车上的二维码,获取电瓶车的唯一编码并发送给云端服务器。云端服务器在验证用户身份和口令后,会向车控终端发送解锁命令。车控终端接收到解锁命令后对车辆进行解锁。用户骑行结束后,车控终端检测到锁车动作后,向云端服务器发送信号,云端服务器根据骑行时间计算费用,并通知用户。下列关于该共享电瓶车系统应用的说法正确的( )
A. 结算时使用支付宝支付应用了NFC技术
B. 用户的身份和账户等数据存储在数据库里
C. 用户扫描二维码获取编码的过程体现了信息的编码
D. 根据骑行时间计算费用体现了信息系统的数据传输功能
5. 某共享电瓶车租赁系统工作原理:用户通过手机APP扫描电瓶车上的二维码,获取电瓶车的唯一编码并发送给云端服务器。云端服务器在验证用户身份和口令后,会向车控终端发送解锁命令。车控终端接收到解锁命令后对车辆进行解锁。用户骑行结束后,车控终端检测到锁车动作后,向云端服务器发送信号,云端服务器根据骑行时间计算费用,并通知用户。下列关于该信息系统安全的说法,正确的是( )
A. 该信息系统只需要维护和升级服务器端
B. 对口令进行加密是为了保证系统数据的完整性
C. 在内网和外网之间构造防火墙可以完全避免非法用户入侵
D. 给管理员和普通用户设置不同的用户权限,体现了访问控制机制
6. 下列有关数字化及数据编码的说法正确的是( )
A. 模拟信号转为数字信号的过程中不会产生失真
B. 不能通过采样、量化和编码的方式将图像信号数字化
C. 在相同的采样频率下,提高量化位数能提高音频的质量
D. 若某BMP图像的颜色共258种,则其位深度至少为8位
7. 某算法的部分流程图如图所示,执行该流程时,若输入x的值为“101110”,执行该流程后,输出值s的值是( )
A. 22 B. 28 C. 46 D. 47
8. 某二叉树有三个节点,其前序遍历序列是“甲乙丙”,后序遍历序列是“丙乙甲”,那么这棵二叉树的中序遍历序列不可能是( )
A. 乙丙甲 B. 丙乙甲 C. 甲乙丙 D. 乙甲丙
9. 元素30,97,32,75,99入栈的顺序为30,97,32,75,99,如果最先出栈的是32,那么最后出栈的不可能的是( )
A. 30 B. 97 C. 75 D. 99
10. 某递归函数,功能是输入一个字符串s,输出其反序字符串。例如输入时“hello”时,输出“olleh”。程序代码如下:
def reverse(s):
if len(s)<=1:
return s
return
划线处应填入的代码是( )
A. s[-1]+reverse(s[1:]) B. reverse(s[1:])+s[-1]
C. s[-1]+reverse(s[:-1]) D. reverse(s[:-1])+s[-1]
11. 对某校高三年级学生按性别和身高进行排序,每个学生的数据格式如下:["徐凯",175,'男],排序要求:女生在前,男生在后,同性别按身高升序排序。实现功能的Python程序如下:
#将高三年级全体学生性别和身高数据读入二维列表a中,代码略
n=len(a)
for i in range(n-1):
for j in range( ① ):
if ② :
a[j],a[j+1] = a[j+1],a[j]
elif a[j][2]=="男" and a[j+1][2]=="女":
a[j],a[j+1]=a[j+1],a[j]
代码中划线处的可选项如下,正确的是( )
A. ①0, n-i-1 ②a[j][1]> a[j+1][1] and a[j][2] == a[j+1][2]
B. ①n-2, i, -1 ②a[j][1]< a[j+1][1] and a[j][2] == a[j+1][2]
C. ①0, n-i ②a[j][1]> a[j+1][1] and a[j][2] == a[j+1][2]
D. ①n-2, i-1, -1 ②a[j][1]< a[j+1][1] and a[j][2] == a[j+1][2]
12. 有如下Python程序段:
from random import randint
q=["A""B","C","D","E","0"]
head=0; tail=4; top=-1
s=["0"]*5
for i in range(5):
t=randint(0,1) #随机生成0或1
if t==0 and head<tail:
top+=1; s[top]=q[head]
elif t==l and top!=-1:
s[top]="0"; top-=1
head+=1
执行该程序段后,s的值可能是( )
A. ['B', 'E', '0', '0', '0'] B. ['A', 'D', '0', '0', '0']
C. ['B', 'D', '0', '0', '0'] D. ['A', 'C', '0', '0', '0']
二、非选择题(本大题共3题,其中第13小题8分,第14小题9分,第15小题9分,共26分)
13. 小明为蔬菜大棚搭建了一个简易温度监测控制系统,可以设定阈值,系统提供自动及手动工作模式。自动工作模式时,系统会自动根据温度变化情况控制是否加热,使蔬菜大棚保持适合的温度。手工工作模式,可以通过浏览器远程访问系统控制网页,直接开启或关闭加热器。该系统结构示意图如图所示。系统采用B/S开发架构,使用micro:bit作为智能终端,温度传感器采集数据。传感器采集的数据由智能终端经IoT模块发送到Web服务器,用户可通过浏览器查询实时和历史数据。执行器用于实现温度的控制。根据以上功能描述,请回答下列问题:
(1)下列关于该信息系统的说法,正确的是_________(单选,填字母)
A.在该信息系统中,智能终端的作用相当于中央处理器CPU
B.在该信息系统中,传感器和执行器没有智能终端的控制不能正常工作
C.概要设计阶段,包括系统的模块结构设计、系统物理配置和数据库设计三大部分
(2)通过浏览器远程手动模式开启加热器操作时,指令数据的传输过程为__________(单选,填字母)
A.浏览器→数据库→智能终端
B.浏览器器→智能终端→服务器
C.浏览器→Web服务器→智能终端
(3)根据题意,下列功能需要在智能终端程序中实现的是__________(多选,填字母:A.采集温度传感器上的数据/B.处理浏览器访问请求/C.接收服务器指令/D.打开或关闭加热器)。
(4)智能终端上的程序具有如下功能:每隔5分钟从传感器获取1次温度值:加热器处于关闭状态时:若温度值小于等于阈值temp1,则打开加热器;加热过程中,若温度值大于等于阈值temp2,则关闭加热器:并将温度数据传输到服务器。部分程序如下,请在程序中划线处填入合适的代码。
#导入相关库,代码略
flag=False
while True:
# 从传感器获取温度值,保存在newtemp中,代码略
# 从服务器获取温度阈值temp1和temp2及工作模式数据auto o代码略
if auto==True:
if newtemp <=temp1 and flag==False:
①____________
#打开加热器,代码略
elif②________and flag==True:
flag=False
# 关闭加热器,代码略
else:
# 执行手动控制加热器,代码略
# 将newtemp,flag等数据传输到服务器。代码略
sleep(1000*5*60) # 延时5分钟
(5)该系统使用后发现通过浏览器远程访问系统控制网页,能直接开启或关闭加热器。小明希望实际温度低于20摄氏度时,加热器自动开启加热,当温度高于26摄氏度时,加热器自动关闭加热,但在实际应用中自动模式下温度低于20摄氏度时,加热器没有开启,而此时手动模式开启正常,请分析可能的原因______。
14. 小明收集了浙江省某地3月各类共享单车的部分骑行数据记录,每天的用户数据存储在“bike.xlsx”文件中(不考虑跨天数据)。部分数据格式如图a所示,请回答下列问题:
(1)trans函数功能为:读取骑行开始时间或结束时间,获取小时和分钟部分,转换为分钟格式并返回,如“2024/03/01 21:12”获取“21:12”转换为1272(21*60+12=1272),代码如下。请在划线处填入合适的代码。
def trans(t):
n=len(t)
for i in range(n):
if t[i]==" ":
p=i
if t [i]==":":
q=i
time=____________
return time
(2)共享单车计费规则如下:起步价1.5元(含15分钟),超出15分钟,时长费0.5元/15分,不足15分钟以15分钟计算。考虑到车辆坏损等情况,2分钟内(不含2分钟)的骑行数据作废,因此本程序实现过滤骑行时间在2分钟内的数据行,统计各条记录的骑行时间及本月各类单车的收益。
import pandas as pd
importi math
df.insert (4, "骑行时长","") #插入一列
dic={'青桔单车': 0,' 0F0单车' :0,'美团单车' :0,'摩拜单车' :0}
for i in df.index:
c=trans(df.at[i,"结束时间"])-trans s(df.at[i, "开始时间"])
df.at[i, "骑行时长"]=c
if c<2:
fee=0
elif 2<=c<=15:
fee=1.5
elif c>15:
fee=1.5+math.ceil((c-15)//15)*0.5 #函数ceil()实现向上取整
①_________ #统计各类型单车的总收益存入dic中
df= #过滤骑行时间在2分钟内的数据行
print (df)
print (dic)
①请在划线处填入合适的代码。
②方框中应填入的正确代码为__________(单选,填字母)。
A. df [df. fee==0] B. df [df ["骑行时长">=2]]
C. df [df ["骑行时长"]>=2] D. df. drop (df. 骑行时长<2)
(3)统计各类型单车的骑行次数并实现降序排序,绘制柱形图,代码如下,绘制的图表如图b所示,请在划线处填入合适的代码。
import matplotlib.pyplot as plt
plt.rc('font', **{'family': 'SimHei'}) #显示中文标签
df1=df.groupby("单车类型", as_index=False).骑行时长.①________
df2=df1.sort_values("②________", ascending=False)
plt.title("各类型单车骑行次数对比图")
plt.bar(df2.单车类型,df2.骑行时长)
15. 容器灌水:有n个碗按碗口直径从小到大叠放在一起,自上到下依次编号为0~n-1(如图a所示),编号为i的碗的容量为w[i]单位体积,每个碗的初始状态均为空。假设有m则如下:
1)若操作为[1, u, x],表示操作类型1,向第u个碗中加入x单位体积的水;
2)若操作为[2, u],表示操作类型2,查询第u个碗中的水量为多少单位体积;
3)若某个碗中的总水量大于其容量,多出的水会溢出,全部进入其下面的碗中,直到不再溢出。而编号为n-1的碗(最下面的碗)中的会水溢出到地面上,不会进入其他碗。例如:若碗的数量是2,若容量分别是[5,10],操作次数是4次,分别是[1,0,4],[1,1,5],[1,0,5],[2,1],此时编号为1的碗中水的体积是9个单位。
实现上述操作的Python代码如下,程序输入格式及运行界面如图b所示。
请回答下列问题:
(1)假设碗的数量是2,其容量分别是[5,10],操作次数是6次,分别是[1,0,4],[2,0],[1,1,5],[1,0,4],[2,0],[2,1],则最终编号为1的碗中水的体积是________个单位(仅填数字)。
(2)从代码看本题解决问题的算法的使用的数据结构是________(单选,填字母:A.单向链表/B.双向链表/C.循环链表/D.数组)
(3)加框处代码的时间算法效率是________。(用大0阶表示)
(4)请在划线处填写合适的代码。
def delete(pos):
global a, head #全局变量,可调用主程序同名变量
if pos==head:
head=a[pos][2]
else:
①________
a[a[pos][2]][1]=a[pos][1]
n=int(input("请输入碗的数量: "))
w=eval(input("请输入碗的容量:")) #输入并存储数据在列表w中
m=int(input("请输入操作次数:"))
a=[] ; head=0
for i in range(n):
a.append([0, i-1, i+1])
a[0][1]=-1
a[len(a)-1][2]=-1
for i in range(m):
opt=eval(input("请输入操作:")) #输入并存储数据在列表opt中
if opt[0]==1:
u=opt[1]; x=opt[2]
p=head
while x>0 and p!=-1:
if p>=u:
②________ #提示:本空使用取最小值min()函数来表达
a[p][0]+ =water
x-=water
if③_______:
delete(p)
p=a[p][2]
else:
u=opt[1]
print("编号为",u,"的碗中的水量为",a[u][0],"单位体积")
第1页/共1页
学科网(北京)股份有限公司
$$
2024年浙江省高考技术模拟卷
命题:浙江省衢州第二中学
考生须知:
1.本卷满分100分,考试时间90分钟;
2.答题前,在答题卷指定区域填写班级、姓名、试场号、座位号及准考证号。
3.所有答案必须写在答题纸上,写在试卷上无效;
4.考试结束后,只需上交答题纸。
第一部分 信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 下列有关数据、大数据和信息的说法正确的是( )
A. 同一数据在不同语境中承载的信息可能不同
B. 数据在计算机中可以采用十六进制方式进行存储
C. 信息的保存和传播必须依附于载体,信息的价值永恒不变
D. 若数据库中的数据量特别庞大,这样的数据就可以称为大数据
【答案】A
【解析】
【详解】本题考查是数据、大数据及信息。数据本身是客观的,但信息的解释和理解依赖于语境,因此,同一数据在不同语境中可能承载不同的信息,选项A说法正确;数据在计算机中采用二进制方式进行存储,选项B说法错误;信息的价值会随着时间、语境和需求的变化而变化,选项C说法错误;大数据不仅仅是指数据量大,还包括数据的多样性、高速性和价值密度等特征,选项D说法错误。故选A。
2. 下列关于人工智能的说法,正确的是( )
A. 在混合增强智能中,机器智能是整个智能回路的总开关
B. 深度学习在自然语言处理、语音识别和视频运动提取等领域表现良好
C. 某人工智能系统在自我博弈中不断提升自身智能和效率,这属于符号主义
D. 人工智能技术的发展只依赖于计算机科学和数学,无需其他学科的支持
【答案】B
【解析】
【详解】本题考查人工智能。A选项,在混合增强智能中,人类是整个智能回路总开关;B选项,深度学习在自然语言处理、语音识别和视频运动提取等领域凭借其强大的特征提取和学习能力有良好表现;C选项,人工智能系统在自我博弈中不断提升自身智能和效率属于行为主义;D选项,人工智能技术发展依赖多学科支持,不只是计算机科学和数学,还涉及认知科学、心理学等。因此,本题选择B选项。
3. 某共享电瓶车租赁系统的工作原理:用户通过手机APP扫描电瓶车上的二维码,获取电瓶车的唯一编码并发送给云端服务器。云端服务器在验证用户身份和口令后,会向车控终端发送解锁命令。车控终端接收到解锁命令后对车辆进行解锁。用户骑行结束后,车控终端检测到锁车动作后,向云端服务器发送信号,云端服务器根据骑行时间计算费用,并通知用户。下列关于该共享电瓶车系统的组成说法不正确的是( )
A. 电控终端和扫码用的手机都属于该系统的硬件
B. 共享电瓶车的维修人员属于该系统的用户
C. 手机APP以及手机上安装的操作系统组成了共享单车的软件
D. 共享单车的唯一编号,开锁密码等都属于该信息系统中的数据
【答案】C
【解析】
【详解】本题考查信息系统组成。A选项,电控终端和扫码用的手机是系统中实际的物理设备,属于硬件;B选项,共享电瓶车的维修人员也是信息系统中的用户;C选项,除了手机APP以及手机上安装的操作系统以外,信息系统还包括数据库管理系统等软件;D选项,共享单车的唯一编号、开锁密码等是系统中用于识别、控制等操作的数据。因此,本题选择C选项。
4. 某共享电瓶车租赁系统的工作原理:用户通过手机APP扫描电瓶车上的二维码,获取电瓶车的唯一编码并发送给云端服务器。云端服务器在验证用户身份和口令后,会向车控终端发送解锁命令。车控终端接收到解锁命令后对车辆进行解锁。用户骑行结束后,车控终端检测到锁车动作后,向云端服务器发送信号,云端服务器根据骑行时间计算费用,并通知用户。下列关于该共享电瓶车系统应用的说法正确的( )
A. 结算时使用支付宝支付应用了NFC技术
B. 用户的身份和账户等数据存储在数据库里
C. 用户扫描二维码获取编码的过程体现了信息的编码
D. 根据骑行时间计算费用体现了信息系统的数据传输功能
【答案】B
【解析】
【详解】本题考查的是信息系统功能。支付宝支付通常基于网络支付接口,并非必须使用NFC技术;用户身份、账户等数据需存储在数据库中以供云端服务器验证和调用;扫描二维码是解码过程(将图形转换为编码数据);根据时间计算费用属于信息系统的数据处理功能。故选B。
5. 某共享电瓶车租赁系统的工作原理:用户通过手机APP扫描电瓶车上的二维码,获取电瓶车的唯一编码并发送给云端服务器。云端服务器在验证用户身份和口令后,会向车控终端发送解锁命令。车控终端接收到解锁命令后对车辆进行解锁。用户骑行结束后,车控终端检测到锁车动作后,向云端服务器发送信号,云端服务器根据骑行时间计算费用,并通知用户。下列关于该信息系统安全的说法,正确的是( )
A. 该信息系统只需要维护和升级服务器端
B. 对口令进行加密是为了保证系统数据的完整性
C. 在内网和外网之间构造防火墙可以完全避免非法用户入侵
D. 给管理员和普通用户设置不同的用户权限,体现了访问控制机制
【答案】D
【解析】
【详解】本题考查的是信息系统安全。系统维护需覆盖服务器、客户端(APP)及车控终端,仅维护服务器端无法确保整体运行;口令加密主要保障数据的机密性(防止泄露),完整性需依赖校验或签名机制;防火墙能提高安全性但无法“完全避免”入侵,存在技术漏洞或内部威胁的可能性;通过权限分级(如管理员与普通用户)限制资源访问,符合访问控制机制的核心原则。故选D。
6. 下列有关数字化及数据编码的说法正确的是( )
A. 模拟信号转为数字信号的过程中不会产生失真
B. 不能通过采样、量化和编码的方式将图像信号数字化
C. 在相同的采样频率下,提高量化位数能提高音频的质量
D. 若某BMP图像的颜色共258种,则其位深度至少为8位
【答案】C
【解析】
【详解】本题考查的是编码。在模拟信号转换为数字信号的过程中,由于采样和量化的限制,通常会产生一定的失真;图像信号可以通过采样、量化和编码的方式进行数字化处理;量化位数决定了音频信号的动态范围,提高量化位数可以减少量化噪声,从而提高音频的质量;8位深度可以表示256种颜色,而258种颜色需要至少9位深度(2^9 = 512)。故选C。
7. 某算法的部分流程图如图所示,执行该流程时,若输入x的值为“101110”,执行该流程后,输出值s的值是( )
A. 22 B. 28 C. 46 D. 47
【答案】C
【解析】
【详解】本题考查的是流程图的识读。该流程实际上是将输入的二进制数字串逐位读取,并将其转换为十进制数。以 x = “101110” 为例,每次循环将 s 更新为 s×2 加上当前读入的一位数字,直到读完串中所有的位。最终输出 s=46,故选C。
8. 某二叉树有三个节点,其前序遍历序列是“甲乙丙”,后序遍历序列是“丙乙甲”,那么这棵二叉树的中序遍历序列不可能是( )
A. 乙丙甲 B. 丙乙甲 C. 甲乙丙 D. 乙甲丙
【答案】D
【解析】
【详解】本题考查的是二叉树遍历。本题考查二叉数的遍历。 由于二叉树的前序遍历和后序遍历无法唯一地确定一棵二叉树,故可用前序遍历和 4 个选项的中序遍历还原出二叉树,各选项二叉树状态图如下:
A
B
C
D
选项 D所对应的二叉树的后序遍历结果为乙丙甲,与题干的后序不符,故选D。
9. 元素30,97,32,75,99入栈的顺序为30,97,32,75,99,如果最先出栈的是32,那么最后出栈的不可能的是( )
A. 30 B. 97 C. 75 D. 99
【答案】B
【解析】
【详解】本题考查的是栈的操作。元素按顺序入栈:30 → 97 → 32 → 75 → 99。第一个出栈的是32,说明在32入栈后立即被弹出。此时,栈中剩余元素为30(栈底)和97(栈顶)。根据栈的后进先出(LIFO) 原则,97的出栈顺序必然在30之前,故97不会是最后出栈。故选B。
10. 某递归函数,功能是输入一个字符串s,输出其反序字符串。例如输入时“hello”时,输出“olleh”。程序代码如下:
def reverse(s):
if len(s)<=1:
return s
return
划线处应填入的代码是( )
A. s[-1]+reverse(s[1:]) B. reverse(s[1:])+s[-1]
C. s[-1]+reverse(s[:-1]) D. reverse(s[:-1])+s[-1]
【答案】C
【解析】
【详解】本题考查的是python递归。递归反转字符串的核心思路是:将最后一个字符放到最前面,然后递归处理剩余部分。基准条件:当字符串长度≤1时,直接返回自身(如"h"反转仍为"h")。递归步骤: s[-1]取最后一个字符(如"hello"的"o"), s[:-1]取剩余部分(如"hell"),将最后一个字符拼接到剩余部分的反转结果前(o + reverse("hell"))。故选C。
11. 对某校高三年级学生按性别和身高进行排序,每个学生数据格式如下:["徐凯",175,'男],排序要求:女生在前,男生在后,同性别按身高升序排序。实现功能的Python程序如下:
#将高三年级全体学生性别和身高数据读入二维列表a中,代码略
n=len(a)
for i in range(n-1):
for j in range( ① ):
if ② :
a[j],a[j+1] = a[j+1],a[j]
elif a[j][2]=="男" and a[j+1][2]=="女":
a[j]a[j+1]=a[j+1],a[j]
代码中划线处的可选项如下,正确的是( )
A. ①0, n-i-1 ②a[j][1]> a[j+1][1] and a[j][2] == a[j+1][2]
B. ①n-2, i, -1 ②a[j][1]< a[j+1][1] and a[j][2] == a[j+1][2]
C. ①0, n-i ②a[j][1]> a[j+1][1] and a[j][2] == a[j+1][2]
D. ①n-2, i-1, -1 ②a[j][1]< a[j+1][1] and a[j][2] == a[j+1][2]
【答案】A
【解析】
【详解】本题考查多关键字的冒泡排序知识。结合题意可知,本题的第一关键字是“性别”,第二关键字为“身高”,按身高升序排序,故可以排除选项BD。再考虑冒泡排序的数组元素下标,由于比较的相邻元 素是 a[j]和 a[j+1],选项C将导致下标越界,例如当i=0,第一遍冒泡的最后将出现元素下标为n的表达式,而n个元素的数组下标范围只能是0~n-1,故可排除选项C。经过验证可知,本题选项A正确。
12. 有如下Python程序段:
from random import randint
q=["A","B","C","D","E","0"]
head=0; tail=4; top=-1
s=["0"]*5
for i in range(5):
t=randint(0,1) #随机生成0或1
if t==0 and head<tail:
top+=1; s[top]=q[head]
elif t==l and top!=-1:
s[top]="0"; top-=1
head+=1
执行该程序段后,s的值可能是( )
A. ['B', 'E', '0', '0', '0'] B. ['A', 'D', '0', '0', '0']
C. ['B', 'D', '0', '0', '0'] D. ['A', 'C', '0', '0', '0']
【答案】B
【解析】
【详解】本题考查队列和栈。队列 q 的初始元素是 ["A","B","C","D","E","0"],这里需要注意,队列的 head 初始为 0,tail 初始为 4,所以队列中的有效元素是 q [0] 到 q [4],也就是 A、B、C、D、E。而栈 s 的大小是 5,初始化为全 0。for循环 5 次,每次随机生成 t 为 0 或 1。如果 t 是 0 且队列非空(head < tail),就将队列头部元素入栈。如果 t 是 1 且栈非空,就将栈顶元素弹出(出栈)。无论 t 是 0 还是 1,队列的 head 都会增加 1(即出队)。由于if条件为t==0 and head<tail;所以,当head=tail=4时,条件不成立,即s中不可能存在"E";A选项错误。B选项正确,栈中有"A"、"D",说明t在第1次、第4次循环时必须为0,第2次、第3次为0、1时,先将"B"入栈,然后再出栈,第5次为0,但没有字符可以入栈,可以实现; C选项错误,栈中有"B"、"D",则t在第2次、第4次循环时必须为0,第3次循环时如果为 0,则栈中会有"C",为1则又会把"B"出栈。 D选项错误,栈中有"A"、"C",则t第1次、第3次循环时必须为0,第2次循环时如果 t为 0,则栈中会有"B",如果为1则会将"A"出栈。因此,本题选择B。
二、非选择题(本大题共3题,其中第13小题8分,第14小题9分,第15小题9分,共26分)
13. 小明为蔬菜大棚搭建了一个简易温度监测控制系统,可以设定阈值,系统提供自动及手动工作模式。自动工作模式时,系统会自动根据温度变化情况控制是否加热,使蔬菜大棚保持适合的温度。手工工作模式,可以通过浏览器远程访问系统控制网页,直接开启或关闭加热器。该系统结构示意图如图所示。系统采用B/S开发架构,使用micro:bit作为智能终端,温度传感器采集数据。传感器采集的数据由智能终端经IoT模块发送到Web服务器,用户可通过浏览器查询实时和历史数据。执行器用于实现温度的控制。根据以上功能描述,请回答下列问题:
(1)下列关于该信息系统的说法,正确的是_________(单选,填字母)
A.在该信息系统中,智能终端的作用相当于中央处理器CPU
B.在该信息系统中,传感器和执行器没有智能终端的控制不能正常工作
C.概要设计阶段,包括系统的模块结构设计、系统物理配置和数据库设计三大部分
(2)通过浏览器远程手动模式开启加热器操作时,指令数据的传输过程为__________(单选,填字母)
A.浏览器→数据库→智能终端
B.浏览器器→智能终端→服务器
C.浏览器→Web服务器→智能终端
(3)根据题意,下列功能需要在智能终端程序中实现的是__________(多选,填字母:A.采集温度传感器上的数据/B.处理浏览器访问请求/C.接收服务器指令/D.打开或关闭加热器)。
(4)智能终端上的程序具有如下功能:每隔5分钟从传感器获取1次温度值:加热器处于关闭状态时:若温度值小于等于阈值temp1,则打开加热器;加热过程中,若温度值大于等于阈值temp2,则关闭加热器:并将温度数据传输到服务器。部分程序如下,请在程序中划线处填入合适的代码。
#导入相关库,代码略
flag=False
while True:
# 从传感器获取温度值,保存在newtemp中,代码略
# 从服务器获取温度阈值temp1和temp2及工作模式数据。auto o代码略
if auto==True:
if newtemp <=temp1 and flag==False:
①____________
#打开加热器,代码略
elif②________and flag==True:
flag=False
# 关闭加热器,代码略
else:
# 执行手动控制加热器,代码略
# 将newtemp,flag等数据传输到服务器。代码略
sleep(1000*5*60) # 延时5分钟
(5)该系统使用后发现通过浏览器远程访问系统控制网页,能直接开启或关闭加热器。小明希望实际温度低于20摄氏度时,加热器自动开启加热,当温度高于26摄氏度时,加热器自动关闭加热,但在实际应用中自动模式下温度低于20摄氏度时,加热器没有开启,而此时手动模式开启正常,请分析可能的原因______。
【答案】 ①. B ②. C ③. ACD ④. flag=True ⑤. newtemp >=temp2 ⑥. 温度传感器损坏 或服务器阈值设置不正确 或Web服务器程序代码有误
【解析】
【详解】本题考查信息系统搭建。
(1)信息系统中,智能终端负责接收传感器采集信息及控制执行器,大量的存储、处理工作由服务器完成,A说法错误,B正确; 概要设计阶段包括数据库系统的选择,数据库设计是在详细设计阶段,C错误; 选B
(2)浏览器向服务器发送请求,服务器处理后将指令发送给智能终端,选C
(3)浏览器访问请求是由服务器完成,其余都在智能终端实现,选ACD
(4)分析代码可知,flag=False变量用于标记加热器处于关闭状态,反之为开启。①处打开加热器 前,先标记加热器状态,即flag=True 依题意,“若温度值大于等于阈值temp2,则关闭加热器”,可知②处填:newtemp>=temp2
(5)低于 20 摄氏度时,加热器没有开启,而此时手动模式开启正常,可知加热器完好,可能的硬件原因是温度传感器损坏;软件方面可能阈值设置有误,或服务器程序代码有误。
14. 小明收集了浙江省某地3月各类共享单车的部分骑行数据记录,每天的用户数据存储在“bike.xlsx”文件中(不考虑跨天数据)。部分数据格式如图a所示,请回答下列问题:
(1)trans函数功能为:读取骑行开始时间或结束时间,获取小时和分钟部分,转换为分钟格式并返回,如“2024/03/01 21:12”获取“21:12”转换为1272(21*60+12=1272),代码如下。请在划线处填入合适的代码。
def trans(t):
n=len(t)
for i in range(n):
if t[i]==" ":
p=i
if t [i]==":":
q=i
time=____________
return time
(2)共享单车计费规则如下:起步价1.5元(含15分钟),超出15分钟,时长费0.5元/15分,不足15分钟以15分钟计算。考虑到车辆坏损等情况,2分钟内(不含2分钟)的骑行数据作废,因此本程序实现过滤骑行时间在2分钟内的数据行,统计各条记录的骑行时间及本月各类单车的收益。
import pandas as pd
importi math
df.insert (4, "骑行时长","") #插入一列
dic={'青桔单车': 0,' 0F0单车' :0,'美团单车' :0,'摩拜单车' :0}
for i in df.index:
c=trans(df.at[i,"结束时间"])-trans s(df.at[i, "开始时间"])
df.at[i, "骑行时长"]=c
if c<2:
fee=0
elif 2<=c<=15:
fee=1.5
elif c>15:
fee=1.5+math.ceil((c-15)//15)*0.5 #函数ceil()实现向上取整
①_________ #统计各类型单车的总收益存入dic中
df= #过滤骑行时间在2分钟内的数据行
print (df)
print (dic)
①请在划线处填入合适的代码。
②方框中应填入的正确代码为__________(单选,填字母)。
A. df [df. fee==0] B. df [df ["骑行时长">=2]]
C. df [df ["骑行时长"]>=2] D. df. drop (df. 骑行时长<2)
(3)统计各类型单车的骑行次数并实现降序排序,绘制柱形图,代码如下,绘制的图表如图b所示,请在划线处填入合适的代码。
import matplotlib.pyplot as plt
plt.rc('font', **{'family': 'SimHei'}) #显示中文标签
df1=df.groupby("单车类型", as_index=False).骑行时长.①________
df2=df1.sort_values("②________", ascending=False)
plt.title("各类型单车骑行次数对比图")
plt.bar(df2.单车类型,df2.骑行时长)
【答案】 ①. int(t[p+1:q])*60+int(t[q+1:]) ②. dic[df.at[i,"单车类型"]]+=fee 或dic[df["单车类型"][i]]+=fee ③. C ④. count() ⑤. "骑行时长"
【解析】
【详解】本题考查的是数据处理与分析。
(1)已知p指向所求小时前面一个空格,q指向的是冒号所在位置,即取出小时部分 int(t[p+1:q]),分钟部分可表示为 int(t[q+1:]),注意要转换成分钟的格式,需要计算不要忘记加 int,最后相加,故答案为 int(t[p+1:q])*60+int(t[q+1:])。
(2)第①空,根据注解“统计各类型单车的总收益存入 dic 中”,那么收益 fee 已经求好,观察 dic字典发现键值是单车的类型,故找出每一行单车的类型即可添加进去,所以使用找值的方法 at 来进行,答案为 dic[df.at[i,"单车类型"]]+=fee 。第②空考查的是 dataframe 的筛选操作,要找出2分钟内的数据行,故只有答案C 符合要求。
(3)第①空观察图b可知,要求的是“各类型单车骑行次数”,即利用函数 count 即可,故答案为count();第②空根据图b和代码“plt.bar(df2.单车类型,df2.骑行时长)”可知,我们要求的骑行时长是降序排序所以排序的参数就是"骑行时长"。
15. 容器灌水:有n个碗按碗口直径从小到大叠放在一起,自上到下依次编号为0~n-1(如图a所示),编号为i的碗的容量为w[i]单位体积,每个碗的初始状态均为空。假设有m则如下:
1)若操作为[1, u, x],表示操作类型1,向第u个碗中加入x单位体积的水;
2)若操作为[2, u],表示操作类型2,查询第u个碗中的水量为多少单位体积;
3)若某个碗中的总水量大于其容量,多出的水会溢出,全部进入其下面的碗中,直到不再溢出。而编号为n-1的碗(最下面的碗)中的会水溢出到地面上,不会进入其他碗。例如:若碗的数量是2,若容量分别是[5,10],操作次数是4次,分别是[1,0,4],[1,1,5],[1,0,5],[2,1],此时编号为1的碗中水的体积是9个单位。
实现上述操作的Python代码如下,程序输入格式及运行界面如图b所示。
请回答下列问题:
(1)假设碗的数量是2,其容量分别是[5,10],操作次数是6次,分别是[1,0,4],[2,0],[1,1,5],[1,0,4],[2,0],[2,1],则最终编号为1的碗中水的体积是________个单位(仅填数字)。
(2)从代码看本题解决问题的算法的使用的数据结构是________(单选,填字母:A.单向链表/B.双向链表/C.循环链表/D.数组)
(3)加框处代码的时间算法效率是________。(用大0阶表示)
(4)请在划线处填写合适的代码。
def delete(pos):
global a, head #全局变量,可调用主程序同名变量
if pos==head:
head=a[pos][2]
else:
①________
a[a[pos][2]][1]=a[pos][1]
n=int(input("请输入碗的数量: "))
w=eval(input("请输入碗的容量:")) #输入并存储数据在列表w中
m=int(input("请输入操作次数:"))
a=[] ; head=0
for i in range(n):
a.append([0, i-1, i+1])
a[0][1]=-1
a[len(a)-1][2]=-1
for i in range(m):
opt=eval(input("请输入操作:")) #输入并存储数据在列表opt中
if opt[0]==1:
u=opt[1]; x=opt[2]
p=head
while x>0 and p!=-1:
if p>=u:
②________ #提示:本空使用取最小值min()函数来表达
a[p][0]+ =water
x-=water
if③_______:
delete(p)
p=a[p][2]
else:
u=opt[1]
print("编号为",u,"的碗中的水量为",a[u][0],"单位体积")
【答案】 ①. 8 ②. B ③. 0(n) ④. a[a[pos][1]][2]=a[pos][2] ⑤. water=min(x,w[p]-a[p][0]) ⑥. a[p][0]==w[p]
【解析】
【详解】本题考查的是链表的应用。
(1)
编号
碗容量
操作[1,0,4]
操作[2,0]
操作[1,1,5]
操作[1,0,4]
操作[2,0]
操作[2,1]
碗0
5
4
查询
4
4+1
查询
碗1
10
0
5
5+3
查询
最终编号为1的碗中水的体积是8个单位。
(2)从程序中的代码可知,使用双向链表来存储叠放的碗中所装水的体积,故选B。
(3)加框处循环体中的代码“a.append([0,i-1,i+1])”执行了n次,时间复杂度为线性阶 O(n)。
(4)①delete(pos)函数的功能为删除a列表中序号为pos 的元素,双向链表是通过列表a实现的,删除 后需要保持列表a中各元素的顺序关系(碗中的水满了,把碗抽掉,不改变其他碗的叠放顺序),pos 左边的节点为a[pos][1],pos右的节点为a[pos][2] 从左往右方向的链表删除节点 pos 时: a[a[pos][1]][2]=a[pos][2],从右往左方向的链表删除节点 pos 时: a[a[pos][2]][1]=a[pos][1] 故①空答案为: a[a[pos][1]][2]=a[pos][2];②第p个碗中能加入水的最大体积不能超过第p个碗中剩余的容量w[p]-a[p][0] ,如果加入水的体积x不到第p个碗中剩余的容量w[p]-a[p][0],则把x全部加入到碗中 ,故第②答案为:water=min(x,w[p]-a[p][0]);③如果第p个碗水装满了,把这个碗抽掉,故③答案为: a[p][0]==w[p]。
第1页/共1页
学科网(北京)股份有限公司
$$