内容正文:
高二年级技术学科练习
考生须知:
1.本卷共13页满分100分,考试时间90分钟。
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题纸上,写在试卷上无效。
4.考试结束后,只需上交答题纸。
第一部 分信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出四个选项中只有一个是符合题目要求的,不选、错选、漏选均不得分)
1. 下列关于数据和信息的说法,正确的是( )
A. 数据就是指数字,3.14就是数据
B. 当人们在讨论圆时,3.14表示圆周率的近似值,这是信息
C. 小明用3.14计算圆的周长和面积,是智慧的体现
D. 信息具有载体依附性,所以一张报纸就是信息
【答案】B
【解析】
【详解】本题考查数据、信息、知识、智慧及信息基本特征知识。A选项错误,数据不只是指数字,文字、符号、图像等都属于数据。B选项正确,3.14赋予了圆周率近似值的含义,经过加工有了意义,属于信息。C选项错误,用3.14计算圆的周长和面积是运用知识解决问题,属于知识应用层面,并非智慧。D选项错误,报纸是信息的载体,报纸上的内容才是信息,载体本身不是信息。因此,本题选择B选项。
2. 下列关于大数据的说法,正确的是( )
A. 大数据分析的是全体数据,对数据精确性要求高
B. 大数据因其数据量庞大,可能发挥价值的仅是很小部分,所以价值相对较低
C. 大数据分析顾客购买原因进行相应的合理推荐
D. 文本数据处理的过程主要包括分词、特征提取、数据分析和结果呈现
【答案】D
【解析】
【详解】本题考查大数据相关基础知识。A选项错误,大数据分析全体数据,不追求精确性,接受混杂性。B选项错误,大数据具有价值密度低、整体价值高的特点,并非价值相对较低。C选项错误,大数据可以分析顾客购买行为做推荐,难以直接分析主观购买原因。D选项正确,文本数据处理过程主要包括分词、特征提取、数据分析和结果呈现。因此,本题选择D选项。
3. 下列关于人工智能的说法,不正确的是( )
A. 深度学习需要手工构造知识库
B. 人脸识别是基于数据驱动的人工智能方法
C. 在混合增强智能系统中,人类智能是该智能回路的总开关
D. 图灵测试是测试机器是否具有智能的一种方法
【答案】A
【解析】
【详解】本题考查人工智能的基础概念知识。深度学习是人工智能领域机器学习的分支技术,依靠大规模数据训练自动提取特征完成学习,不需要手工构造知识库,因此该说法错误;人脸识别通过大量人脸样本数据训练模型实现识别功能,是基于数据驱动的人工智能方法,说法正确;混合增强智能结合人类智能与机器智能的优势,人类智能是该智能回路的总开关,说法正确;图灵测试是测试机器是否具有智能的经典方法,说法正确。故答案为:A。
4. 下列关于信息编码的说法,正确的是( )
A. 数字图像包括矢量图形和位图图像,其中矢量图形放大后容易失真
B. 一幅未经压缩的位图图像,添加文字后存储容量会变大
C. 声音数字化的过程中,音量的变化,不会影响其存储容量
D. 计算机中的声音数据属于模拟数据
【答案】C
【解析】
【详解】本题考查信息编码相关基础知识。A选项错误,位图图像放大后容易失真,矢量图形放大不会失真。B选项错误,未经压缩的位图图像添加文字,像素总量不变,存储容量不会变大。C选项正确,声音数字化存储容量由采样频率、量化位数、声道数决定,音量变化不改变这些参数,不会影响存储容量。D选项错误,计算机中的声音数据是经过数字化后的数字数据,不是模拟数据。因此,本题选择C选项。
5. 某学校共有4幢教学楼,每幢教学楼有5层,每层都装有摄像头,若需对各幢楼、各楼层的摄像头进行统一二进制编码,需要的编码位数最少是( )
A. 4位 B. 5位 C. 8位 D. 9位
【答案】B
【解析】
【详解】本题考查二进制编码的容量计算。首先计算需要编码的摄像头总数量,学校共有4幢教学楼,每幢教学楼有5层,因此总共有4×5=20个需要单独编码的摄像头。n位二进制最多可以表示2的n次方个不同的编码,当编码位数为4时,2的4次方为16,16小于20,无法满足所有摄像头的编码需求;当编码位数为5时,2的5次方为32,32大于20,可以满足编码需求,因此最少需要的编码位数是5位,对应题目第二个选项。故答案为:B。
6. 有如下Python程序段:
list = [ "How", "are", "you!" ]
s = list[ 1 ]
d = s[ : -1 ]
执行该程序段后,d的值为( )
A. "ow" B. "Ho" C. "re" D. "ar"
【答案】D
【解析】
【详解】本题考查Python列表取值与字符串切片知识。list = [ "How", "are", "you!" ],list[ 1 ] 取出列表下标为1的元素为 "are",s[ : -1 ] 表示截取字符串从开头到倒数第1个字符之前的内容,截取后结果为 "ar"。因此,本题选择D选项。
7. 某算法的部分流程图如图所示,执行该流程时,若输入x的值为5678,下列说法正确的是
A. 执行该流程后,输出的结果是12
B. 执行该流程后,变量x的值是8
C. 输入5678和输入8765,输出结果不相同
D. 执行该流程后,"x>0?"和"m%2=1?"的执行次数相同
【答案】A
【解析】
【详解】本题考查流程图的阅读与执行分析。我们逐步模拟输入x=5678的执行过程,初始s=0:第一次判断x>0,5678>0成立,计算得到m=8,判断m是否为奇数,结果不成立,更新x为567;第二次判断x>0成立,计算得到m=7,判断是奇数,s累加得到s=7,更新x为56;第三次判断x>0成立,计算得到m=6,判断不是奇数,更新x为5;第四次判断x>0成立,计算得到m=5,判断是奇数,s累加得到s=12,更新x为0;第五次判断x>0,0不大于0,退出循环。第一个选项,输出结果是12,说法正确;第二个选项,执行后变量x的值为0,不是8,说法错误;第三个选项,输入5678和输入8765,输出的都是x中所有奇数数字的和,结果都是12,输出结果相同,说法错误;第四个选项,"x>0?"共执行了5次,"m%2=1?"共执行了4次,执行次数不同,说法错误。故答案为:A。
8. 有如下Python程序段:
a=[4, 8, 3, 6, 2, 7, 8, 1]
n=abs(a[0]-a[1])
for i in range(2,len(a)):
if abs(a[i]-a[i-1]) > n:
n=abs(a[i]-a[i-1])
执行该程序段后,变量n的值是( )
A. 5 B. 8 C. 7 D. 1
【答案】C
【解析】
【详解】本题考查Python程序的运行分析,涉及列表访问、循环结构和绝对值运算。首先初始列表a为[4, 8, 3, 6, 2, 7, 8, 1],计算得到n的初始值为abs(a[0]-a[1])=abs(4-8)=4。循环i的取值范围是2到7,依次计算每个位置i对应相邻元素的绝对差,若差大于当前n就更新n:i=2时,差为abs(3-8)=5,大于4,n更新为5;i=3时,差为abs(6-3)=3,小于5,n不变;i=4时,差为abs(2-6)=4,小于5,n不变;i=5时,差为abs(7-2)=5,不大于5,n不变;i=6时,差为abs(8-7)=1,小于5,n不变;i=7时,差为abs(1-8)=7,大于5,n更新为7。最终n的值为7,对应第三个选项。故答案为:C。
9. 下列关于队列和栈的说法不正确的是( )
A. 队列是一种先进先出的线性表,可以在队尾进行插入操作
B. 栈的特性是“先进后出,后进先出”
C. 队列和栈都具有线性特征,都可以用数组来实现
D. 某栈的入栈顺序为“abc”,出栈顺序只有3 种
【答案】D
【解析】
【详解】本题考查栈和队列的基本概念与性质。第一个说法,队列是先进先出的线性表,插入操作在队尾进行,该说法正确;第二个说法,栈的特性就是先进后出、后进先出,该说法正确;第三个说法,队列和栈都属于线性结构,都可以用数组实现,也可以用链表实现,该说法正确;第四个说法,入栈顺序为abc时,一共可以得到5种不同的出栈顺序,分别是abc、acb、bac、bca、cba,并不是只有3种,该说法错误,符合题目要求选不正确的选项。故答案为:D。
10. 数组a中有n个元素,现将一新数据k插入至下标为j(0<=j<=n-1)的位置,代码如下:
a. append(0)
i=n-1
while i >= j:
上述程序段中加框处可选的代码有:
①a[i]=k ②a[i+1]=k ③a[i+1]=a[i] ④a[i]= a[i-1] ⑤i=i-1
下列选项中,代码顺序正确的是( )
A. ③⑤① B. ③⑤② C. ④⑤② D. ④①⑤
【答案】B
【解析】
【详解】本题考查数组插入元素的后移操作。初始已执行a.append(0)增加一个空位,原有元素索引0~n-1,新空位在索引n。循环从i=n-1开始,条件i>=j(j为插入位置)。先执行③a[i+1]=a[i],将当前元素后移一位,再执行⑤i=i-1递减,循环结束后i=j-1,最后执行②a[i+1]=k,即将k放入a[j]。这样正确实现了元素后移并插入。因此,本题选择B选项。
11. 有如下Python程序段:
import random
a=[0]*6
i=0
while i < 6:
n=random. randint(1,20) #randint(a, b)随机生成一个[a, b]范围内的整数
if i%2 == 0 and n%2 == 0:
a[i]=n
i=i+1
elif i%2 == 1:
a[i]=n
i=i+1
print(a)
运行该程序后,输出结果不可能的是( )
A. [10,6, 10, 12, 15, 19] B. [12, 7, 18, 10, 14, 7]
C. [18, 13, 12, 17, 14, 11] D. [12, 5, 14, 3, 16, 20]
【答案】A
【解析】
【详解】本题考查Python程序的逻辑分析能力。程序循环给长度为6的数组a赋值,当下标i为偶数时,只有随机生成的n为偶数才能赋值给a[i]并让i递增,i为奇数时任意n都可以完成赋值。因此最终输出数组中,下标为0、2、4的位置元素一定都是偶数。第一个选项中下标为4的元素是15,属于奇数,不符合程序要求,不可能是该程序的输出结果,其余选项所有偶数下标的元素都为偶数,符合要求。故答案为:A。
12. 列表a存储了升序链表节点(节点数大于0),每个节点包含数据区域和指针区域。head指向头指针,现要删除链表中数据值在[st, ed]范围之外的所有节点。实现该功能的python部分程序段如下:
p=q=head
while p != -1:
if a[p][0] >= st and a[p][0] <= ed:
q=p
p=a[p][1]
else:
方框内应填入的代码为:
A. if head!=p:
head=a[p][1]
else:
a[q][1]= -1
p=a[p][1]
B. if a[p][0]<st:
head=a[p][1]
else:
a[p][1]= -1
p=a[p][1]
C. if a[p][0]<st:
head=a[p][1]
else:
a[q][1]= -1
p=a[p][1]
D. if a[p][0]>ed:
head=a[p][1]
else:
a[p][1]= -1
p=a[p][1]
A. A B. B C. C D. D
【答案】C
【解析】
【详解】本题考查升序链表的节点删除操作。原链表是升序链表,因此值在[st, ed]范围外的节点中,所有小于st的节点都在链表前端,所有大于ed的节点都在链表后端,符合要求的节点是连续的一段。当当前节点p不在要求范围内时:若当前节点值小于st,需要删除该节点,直接将头指针head移动到当前节点的下一个节点,即head=a[p][1];若当前节点值大于ed,说明已经遍历完所有符合要求的节点,将最后一个符合要求的节点q的指针设为-1,删除后续所有节点,处理完后都需要将p移动到下一个节点继续遍历。选项A不符合升序链表的特点,逻辑错误;选项B中,大于ed时应该修改q的指针,错误;选项D中,小于st才需要修改头指针,逻辑错误,只有选项C符合分析逻辑。故答案为:C。
二、非选择题(本大题共3小题,其中13小题7分,14小题10分,15小题9分,共26分)
13. 2026年世界乒乓球职业大联盟新加坡大满贯女子单打决赛采取七局四胜制,一方获胜四局即停止此场比赛。每局比赛采用11分制(获胜一局得1分),即当一方得分达到11分且领先对手至少2分时,该局比赛结束。为熟悉比分规则,某球迷编写程序模拟女子单打比赛过程,依次输出每局比赛比分,程序某次执行结果如图所示。请回答下列问题:
第1局:11∶9
第2局:7∶11
第3局:13∶11
第4局:10∶12
第5局:11∶5
第6局:7∶11
第7局:11∶13
胜负情况:3∶4
(1)根据比分规则,若某一局比赛的比分为10∶13,是否合理?____(单选,填字母: A.合理/B.不合理)
(2)实现上述功能的Python程序如下,请在划线处填入合适的代码。
import random
m=4
count=1
wa=wb=0
while wa < m and wb < m:
a=b=0 #表示比赛双方此局的分数
while ①____:
t= random. randint(0,1) #randint(a, b)随机生成一个[a, b]范围内的整数
a+=t #a的得分情况
②____
print("第", count, "局:", a,":",b)
if a > b:
wa += 1
else:
wb +=1
③____
print("胜负情况:",wa,":",wb)
【答案】(1)B (2) ①. a<11 and b<11 or abs(a-b)<2 或not (( a>=11 or b>=11) and abs(a-b)>=2) ②. b+=1-t ③. count+=1
【解析】
【小问1详解】
本题考查的是规则理解。根据规则:一方得分达到11分且领先至少2分时,比赛立即结束。若比分是10:13,当比分来到10:12时,已经满足“12≥11且领先2分”的结束条件,比赛会提前终止,不可能再得到第13分,因此该比分不合理,选B。
【小问2详解】
本题考查的是循环嵌套。①处:内层while循环是单局比赛的得分循环,只有不满足单局结束条件时才会继续加分,单局结束条件为(a>=11且a领先至少2分) 或 (b>=11且b领先至少2分),因此循环继续的条件就是对结束条件取反,得到对应代码,故此处应为:a<11 and b<11 or abs(a-b)<2 或not (( a>=11 or b>=11) and abs(a-b)>=2)。 ②处:random.randint(0,1)生成0或1,对应这一分a赢或b赢,已经给a加了t(t=1则a得1分,t=0则a不得分),因此b需要加1-t(t=0则b得1分,t=1则b不得分),故此处应为:b+=1-t。 ③处:每打完1局,局数计数器需要加1,为下一局输出做准备,因此对count自增1,故此处应为:count+=1。
14. 陈老师收集了某校高三年级某次模拟测试的成绩,并保存在score.xlsx中,部分如图a所示。该学校学生的准考证号的编码规则为:2位毕业年份+2位班级号+2位班内编号,例如准考证号“260112”表示2026年毕业,班级为01班,班内编号为12号。每位同学的成绩应包含语数英和7选3学科共6门学科的成绩,其中语数英学科满分为150分,7选3科目满分为100分。请回答下列问题:
(1)陈老师在数据整理过程中发现了一些问题,从图a中可发现,数据存在____问题。(多选,填字母: A.数据缺失/B.数据重复/C.数据异常/D.逻辑错误)
(2)陈老师为统计各班班级各学科成绩情况,编写Python程序,提取准考证号中的班级号,并增加一列数据列为班级,请补充完整下列代码。
import pandas as pd
import matplotlib.pyplot as plt
def bj(zkz):
bh = ①____
return '高三('+ bh +')班'
df=pd.read_excel("score.xlsx")
for i in df.index:
df.at[i, "班级"] = ②____
(3)陈老师想要找出哪些学生在本次测试中成绩有缺漏,编写如下Python程序,对数据进行分析处理,输出成绩有缺漏的学生姓名及班级。
df1=df.T #将df对象行列转置后的结果赋给df1
n=6
for i in df1.columns:
if :
print(df1.at['班级',i],df1.at['姓名',i],"成绩有遗漏!")
缺失部分代码可以为( )(单选,填字母)
A. df1[i].count() != n B. df1[i].count() != n+1
C. df1[i].count() != n+2 D. df1[i].count() != n+3
(4)陈老师修正数据后,编写如下Python程序,计算各班语文的平均分,并直观显示每个班级的语文平均分,生成了如图b所示的图表。
df2=df.groupby("班级")["语文"].mean()
plt.title("各班级语文平均分比较")
plt.show()
缺失部分代码可以为( )(单选,填字母)
A. plt.bar(df2.班级,df2.values) B. plt.bar(df2.index,df2.values)
C. plt.bar(df2.index,df2.语文) D. plt.bar(df2.班级,df2.语文)
【答案】(1)AD (2) ①. zkz[2:4]或str(zkz[2:4]) ②. bj(df.at[i, "准考证号"]) (3)D (4)B
【解析】
【小问1详解】
本题考查数据预处理中异常数据的识别。从图a中可以看到,部分学生必须有的语数英成绩存在空值,说明存在数据缺失问题,同时数据存在不符合规则的逻辑错误;图中没有重复的数据行,也没有出现超出满分范围的异常分值,因此不存在数据重复和数据异常问题。故答案为:AD。
【小问2详解】
本题考查Python字符串切片与函数调用,pandas数据处理。根据准考证编码规则,2位毕业年份后紧跟2位班级号,Python索引从0开始,因此对准考证号切片取下标2到4的字符即可得到班级号;遍历每一行时,需要调用自定义的bj函数,传入当前行的准考证号得到对应班级值。故答案为:①zkz[2:4](或str(zkz)[2:4]) ②bj(df.at[i, "准考证号"])。
【小问3详解】
本题考查Python pandas的基础统计操作。原数据已经新增了班级列,每个学生的信息包含准考证号、姓名、班级3个基础信息,加上需要填写的6门成绩,总共应该有n+3个非空值,其中n为6。数据转置后,每一列对应一个学生的所有信息,count()方法统计非空值数量,如果不相等,说明成绩有缺漏,对应第四个选项。故答案为:D。
【小问4详解】
本题考查pandas分组操作与matplotlib绘图。groupby分组后计算语文平均分得到的结果是Series对象,分组依据班级作为该Series的索引,平均分作为值存储在values中,因此绘图时横轴传入df2的index,纵轴传入df2.values,对应第二个选项。故答案为:B。
15. 某高校图书馆有多个自习室,编号为整数。学生可通过系统预约自习室,系统使用链表管理空闲自习室。初始时,所有自习室按编号升序链接,头指针head指向第一个节点。每个节点包含两个数据区域:编号和指向下一个节点的指针(用next表示)。预约时,从链表头部取出一个自习室分配(即删除头节点);归还时,将该自习室重新插入链表,并保持链表按编号升序。现编写程序模拟这一过程。请回答下列问题:
(1)若初始有6个自习室,编号依次为0, 1, 2, 3, 4, 5,按升序链接。经过以下操作序列:预约、预约、预约、归还2、预约、归还0、预约、预约、归还1。则最终链表中的节点顺序为:____。
(2)实现预约和归还模拟的部分Python程序如下,程序中下划线处有错误,请改正:
____。
(3)请在划线处填入合适的代码。
# 初始化自习室编号列表
rooms = [101, 102, 103, 104, 105]
n = len(rooms)
link = []
id_to_idx={}
for i in range(n):
if i < n-1:
link. append([rooms[i], i+1])
else:
link. append([rooms[i], -1])
for i in range(n):
id_to_idx[rooms[i]]= i
head = 0
def insert_node(link, head, node_idx):
node_id = link[node_idx][0]
if head == -1 or node_id < link[head][0]:
link[node_idx][1] = head
return node_idx
p = head
while link[p][1] != -1 and link[p][1] < node_id:
p = link[p][1]
link[node_idx][1] = link[p][1]
①____
return head
# 操作序列
ops = ['borrow', 'borrow', 'return 102', 'borrow', 'return 101', 'borrow']
for op in ops:
if op == 'borrow':
if head == -1:
print("无空闲自习室")
else:
node_idx = head
②____
print("借出", link[node_idx][0])
else:
room_id = int(op.split()[1])
node_idx = id_to_idx[room_id]
head = insert_node(link, head, node_idx)
#输出最终链表
p = head
while p != -1:
print(link[p][0], end=' ')
③____
【答案】(1)1->4->5或1、4、5或1,4,5
(2)link[p][1] != -1 and link[link[p][1]][0] < node_id
(3) ①. link[p][1] = node_idx ②. head = link[node_idx][1] 或head = link[head][1] ③. p = link[p][1]
【解析】
【详解】本题考查链表的删除节点、有序插入节点模拟。
(1)初始链表:0→1→2→3→4→5 操作依次:预约、预约、预约、归还2、预约、归还0、预约、预约、归还1
1. 预约3次:依次拿走0、1、2,剩余链表:3→4→5
2. 归还2:插入升序链表,链表:2→3→4→5
3. 预约:拿走2,剩余链表:3→4→5
4. 归还0:插入升序链表,链表:0→3→4→5
5. 预约:拿走0,剩余链表:3→4→5
6. 再预约:拿走3,剩余链表:4→5
7. 归还1:插入升序链表,链表:1→4→5 最终链表节点顺序:1,4,5。
(2)原循环条件link[p][1] != -1 and link[p][1] < node_id 错误,link[p][1]是节点下标,不是编号,应取节点编号比较,改正为link[p][1] != -1 and link[link[p][1]][0] < node_id。
(3)①处,该处完成有序插入,找到插入位置后,要把前驱节点p的后继指向新节点node_idx,保证链表不断裂,因此该空答案为link[p][1] = node_idx。②处,该处为预约操作删除头节点,需要让head指向原头节点的下一个节点,完成头节点移除,因此该空答案为head = link[node_idx][1]。③处,该处遍历输出链表,需要把p更新为当前节点的下一个节点,实现链表往后遍历,因此该空答案为p = link[p][1]。
第1页/共1页
学科网(北京)股份有限公司
$
高二年级技术学科练习
考生须知:
1.本卷共13页满分100分,考试时间90分钟。
2.答题前,在答题卷指定区域填写班级、姓名、考场号、座位号及准考证号并填涂相应数字。
3.所有答案必须写在答题纸上,写在试卷上无效。
4.考试结束后,只需上交答题纸。
第一部 分信息技术(共50分)
一、选择题(本大题共12小题,每小题2分,共24分。每小题列出四个选项中只有一个是符合题目要求的,不选、错选、漏选均不得分)
1. 下列关于数据和信息的说法,正确的是( )
A. 数据就是指数字,3.14就是数据
B. 当人们在讨论圆时,3.14表示圆周率的近似值,这是信息
C. 小明用3.14计算圆的周长和面积,是智慧的体现
D. 信息具有载体依附性,所以一张报纸就是信息
2. 下列关于大数据的说法,正确的是( )
A. 大数据分析的是全体数据,对数据精确性要求高
B. 大数据因其数据量庞大,可能发挥价值的仅是很小部分,所以价值相对较低
C. 大数据分析顾客购买原因进行相应的合理推荐
D. 文本数据处理的过程主要包括分词、特征提取、数据分析和结果呈现
3. 下列关于人工智能的说法,不正确的是( )
A. 深度学习需要手工构造知识库
B. 人脸识别是基于数据驱动的人工智能方法
C. 在混合增强智能系统中,人类智能是该智能回路的总开关
D. 图灵测试是测试机器是否具有智能的一种方法
4. 下列关于信息编码的说法,正确的是( )
A. 数字图像包括矢量图形和位图图像,其中矢量图形放大后容易失真
B. 一幅未经压缩的位图图像,添加文字后存储容量会变大
C. 声音数字化的过程中,音量的变化,不会影响其存储容量
D. 计算机中的声音数据属于模拟数据
5. 某学校共有4幢教学楼,每幢教学楼有5层,每层都装有摄像头,若需对各幢楼、各楼层的摄像头进行统一二进制编码,需要的编码位数最少是( )
A. 4位 B. 5位 C. 8位 D. 9位
6. 有如下Python程序段:
list = [ "How", "are", "you!" ]
s = list[ 1 ]
d = s[ : -1 ]
执行该程序段后,d的值为( )
A. "ow" B. "Ho" C. "re" D. "ar"
7. 某算法的部分流程图如图所示,执行该流程时,若输入x的值为5678,下列说法正确的是
A. 执行该流程后,输出的结果是12
B. 执行该流程后,变量x的值是8
C. 输入5678和输入8765,输出结果不相同
D. 执行该流程后,"x>0?"和"m%2=1?"的执行次数相同
8. 有如下Python程序段:
a=[4, 8, 3, 6, 2, 7, 8, 1]
n=abs(a[0]-a[1])
for i in range(2,len(a)):
if abs(a[i]-a[i-1]) > n:
n=abs(a[i]-a[i-1])
执行该程序段后,变量n的值是( )
A. 5 B. 8 C. 7 D. 1
9. 下列关于队列和栈的说法不正确的是( )
A. 队列是一种先进先出的线性表,可以在队尾进行插入操作
B. 栈的特性是“先进后出,后进先出”
C. 队列和栈都具有线性特征,都可以用数组来实现
D. 某栈的入栈顺序为“abc”,出栈顺序只有3 种
10. 数组a中有n个元素,现将一新数据k插入至下标为j(0<=j<=n-1)的位置,代码如下:
a. append(0)
i=n-1
while i >= j:
上述程序段中加框处可选的代码有:
①a[i]=k ②a[i+1]=k ③a[i+1]=a[i] ④a[i]= a[i-1] ⑤i=i-1
下列选项中,代码顺序正确的是( )
A. ③⑤① B. ③⑤② C. ④⑤② D. ④①⑤
11. 有如下Python程序段:
import random
a=[0]*6
i=0
while i < 6:
n=random. randint(1,20) #randint(a, b)随机生成一个[a, b]范围内的整数
if i%2 == 0 and n%2 == 0:
a[i]=n
i=i+1
elif i%2 == 1:
a[i]=n
i=i+1
print(a)
运行该程序后,输出结果不可能的是( )
A. [10,6, 10, 12, 15, 19] B. [12, 7, 18, 10, 14, 7]
C. [18, 13, 12, 17, 14, 11] D. [12, 5, 14, 3, 16, 20]
12. 列表a存储了升序链表节点(节点数大于0),每个节点包含数据区域和指针区域。head指向头指针,现要删除链表中数据值在[st, ed]范围之外的所有节点。实现该功能的python部分程序段如下:
p=q=head
while p != -1:
if a[p][0] >= st and a[p][0] <= ed:
q=p
p=a[p][1]
else:
方框内应填入的代码为:
A. if head!=p:
head=a[p][1]
else:
a[q][1]= -1
p=a[p][1]
B. if a[p][0]<st:
head=a[p][1]
else:
a[p][1]= -1
p=a[p][1]
C. if a[p][0]<st:
head=a[p][1]
else:
a[q][1]= -1
p=a[p][1]
D. if a[p][0]>ed:
head=a[p][1]
else:
a[p][1]= -1
p=a[p][1]
A. A B. B C. C D. D
二、非选择题(本大题共3小题,其中13小题7分,14小题10分,15小题9分,共26分)
13. 2026年世界乒乓球职业大联盟新加坡大满贯女子单打决赛采取七局四胜制,一方获胜四局即停止此场比赛。每局比赛采用11分制(获胜一局得1分),即当一方得分达到11分且领先对手至少2分时,该局比赛结束。为熟悉比分规则,某球迷编写程序模拟女子单打比赛过程,依次输出每局比赛比分,程序某次执行结果如图所示。请回答下列问题:
第1局:11∶9
第2局:7∶11
第3局:13∶11
第4局:10∶12
第5局:11∶5
第6局:7∶11
第7局:11∶13
胜负情况:3∶4
(1)根据比分规则,若某一局比赛的比分为10∶13,是否合理?____(单选,填字母: A.合理/B.不合理)
(2)实现上述功能的Python程序如下,请在划线处填入合适的代码。
import random
m=4
count=1
wa=wb=0
while wa < m and wb < m:
a=b=0 #表示比赛双方此局的分数
while ①____:
t= random. randint(0,1) #randint(a, b)随机生成一个[a, b]范围内的整数
a+=t #a的得分情况
②____
print("第", count, "局:", a,":",b)
if a > b:
wa += 1
else:
wb +=1
③____
print("胜负情况:",wa,":",wb)
14. 陈老师收集了某校高三年级某次模拟测试的成绩,并保存在score.xlsx中,部分如图a所示。该学校学生的准考证号的编码规则为:2位毕业年份+2位班级号+2位班内编号,例如准考证号“260112”表示2026年毕业,班级为01班,班内编号为12号。每位同学的成绩应包含语数英和7选3学科共6门学科的成绩,其中语数英学科满分为150分,7选3科目满分为100分。请回答下列问题:
(1)陈老师在数据整理过程中发现了一些问题,从图a中可发现,数据存在____问题。(多选,填字母: A.数据缺失/B.数据重复/C.数据异常/D.逻辑错误)
(2)陈老师为统计各班班级各学科成绩情况,编写Python程序,提取准考证号中的班级号,并增加一列数据列为班级,请补充完整下列代码。
import pandas as pd
import matplotlib.pyplot as plt
def bj(zkz):
bh = ①____
return '高三('+ bh +')班'
df=pd.read_excel("score.xlsx")
for i in df.index:
df.at[i, "班级"] = ②____
(3)陈老师想要找出哪些学生在本次测试中成绩有缺漏,编写如下Python程序,对数据进行分析处理,输出成绩有缺漏的学生姓名及班级。
df1=df.T #将df对象行列转置后的结果赋给df1
n=6
for i in df1.columns:
if :
print(df1.at['班级',i],df1.at['姓名',i],"成绩有遗漏!")
缺失部分代码可以为( )(单选,填字母)
A. df1[i].count() != n B. df1[i].count() != n+1
C. df1[i].count() != n+2 D. df1[i].count() != n+3
(4)陈老师修正数据后,编写如下Python程序,计算各班语文的平均分,并直观显示每个班级的语文平均分,生成了如图b所示的图表。
df2=df.groupby("班级")["语文"].mean()
plt.title("各班级语文平均分比较")
plt.show()
缺失部分代码可以为( )(单选,填字母)
A. plt.bar(df2.班级,df2.values) B. plt.bar(df2.index,df2.values)
C. plt.bar(df2.index,df2.语文) D. plt.bar(df2.班级,df2.语文)
15. 某高校图书馆有多个自习室,编号为整数。学生可通过系统预约自习室,系统使用链表管理空闲自习室。初始时,所有自习室按编号升序链接,头指针head指向第一个节点。每个节点包含两个数据区域:编号和指向下一个节点的指针(用next表示)。预约时,从链表头部取出一个自习室分配(即删除头节点);归还时,将该自习室重新插入链表,并保持链表按编号升序。现编写程序模拟这一过程。请回答下列问题:
(1)若初始有6个自习室,编号依次为0, 1, 2, 3, 4, 5,按升序链接。经过以下操作序列:预约、预约、预约、归还2、预约、归还0、预约、预约、归还1。则最终链表中的节点顺序为:____。
(2)实现预约和归还模拟的部分Python程序如下,程序中下划线处有错误,请改正:
____。
(3)请在划线处填入合适的代码。
# 初始化自习室编号列表
rooms = [101, 102, 103, 104, 105]
n = len(rooms)
link = []
id_to_idx={}
for i in range(n):
if i < n-1:
link. append([rooms[i], i+1])
else:
link. append([rooms[i], -1])
for i in range(n):
id_to_idx[rooms[i]]= i
head = 0
def insert_node(link, head, node_idx):
node_id = link[node_idx][0]
if head == -1 or node_id < link[head][0]:
link[node_idx][1] = head
return node_idx
p = head
while link[p][1] != -1 and link[p][1] < node_id:
p = link[p][1]
link[node_idx][1] = link[p][1]
①____
return head
# 操作序列
ops = ['borrow', 'borrow', 'return 102', 'borrow', 'return 101', 'borrow']
for op in ops:
if op == 'borrow':
if head == -1:
print("无空闲自习室")
else:
node_idx = head
②____
print("借出", link[node_idx][0])
else:
room_id = int(op.split()[1])
node_idx = id_to_idx[room_id]
head = insert_node(link, head, node_idx)
#输出最终链表
p = head
while p != -1:
print(link[p][0], end=' ')
③____
第1页/共1页
学科网(北京)股份有限公司
$