绝密★考试结束前
2023学年第一学期浙江强基联盟 10月统测
高三 技术试题 (2023.10)
第一部分 信息技术(共 50分)
一、选择题(本大题共 12小题,每小题 2分,共 24分。每小题列出的四个选项中,只有一个符合题目的
要求,不选、多选、错选均不得分)
1.下列有关数据与信息的说法正确的是
A.信息可用数字信号来表达,数字信号是以连续变化的物理量存在
B.数据只能用数字或文字来表示
C.同一信息对于不同的人群,其价值相同
D.信息必须经过数字化之后才能被计算机进行存储和处理
【答案】D
【解析】
数据的表现形式有多种;模拟信号是以连续变化的物理量存在;同一信息对于不同的人群,其价值不同。
2.关于人工智能,下列说法不.正.确.的是
A.人工智能的发展在就业、安全、伦理等方面可能会带来新的挑战
B.基于深度学习的人工智能,一般会构造包含若干层的神经网络
C.专家系统是基于数据驱动的人工智能方法实现的
D.图灵测试是测试机器是否具有智能的方法
【答案】C
【解析】
专家系统是符号主义的代表。
阅读下列材料,回答第 3至 5题:
某智慧食堂消费系统的部分功能:食堂内设有多台自助点餐终端,顾客下单后,系统自动计算订单金
额,并提供相应的支付方式供顾客选择。顾客完成支付,系统会将订单信息发送至后厨。配餐完成后,系
统会通知顾客前往取餐。系统还具备数据分析功能,通过对顾客的消费习惯、菜品销售情况等数据进行分
析,帮助食堂管理者了解顾客需求,优化菜品搭配和供应链管理。
3.下列关于信息系统的组成描述,说法正确的是
A.该信息系统中的用户仅指食堂就餐的顾客
B.使用该系统不需要网络的支持
C.触摸屏自助点餐终端属于该系统的硬件
D.顾客点餐的数据保存在自助点餐终端中
【答案】C
【解析】
点餐的数据保存在数据库中。
高三技术 试题卷 第 1 页(共 10 页)
4.下列关于该信息系统的安全与防护,说法不.正.确.的是
A.定期备份服务器中数据可提升信息系统数据的安全
B.利用身份认证技术对该系统中不同的管理者设置不同的权限
C.及时更新系统,修复漏洞,提高系统安全性,降低病毒感染风险
D.设置防火墙,保护内部网络免受非法用户的入侵
【答案】B
【解析】
访问控制技术可以对该系统中不同的管理者设置不同的权限。
5.关于该系统的功能,以下说法不.正.确.的是
A.顾客输入餐桌号、用餐人数、菜品等信息属于数据收集和输入功能
B.顾客可查询菜品、账单等信息属于数据查询功能
C.显示或打印点餐数据和总消费金额属于数据输出功能
D.根据顾客点餐数据,优化菜品搭配属于数据存储功能
【答案】D
【解析】
根据顾客点餐数据,优化菜品搭配属于数据加工处理功能。
6.下列关于网络系统的说法,不.正.确.的是
A.网络由计算机系统、数据通信系统以及网络软件和网络协议组成
B.计算机网络按网络的覆盖范围分为:局域网、城域网、广域网
C.HTTP协议用于管理被传送内容的完整性
D.网络系统最基本的功能是数据通信
【答案】C
【解析】
TCP协议管理被传送内容的完整性。
7.李华需要对处理好的照片进行编码,照片由类型+编号两部分构成。如果类型最多有 10种,每种类型的
照片不超过 60 张。在尽可能减少编码长度的情况下,使用该编码方案保存的照片,以下说法正确的是
A.用 4 位二进制数表示照片类型,6 位二进制数表示照片编号
B.用 4 位二进制数表示照片类型,5 位二进制数表示照片编号
C.用 3 位二进制数表示照片类型,6 位二进制数表示照片编号
D.用 3 位二进制数表示照片类型,5 位二进制数表示照片编号
【答案】A
【解析】
如果类型最多有 10 种,需要用 4 位二进制数表示照片类型;每种类型的照片不超过 60 张,需要用 6 位
二进制数表示照片编号。
8.已知某二叉树的后序遍历为 GDBEHFCA,中序遍历为 DGBAECHF,下列说法正确的是
A.该二叉树中叶子节点有 3 个
高三技术 试题卷 第 2 页(共 10 页)
B.该二叉树的前序遍历为 ABDGCEHF
C.该二叉树是一棵完全二叉树,树的高度为 4
D.该二叉树中度为 1 的节点有 2 个
【答案】A
【解析】
根据题意,可以构建出如下二叉树。该二叉树的前序遍历为 ABDGCEFH。不是完全二叉树,该二叉树中度
为 1 的节点有 3 个 。
9.有如下程序段:
a=[30,10,20,11,12,50]
d=[0]*6 ; max=0 ; n=len(a)
for i in range(1,n):
for j in range(i):
if a[j]
d[i]+=1
if d[i]>max:
max=d[i]
执行程序后,变量 max的值是
A.2 B.3 C.4 D.5
【答案】D
【解析】
d 数组存储 i 号位前有多少个比 a[i]小的元素个数。max 为 d 数组中元素值的最大值。
10.有如下程序段:
def fun(k):
if k==1 :
return "1"
elif k%2==0:
return fun(k-1)+str(k%2)
else:
return str(k%2)+fun(k-1)
执行语句 s=fun(5),则 s的值为
高三技术 试题卷 第 3 页(共 10 页)
A."00111" B."11010" C."11100" D."10110"
【答案】C
【解析】
f(5)=’1’+f(4)=’1’+f(3)+’0’=’1’+’1’+f(2)+’0’=’1’+’1’+f(1)+’0’+’0’=’11100’
11.有如下 Python程序段:
s=input()
stack=[0]* len(s);top=-1;presign='+';num=0
for i in range(len(s)):
if '0'<=s[i]<='9':
num=num*10+int(s[i])
if i==len(s)-1 or s[i] in '+-*/':
if presign=='+':
top+=1
stack[top]=num
elif presign=='-':
top+=1
stack[top]=-num
elif presign=='*':
top+=1
stack[top]=stack[top-1]*num
else:
top+=1
stack[top]=stack[top-1]//num
presign=s[i]
num=0
print(sum(stack)) #sum函数对 stack中所有元素求和
若输入'5*4-6+10/3',程序运行后,输出结果是
A.32 B.24 C.17 D.8
【答案】A
【解析】
根据前置运算符来进行栈内元素值的更新。stack 为[5, 20, -6, 10, 3, 0, 0, 0, 0, 0]
12.有如下 Python程序段:
a=[i for i in range(1,7)]
b=[0]*6
head,tail=0,0
for i in range(1,7):
cnt=1
while cnta[tail]=a[head]
head=(head+1)%6
高三技术 试题卷 第 4 页(共 10 页)
tail=(tail+1)%6
cnt+=1
b[a[head]-1]=i
head=(head+1)%6
执行该程序段后,b[5]的值为
A.2 B.3 C.4 D.5
【答案】B
【解析】
a 数组不断更新用来存放当前循环队列 b 中未存放数据的下标位置。b 数组更新为:第一次 b[0]=1,第二
次 b[2]=2,第三次 b[5]=3,第四次 b[1]=4,第五次 b[3]=5,第六次 b[4]=6
二、非选择题(本大题共 3 小题,第 13 小题 8分,第 14 小题 9分,第 15 小题 9分,共 26 分)
13.小华开发了一个自动改卷系统,但是由于科目不同,没有固定的题号模板,于是小华又编写了 Python
程序,能根据试卷答案自动输出题号。如图 13-1 为答案模板文件,小华在模板文件中录入答案后保存
为"卷 3.txt",如图 13-2所示,每一行是一题或者一题中的一小题的答案,题号之间没有跳跃。例如:
图 13-2中【1】和【5】之间有 4 行,A、B、C、D 为第 1 到 4 题的答案。程序运行结果如图 13-3 所
示。
第 13题图 1 第 13题图 2 第 13题图 3
(1)实现上述功能的 Python 程序如下,若删除图 13-2 最后一行(【7】所在的行),对程序运行结果
影响(填文字:有/没有)。
(2)请在划线处填入合适的代码。
f=open("卷 3.txt",encoding="utf-8")
line=f.readline().strip() #strip()用于删除字符串尾部的"\n"换行符
c=0
preId=0
QuestionInfo=[ ]
while line:
if line[0] == "【":
curId = ①
if curId - preId > 1:
for i in range(preId, curId):
QuestionInfo.append(str(i))
elif c>0:
for i in range(1, c + 1):
QuestionInfo.append(str(preId) + "(" + str(i) + ")")
高三技术 试题卷 第 5 页(共 10 页)
c = 0
②
else:
③
line=f.readline().strip() #strip()用于删除字符串尾部的"\n"换行符
f.close()
print("卷 3 题号划分为:")
for Id in QuestionInfo:
print(Id)
【答案】
(1)有 2 分
(2) ①int(line[1:-1]) 或 int(line[1:len(line)-1]) 或等价答案 2 分
②preId=curId 2 分
③c+=1 或 c=c+1 或等价答案 2 分
【解析】
(1)没有最后一行就无法确定【6】后面是多个小题还是多个题。
(2)①取出题号数字,要注意多位数的情况
②迭代 preId 到当前题号,为下一次遇到新题号做准备
③小题数量计数
14.小华在公司实验室搭建了一个农业大棚温湿度监测系统,温度上升到超过 30℃或温度下降到低于 10℃
时,智能终端连接的蜂鸣器发出警报。系统的硬件搭建方式是:服务器通过实验室局域网的无线网络连
接智能终端,智能终端连接传感器和执行器,传感器采集的数据由智能终端经 IoT模块发送到Web服务
器。请回答下列问题:
(1)若公司门口施工导致电信光纤被挖断,会导致_____(单选,填字母:A.服务器接收不到智能终端
发出的数据 / B.在实验室使用局域网无法访问Web服务器 / C.在家中无法访问Web服务器)。
(2)小华基于 Flask Web框架编写服务器端的程序,部分代码如下,视图函数 index()的返回值由____接
收(单选,填字母:A.浏览器 / B.智能终端 / C.智能终端和浏览器都可以)。
(3)要获取视图函数 index()返回的页面,应访问的 URL是 http:// 。
#导入 Falsk 框架模块及其他相关模块,创建 app实例,代码略
@app.route('/index')
def index():
#从数据库读取近 1 小时获取的传感器编号、温度和湿度组成的二维列表 data,代码略
return render_template('idx.html',data=data)
#服务器其他功能,代码略
if __name__ == '__main__':
app.run(port=8000)
(4)小华将该系统用于种植草莓,不同季节,不同农作物对环境的要求都有所差异。同一种农作物在不
同的生长时期(苗期、现蕾期、盛花期、初果期、膨果期等)需要的生长环境也不同。请为小华提
出合理建议,优化或增加系统功能:____________________________________________。
(5)小华采用 excel表格记录了 2个实验组种植草莓的实验数据,他希望绘制“淡雪现蕾期生长表现对
比”柱形图,部分数据(前 12行)如图 14-1所示(时间格式为“年/月/日 时:分”) 。
高三技术 试题卷 第 6 页(共 10 页)
第 14题图 1 第 14题图 2
df = pd.read_excel('strawberry.xlsx')
name=input("请输入品种")
period=input("请输入生长阶段")
df=df[df["品种"]==name]
df= df[df["生长阶段"]==period]
df = df.groupby(" ① ", as_index = False).mean() #分组求平均值
plt.title(name+period+"生长表现对比")
plt.bar(df.实验组, df.生长表现) #绘制柱形图
①请在程序中划线处填入合适的代码。
②小华要输出每个品种现蕾期生长阶段生长表现最好时的温度湿度,为此他需要修改程序代码,
以下操作恰当的是 (多选,填字母)。(注:全部选对的得 2分,选对但不全的得 1分,不
选或有选错的得 0 分)
A.筛选品种
B.筛选生长阶段
C.根据生长阶段分组,每组按生长表现降序排序,输出每组第一行
D.根据品种分组,每组按生长表现降序排序,输出每组第一行
【答案】
(1)C 1 分
(2)A 1 分
(3)127.0.0.1:8000/index 1 分
(4) 建立不同作物在不同时期的阈值表,使不同时期的报警阈值不同等合理建议 2 分
要求:回答内容题目描述的内容相关且合理
(5) ①实验组 2 分
②BD 2 分
【解析】
(1)光纤是外网,只影响实验室内外之间的通信
(2)render_template 函数是利用提供的网页模板文件生成纯 HTML 文件,然后返回到用
户浏览器
(3)考察了默认的 IP 地址以及人为规定的 port=8000
(4)略。
(5)①根据 bar 的图以及 plt.bar 代码可以看出
②每个品种都要分析,所以品种不能被筛选掉,A 错误。
规定了要对现蕾期进行研究,所以要筛选生长阶段,B 正确。
按生长阶段分组后,每组有多个品种,只留第一行肯定错误。C 错误。
高三技术 试题卷 第 7 页(共 10 页)
D 项是要搭配 B 选项,先筛选出现蕾期的数据,再按品种分组,排序后每个品种现蕾期表现
最好的温度湿度都排在了每组的第一行。D 正确。
15.某咖啡店,店里共有 4种咖啡,类型编号为 0到 3,每次只能制作一种类型的咖啡,咖啡都是批量现做
(制作过程中不能更改数量或类型)。店员需按照订单的先后顺序完成订单(即当前订单完成之前不能
换订单),已经接到的订单中的同一类型咖啡可以一起制作(假设咖啡机能同时制作的数量上限足够高),
且不需要额外增加时间(即只需制作一杯的时间)。如图 15-1为每个订单的咖啡数量,初始“订单 0”
中[6,0,2,4]表示 0到 3号咖啡的购买数量。此时店员先做数量最多的 6份 0号咖啡,1分钟后接到新订单
[1,18,0,2],之后每分钟都会接到 1个新订单,这些订单都计入每种咖啡的待做数量。3 分钟后这 6份 0
号咖啡制作完成,程序会在“订单 0”中选择还没制作的且待做数量最多的(数量相同时先后不作要求)
咖啡作为下一次要制作的咖啡。编写 Python程序,每次制作完一种咖啡,输出接下来要制作的咖啡,运
行界面如图 15-2:
第 15题图 1 第 15题图 2
(1)由图 15-1 的订单信息,3 分钟后"咖啡 0"制作完成,那么图 15-2中(1)处店员接下来要做的
咖啡是咖啡 。
(2)根据待制作的咖啡数量,对链表初始化,生成降序链表 lnk,则代码运行后 y的值为 。
def sort():
for i in range(3):
for j in range(3,i,-1):
if waitlist[index[j]][1] > waitlist[index[j - 1]][1]:
index[j], index[j - 1] = index[j - 1], index[j]
if waitlist[index[j]][1]==0:
return j
return 4
waitlist=[[3,6],[4,0],[1,2],[2,4]] # "咖啡 0"的批量制作时间为 3 分钟,目前待做量为 6,以此类推
q=[[6, 0, 2, 4], [1, 18, 0, 2], [2, 1, 2, 1], [0, 1, 0, 5],…… #如图 15-1,代码略
#q保存订单流,第一个订单[6,0,2,4]作为初始订单已计入 waitlist
index=[0,1,2,3]
y=sort()
lnk=[-1]*4
for i in range(y-1): #创建降序链表
lnk[index[i]]=index[i+1]
p=lnk_h=index[0]
print("请制作咖啡"+str(p))
waitlist[p][1]=0 #咖啡 p进入制作,待做数量回 0
(3)请在划线处填入合适的代码。
def enqueue(order): #order是一个订单,例如[1,2,0,3]
global lnk_h
flag.append([0,0,0,0]) #新订单 4种咖啡未完成
高三技术 试题卷 第 8 页(共 10 页)
for i in range(4):
f = True
if waitlist[i][1]==0: f=False
if order[i]==0: continue
waitlist[i][1]+=order[i] #将订单 order中的咖啡 i累加到待制作数量中
cur=lnk_h
while cur!=-1 and waitlist[i][1]pr,cur=cur,lnk[cur]
if cur!=i:
tmp = lnk[i]
lnk[i]=cur
if cur==lnk_h:
lnk_h=i
else:
lnk[pr]=i
if f:
while cur!=i:
pr,cur=cur,lnk[cur]
①
def nextfood(qhead,qtail): #找到下一次要做的咖啡
global lnk_h
cur=lnk_h
while ② :
pr,cur=cur,lnk[cur]
if cur==lnk_h:
lnk_h=lnk[lnk_h]
elif cur==-1:
return -1
else:
lnk[pr]=lnk[cur]
waitlist[cur][1]=0
for i in range( ③ ):
if q[i][cur]!=0: flag[i][cur] = 1
return cur
qhead,qtail=0,1
order=q[qhead]
flag=[[1,0,0,0]] #flag[i][j]=1 标记"订单 i"中的"咖啡 j"已经在做或已经做完。
lnk_h, time =lnk[lnk_h],0
while True:
time=(time+1)%waitlist[p][0]
if qtailenqueue(q[qtail]) #接新订单
qtail+=1
if time==0:
高三技术 试题卷 第 9 页(共 10 页)
while qheadqhead+=1
order=q[qhead]
p=nextfood(qhead,qtail)
if p == -1 : break
print("请制作咖啡"+str(p))
【答案】
(1)3 1 分
(2)3 2 分
(3) ①lnk[pr]=tmp 或等价答案 2 分
②cur!=-1 and (q[qhead][cur]==0 or flag[qhead][cur]==1) 或等价答案 2 分
③qhead, qtail 或 0,tail 或 qtail 或等价答案 2 分
range 的第一个参数只要是 0 到 qhead 之间,都可以给分
【解析】
(1)初始订单[6,0,2,4]的 6 杯咖啡 0 一开始就已经在做了, 所以各咖啡待做的数量是[0,0,2,4],在咖啡 0
制作当中,接到了 3 个订单,待做数量变成了[3,20,4,12],此时咖啡 1 最多,但是当前还在完成订单 0 的
过程中,由订单 0 中的[6,0,2,4]可知,咖啡 1 数量为 0,所以不作为下一种要做的咖啡,而是选择了 12 份
咖啡 3.本质上是按照待做数量看成一个降序链表,然后尽可能取链表头部,但是要经过筛选,筛选条件就
是该咖啡在当前订单中,且还没被做过。
(2)通过索引排序得到了使 waitlist 能够按照待做数量降序排序。lnk 是个纯指针链表。在索引排序的过
程中,从后往前比,把大的数运到前面,如果遇到最大的数为 0,则结束排序,return 不含 0 的节点个数,
也就是说数量为 0 的咖啡不会出现在 lnk 链表里,也是为后面 nextfood 做铺垫,到待制作咖啡对应的链
表为空的时候,整个程序也就结束了。
(3)
①前面有一句 tmp=lnk[i],也就是备份 i 的后继节点,因为新订单使咖啡 i 数量变多,要重新维护链表使
它仍然降序,这里就考虑了几种情况:
情况一:是咖啡 i 本身不在链表里,那么只要找到位置插入节点即可,对应的就是 f==False的情况
情况二:是咖啡 i 本身在链表里,且位置发生了变化,那就要从头开始找到新的插入位置, 然后插入咖啡
i 这个节点,插入后继续向后查找并删除链表中原来的咖啡 i 节点
情况三:咖啡 i 已经在链表里,且其数量增加后在链表中的位置不需要调整。
②要找到下一种要做的咖啡,由于链表是降序的,从数量多的开始遍历,这里实际上
就是考察了对节点的筛选,要求当前订单 q[qhead]中该咖啡数量不为 0,且还没被做过,但
是既然是查找算法,就要考虑边界保护的问题,所以 cur!=-1 也是必须的,如果当前链表已
经是空链表,说明待做咖啡已经没有了,所有订单都完成了。
③将当前订单到已经接到的订单中所有的咖啡 cur(也就是下一件马上要让店员做的咖啡)标记为 1.意思就
是要开始做了。那么有些同学写 range(0,tail),这样会重复标记之前已经标记过 1 的那些已经完成的订单,
程序也能正常运行,只是效率不高。考虑到能想到这一步并做出来已经很不容易,程序能运行就给分。
高三技术 试题卷 第 10 页(共 10 页)