2022学年第二学期杭州市高三年级教学质量检测
技术试题卷
第一部分 信息技术解析(50分)
一、选择题(本大题共 12 小题,每小题 2 分,共 24 分,每小题列出的四个备选项中只有一个是符合题目
要求的,不选、错选、多选均不得分。)
1.下列关于数据和信息的说法,正确的是
A.乘坐火车时不需要提供纸质火车票,说明信息可以不依赖于载体
B.考古发现可以让我们了解过去的文化,说明信息不会随着时间的推移而变化
C.结绳记事中通过“大事大结,小事小结”来记录不同的事件,其中绳结是信息
D.“一百个人心中有一百个哈姆雷特”,说明不同的人对同一信息会建构出不同知识
【答案】D
【解析】
本题考查信息与信息特征的相关知识。
A选项.根据信息特征的描述,信息必须依附于一定的载体,不存在没有载体的信息,A选项错误;B选项
中考古发现以前的文化,说明的是信息可以脱离它所反应的事物被保存,并不是不会随着时间的推移而改
变,B选项错误;C选项中的绳结属于数据,并不是信息,故答案选 D。
2.下列关于人工智能的说法,正确的是
A.电商平台人工客服和机器客服合作解答问题,属于跨领域人工智能应用
B.基于深度学习的人工智能,一般会构造包含若干层的神经网络
C.专家系统是基于数据驱动的人工智能方法
D.人工智能技术推动了人类社会进步,不可能威胁人类安全
【答案】B
【解析】
本题考查人工智能的相关知识。
A选项题目中描述了人工客服和机器客服合作解决问题,属于混合增强型人工智能,A选项错误;C选项专
家系统属于以符号主义表达与推理为代表的人工智能,C选项错误;D选项人工智能可能威胁人类安全。故
答案选 B
3.下列关于数据处理与应用的说法,正确的是
A.大数据一般具有数据量大、处理速度慢、数据类型多、价值密度高的特征
B.所有的文本数据处理都依次经过数据分析、特征提取、分词和结果呈现四个步骤
C.数据可视化是将数据以图形图像等形式表示,直观呈现数据中所蕴含的信息
D.在数据处理过程中,数据的质量不会影响数据分析的结果
【答案】C
【解析】
本题考查大数据、数据处理的相关知识。
A选项大数据特征是速度快,不仅是产生速度快处理速度也快,A选项错误;B选项文本处理结果过程包括
分词、特征提取、数据分析、结果呈现四个步骤,B选项错误;D选项数据处理中,数据本身的质量直接会
高三技术试题卷 第 1页 共 14 页
影响到最后的分析结果,故答案选 C
阅读下列材料,回答第 4题至第 6题。
某中学使用“智能门禁系统”,师生进出校园可使用人脸、校园卡或身份证进行识别。该系统使用 AI摄
像头识别人脸,RFID技术获取校园卡、身份证等电子标签数据,并将采集到的数据存储到Web服务器的数
据库,家长可使用手机客户端登录该系统,随时随地查看学生进出校园的情况。其中服务器的主要配置为:
CPU 内存 硬盘 操作系统
八核 2.3GHz 16GB 4TB Windows
4.下列关于该信息系统组成与功能描述,正确的是
A.使用该系统需要网络的支撑 B.该系统最大存储数据量为 16GB
C.该“智能门禁系统”属于系统软件 D.Web服务器中的数据库属于系统的硬件
【答案】A
【解析】
本题考查网络信息系统的相关知识。
B选项该系统最大存储容量为 4TB,B选项错误;C选项该“智能门禁系统”属于应用软件,C选项错误;
D选项数据库属于系统的软件部分,故答案选 A。
5.下列操作中会对系统造成安全隐患的是
A.捡到校园卡及时归还失主 B.为新用户设置同一登录密码
C.为服务器及时更新系统补丁 D.采集的数据经加密后存储到数据库中
【答案】B
【解析】
本题考查网络信息安全的相关知识。
B选项为新用户设置同一登录密码,容易造成信息的泄漏和数据安全受到威胁等一系列信息安全问题。
6.下列关于该信息系统中的数据说法,不.正.确.的是
A.家长通过登录系统了解学生进出校园的情况属于系统数据的查询
B.通过 AI摄像头采集人脸数据属于该系统的数据输入
C.数据只有存储到数据库中才能进行处理
D.该系统关闭后客户端将无法正常查看系统数据
【答案】C
【解析】
本题考查信息系统中的数据。
ABD均正确,C选项说法错误,数据库中的数据可以方便查询
和共享及调用,但并非只有数据库中的数据才能被处理。
7.某算法的部分流程图如图所示,执行这部分流程,若输入 x
的值依次为 1,2,3,4,5,-1,则输出 s的值是
A.3 B.7 C.13 D.15
【答案】C
高三技术试题卷 第 2页 共 14 页
【解析】
本题考查算法的表示流程图相关知识。
根据题意列出表格:
x k s
1 0 -1
2 1 1
3 0 4
4 1 8
5 0 13
-1
8.已知一棵二叉树有 13个节点,树中度为 1的节点数为 2,则该树度为 2的节点数为
A.4 B.5 C.6 D.11
【答案】B
【解析】
本题考查二叉树相关知识。
根据二叉树的性质,n0=n2+1 n=n0+n1+n2,可以推出 n2=5
9.有 1个栈,从栈顶到栈底依次为元素 a、b、c,并且已知元素 d已入栈并出栈,则这四个元素的入栈顺序
可能为
A.a,b,c,d B.b,d,c,a C.c,d,b,a D.d,a,b,c
【答案】C
【解析】
本题考查栈的相关知识。
根据题意可知,入栈顺序可能是 dcba cdba cbad,所以选 C。
10.定义如下递归函数,计算正整数 n的每位数字之和,例如 n=123,函数返回值为 6。
def f(n):
x = (1)
if x == 0:
return n
else:
y = (2)
return (3)
上述程序段中方框处可选代码为:
①n % 10 ②n // 10 ③y + f(x) ④y + f(n - 1)
则(1)(2)(3)处代码依次为
A.①②③ B.①②④ C.②①③ D.②①④
【答案】C
【解析】
本题考查递归代码的分析与理解能力。
高三技术试题卷 第 3页 共 14 页
计算正整数n的每位数字之和,可以得出其递归公式:f(n)=f(n//10)+n%10,当n<10时递归结束。结合题目
给出的代码,依次分别是(1)n//10、(2)n%10、(3)y+f(x),正确答案是C。题目代码写的比较细碎
,④y + f(n - 1)首先可以排除,根据③y + f(x),可以分析得出y=n%10,x=n//10
11.有如下 Python程序段:
import random
a = [2,3,5,8,10,10,10,17,19,20]
key = random.randint(1,30) # 随机生成[1,30]之间的整数
i,j = 0,9
while i <= j:
m = (i + j) // 2
if a[m] > key:
j = m - 1
else:
i = m + 1
print(j)
执行该程序段,下列说法正确的是
A.若 key的值为 10,则输出的值为 3
B.若输出的值为 8,则 key的值一定为 19
C.对于任意 key值,语句“m = (i + j) // 2”最少执行 1次
D.对于任意 key值,语句“m = (i + j) // 2”最多执行 3次
【答案】B
【解析】
本题考查二分查找,其中主要考查利用二分查找边界。
二分关键代码中,没有提前终止循环的语句。列表 a的元素个数是 10个,介于 7-15之间,查找次数最少 3
次,最多 4次。m = (i + j) // 2语句对应的其实就是查找次数,所以选项 C、D均错误。这段代码是二分中的
边界查找。根据条件 if a[m] > key,当 key=10时,i=7,j=6,选项 A错误;j=8,i=9,对应的元素分别是 19,
20,19=这种题目基本都可以迅速得到正确答案:
j i
<=key >key
12.有如下 Python程序段:
import random
q = [0] * 5
head = tail = 0
for i in range(5):
if random.randint(0,1)== 0:
q[tail] = random.randint(1,9)
tail += 1
elif head != tail and q[tail - 1] < q[head]:
q[tail] = q[head]
head += 1
高三技术试题卷 第 4页 共 14 页
tail += 1
执行该程序段后,q的值不.可.能.是
A.[0, 0, 0, 0, 0] B.[5, 4, 3, 2, 1]
C.[5, 8, 3, 0, 0] D.[0, 5, 6, 0, 0]
【答案】D
【解析】
本题数组构成的顺序队列的基本操作。
掌握了队列的基本规律,利用排除法,
当随机数均为1,没有任何元素入队,还是初识值,就是选项A;
当随机数均为0,有恰好是5、4、3、2、1入队,可以得到选项B;
选项D的第一个元素是初值0,只要有元素(1-9)入队,就不可能的,错误。
下面分析一下选项C,根据代码分析,队列不为空且队尾元素比对头元素小,就要将对头元素调整到队尾。
5-8-3好像不可能,但是3如果是循环最后一次时入队的元素,还没有调整的机会。
二、非选择题(本大题共 3 题,其中第 13 题 8分,第 14 题 9分,第 15 题 9 分,共 26 分)
13.小强搭建家庭灯光、温度监控系统,该系统使用传感器采集光线、温度等数据由智能终端经过 IoT模块
发送到Web服务器。服务器端程序采用 Flask Web框架编写,实现监控灯光与空调等功能。系统结构示意
图如第 13题图 a所示。请回答下列问题:
第 13题图 a
(1)完善该系统结构图。若第 13题图 a中○A ○B ○C 处的设备由以下三部分组成:①Web服务器;②智能
终端;③IoT模块,则○A ○B ○C 处的设备依次为 (填数字编号)。
(2)小强使用智能终端上传采集的温度数值(范围为[0,1023]之间的整数),服务器接收到上传温度数
值 t后,将其转换为摄氏度 d(转换公式为:t÷1024×3000÷10.24,保留 2位小数)保存到数据库
中数据类型为实型的 tem字段中。服务器端部分 Python代码如下,请在划线处填入合适的代码。
#导入各模块代码略
@app.route("/s")
def index( ):
#数据库连接等代码略
id=request.args.get("id") #接收智能终端上传的传感器编号
t=int(request.args.get("t")) #接收智能终端上传的温度数值
d=
s="insert into da(id,tem) values ('"+id+"',"+str(d)+ ")"
cur.execute(s) #将数据保存到数据库中
#数据库其它操作代码略
return "ok"
高三技术试题卷 第 5页 共 14 页
if __name__ == "__main__":
app.run(host="192.168.0.1",port=8080)
(3)结合上述代码,若上传编号 id为 1,温度数值 t为 72时,则能正确提交数据到服务器的 URL为
(单选,填字母)。
A.http://192.168.0.1.8080/index id=1&t=72
B.http://192.168.0.1/8080:s id=1&t=72
C.http://192.168.0.1:8080/index id=1&t=72
D.http://192.168.0.1:8080/s id=1&t=72
(4)为提升该系统Web服务器的性能,从硬件角度着手,除了增加内存容量外,还可以在哪些方面加以
改进,请简要说明改进方案 。(注:回答两项,一项正确得 1分)
【答案】
(1)231
(2)round(t/1024*3000/10.24.2) 或 int(t/1024*3000/10.24*100+0.5)/100
(3)D
(4)更换更高型号的 CPU、增加硬盘容量等
【解析】
本题考查信息系统的搭建及相关知识。
(1)数据上传到服务器的数据库,○A 处为与数据库直接连接,应为 web服务器;智能终端直接连接传感器,
并过 IOT模块连接 wifi,○C 处应为智能终端,而○B 处为 IoT模块。故填:213。
(2)从题干中可知,转换公式为:d=t÷1024×3000÷10.24,保留 2位小数,故填: round(t/1024*3000/10.24.2)
(3)从 app.run(host="192.168.0.1",port=8080),可以看出 ip地址为192.168.0.1,端口为8080,而@app.route("/s")
可以看出路由为”/s”, 则若上传编号 id 为 1,温度数值 t 为 72 时,正确提交数据到服务器的 URL 为
http://192.168.0.1:8080/s id=1&t=72
(4)影响计算机性能的是综合指标,主要有 CPU型号、硬盘容量、内存容量等,故要想提升该系统Web
服务器的性能,可以更换更高型号的 CPU、增加硬盘容量等。
14.小天收集了浙江省某年各地市年龄段数据,保存在“T14.xlsx”文件中,如第 14题图 a所示。为统计分
析各地市不同年龄段人口占比,编写 Python程序,输出结果如第 14题图 b所示。
第 14题图 a 第 14题图 b
请回答下列问题:
(1)为统计分析各地市不同年龄段人口占本地市人口比例,编写 Python代码如下,划线处①应填入的代
码为 (单选,填字母),划线处②应填入的代码为 。
A.df.groupby("地市",as_index=False).count()
B.df.groupby("地市",as_index=False).sum()
C.df.groupby("地市",as_index=True).mean()
import pandas as pd
高三技术试题卷 第 6页 共 14 页
import matplotlib.pyplot as plt
df = pd.read_excel("T14.xlsx")
df1 = ① # 计算各地市不同年龄段的人数
print ("地 市 17岁以下 18-34岁 35-59岁 60岁及以上")
#“df1.values.tolist()”实现将 df1转换为二维列表。列表中每个元素包含 5个数
#据项,分别对应地市名称和该地市 4个年龄段人数总计,如['丽水市', 501421, ...]
df2=df1.values.tolist()
x,y = [],[]
for area in df2:
for c in range(len(area)):
if c == 0:
x.append(area[0])
print(area[0], end=" ")
else: 第 14题图 c
sm = sum(area[1:]) #sum函数实现对序列求和
t= ②
print('%.2f' %(t), end="% ") #按设置格式输出
if c == 4:
y.append(t)
print()
plt.title("浙江省各地市 60岁以上人数占本地市总人口比例", fontsize=24)
plt.bar(x, y) #绘制 60岁及以上人数占本地市总人口比例柱形图
#设置绘图参数,显示如第 14题图 c所示,代码略。
(2)由第 14题图 c可知,60岁及以上人数占本地市人口比例超过 25%的地市有 个。
(3)小天编写 mygroupby函数模拟实现上述分类汇总功能,计算各地市不同年龄段的人数,结果以列表
形式返回。函数代码如下,请在划线处填入合适的代码。
#df1为二维列表,列表中每个元素包含 6个数据项,内容如第 14题图 a所示;函数返回值 dfs格式
同题(1)二维列表 df2
def mygroupby(df1):
dfs=[] #创建一个空列表 dfs
for row in df1:
①
if n>0:
for j in range(n):
if row[0]==dfs[j][0]:
break
if n==0 or row[0] != dfs[j][0]:
dfs.append([row[0],0,0,0,0])
j=n
for k in range(2,len(row)):
②
return dfs
【答案】
高三技术试题卷 第 7页 共 14 页
(1) ①B (2分)
②area[c]/sm*100 (2分)
(2) 5 (1分)
(3) ①n=len(dfs) (2分)
②dfs[j][k-1]=dfs[j][k-1]+row[k] (2分)
【解析】
本题考查 pandas数据处理和二维数组的应用。
(1)本空计算各地市不同年龄段的人数,应采取分组求和的方式,即 df.groupby("地市",as_index=False).sum()
df2是一个二维数组,area是 df2的一个元素,通过 c能访问 area中的一个数据项。area包含 5个数据项,
分别为对应地市名称和该地市 4个年龄段人数总计。sm 是该地市总人口数量,t需要计算一个年龄段人口
占比,area[c]访问该年龄段人数总计。可知 t可以通过 area[c]/sm*100 计算得到
(2)观察图 c可以看出,60岁及以上人数占本地市人口比例超过 25%的地市有嘉兴、宁波、湖州、绍兴、
舟山,共 5个。
(3)df1是一个二维数组,row是 df1的一个元素,包含 6个数据项,分别为对应地市名称、辖区名称和该
辖区 4个年龄段人数。
由后续两段 if 语句可知,本空是对 n 的计算,而 n 是 dfs 中已有元素个数,可通过求长度得到,即
n=len(dfs)
dfs[j][k-1]=dfs[j][k-1]+row[k]或 dfs[j][k-1]+=row[k]
if n>0: 查找当前读取到的元素 area 的地市是否已
for j in range(n): 存在于 dfs中,如果存在,找到该地市在 dfs
if row[0]==dfs[j][0]: 中的索引位置 j
break
if n==0 or row[0] != dfs[j][0]: 如果没有找到,在 dfs中新增一条关于该地
dfs.append([row[0],0,0,0,0]) 市的记录,各年龄段人数初始化为 0
j=n
for k in range(2,len(row)): 在 dfs[j]的对应位置累加当前读取到的记录
② row中对应年龄段的人数
15.为分析数据中各元素的变化情况,进行如下定义:
若在数组 d中满足 d[a]< ... d[i+1]>...>d[b],则从下标 a到下标 b区间的数据称为一个波
峰,下标 a到 b的距离即为一个波峰的长度(长度≥3)。例如:数组 d元素为“78,46,50,37,5,42,6,6,23”,
存在 2个波峰,分别是从 d[1]到 d[4]和 d[4]到 d[6],波峰长度分别为 4和 3。
编写程序分析数据,找出所有波峰,按波峰长度降序排序(若波峰长度相同,则按开始下标升序),
并输出波峰长度和开始到结束元素下标;若不存在,则输出“不存在波峰”,运行结果如图所示。
第 15题图
请回答下列问题:
(1)根据题意,若数组 d元素“23,14,35,31,13,20,3,40,10,10,9”,则最长的波峰长度为 。
(2)执行该程序,若数组 d元素为“2,1,1,2”,则○A 处 while语句中循环体的执行次数是 。
(3)实现上述功能的程序代码如下,请在划线处填入合适的代码。
高三技术试题卷 第 8页 共 14 页
#读取待处理数据,保存在数组 d中,并显示输出,代码略
mt,i,n=[],1,len(d)
while iwhile ii+=1
st=i-1
while id[i-1]:
i+=1
if ① :
continue #跳出本轮循环,然后继续进行下一轮循环
while ii+=1
ln=i-st
if len(mt)==0:
mt.append([ln,st,-1]) #为 mt追加一个列表元素
head=0;q=head
else:
p=head
while p!=-1 and ② :
q=p
p=mt[p][2]
if p==head:
mt.append([ln,st,head])
head=len(mt)-1
else:
mt.append([ln,st,p])
③
if len(mt)==0:
print("不存在波峰")
else:
print("输出结果(长度:开始下标~结束下标):")
p=head
while p!=-1:
print(mt[p][0],":",mt[p][1]," ~",mt[p][0]+mt[p][1]-1)
p=mt[p][2]
(4)使用以下代码替换加框处代码,可以减少链表 mt遍历次数的是 (单选,填字母)。
A. if mt[q][0]>ln: B. if mt[q][0]p=mt[q][2] p =mt[q][2]
else: else:
p=head p=head
【答案】
(1)4 (1分)
(2)2或 2次 (1分)
高三技术试题卷 第 9页 共 14 页
(3) ① i==n or d[i]==d[i-1]或等价表达式 (2分)
②(lnmt[p][1]) (2分)
若条件少括号,不得分
③mt[q][2]=len(mt)-1 (2分)
(4)A (1分)
【解析一】
本题考查链表应用和插入排序的算法实现。
(1)波峰先上升后下降,最长波峰为“14,35,31,13”,长度为 4。
(2)查找上升波段开始位置,当 i为 1时进入循环,累加 1次,当 i为 3时结束循环,找到开始位置为 2。
(3)①无效上升段的条件。当条件 i下降段;当条件 d[i]件。当找到一个波峰,记录波峰的长度 ln 和起点 st,并将这些信息写入链表中,并采用插入排序对后面的
波峰进行插入排序,按波峰长度降序排序(若波峰长度相同,则按开始下标升序),遍历链表,当前节点
为 p,若需插入的波峰长度小于当前节点的长度或者长度相等,但起点 st大于当前节点,则继续向后查找。
③将插入节点链入链表中。找到插入位置后,在当前节点 q前插入,因此需将该节点的前驱指向该节点。
(4)变量 q记录了上一次插入点的前驱,由于链表是非升序的,若 mt[q][0] > ln则 mt[head][0] > ln 一定成
立,从 head到 q部分结点的遍历是不必要的,因此可以直接从 q结点的后继开始。
【解析二】
本题的原型是基础的连续子序列问题。“波峰”、“波谷”这一描述并不新颖,在历年的高考和地方联考中
经常出现,容易在考场上产生“亲切”,也降低了对题意理解的难度。
本题要求输出排序后的“波峰”数据,其算法设计为:通过对数组子序列的遍历寻找下一个波峰,并插入
到有序链表中。这两部分都是课堂里重点讲授的内容。
第(1)小题根据题意模拟,最长波峰为“14,35,31,13“,长度为 4。易错点是错把”3,40,10,10,9“作
为答案。题干中明确了组成波峰的数据是连续且不重复的,所以此处的 10 不符合要求,当然这也与第(3)
题中的代码填空相关。
第(2)小题既可以带入全局理解代码功能,也可以就该数据进行数据模拟,很容易得到答案 2,其功能
为“删除连续子序列中前导的连续重复元素“。
第(3)小题程序填空可以将代码分为两部分:子序列“波峰“查找和波峰的链表插入。在第(2)题中已经分
析了代码#A处的功能是删除前导的重复元素,循环结束后(排除 i == n)满足:
d[i – 1] < d[i]
则此时 st = i – 1则标记了当前可能的“波峰“的起始位置:i – 1。在接下来的循环中遍历了连续递增的全
部元素。即循环结束后(排除 i == n)满足:
d[i] <= d[i - 1]
在代码①处,设置条件直接进入下一次循环,即不再寻找波峰的递减部分。只有两种可能的情况:一
是元素已经遍历完,二是出现重复元素时不属于波峰。即代码①的答案为:
i == n or d[i] == d[i – 1]。
代码②处是对波峰数据的有序链表插入,波峰结点的结构为[长度, 起点, 指针]。当指针 p非空时,访
问 p所指向的结点的数据域“长度“:mt[p][0],若 mt[p][0] > ln or (mt[p][0] == ln and st > mt[p][1])则继续遍历,
其中 or后面的条件源于题干中的描述”若波峰长度相同则按开始下标升序“。又由于答案是代码②所在的逻
辑运算的一部分,用 and连接,所以必须加上括号,答案为:
(mt[p][0] > ln or (mt[p][0] == ln and st > mt[p][1]))
当然笔者认为,由于下标遍历的方向是从小到大,那么后面出现的波峰的起点一定大于已出现和记录
的波峰,在波峰长度相等时无需判断起始位置。因此答案 mt[p][0] >= ln也正确(未知是否作为评分细则,
仅供参考)。
高三技术试题卷 第 10页 共 14 页
代码③处是经典的链表插入,在②处的循环结束后,mt[p][0] < ln,则长度为 ln的新结点作为 p指针所
在结点的前驱插入,即新结点的后继为 p,q的后继为新结点。因此答案为:
mt[q][2] = len(mt) – 1
第(4)小题是尝试优化,减少插入时对插入点的查找次数。变量 q记录了上一次插入点的前驱,由于链
表是非升序的,若 mt[q][0] > ln 则 mt[head][0] > ln一定成立,从 head到 q部分结点的遍历是不必要的,因
此可以直接从 q结点的后继开始。
高三技术试题卷 第 11页 共 14 页