内容正文:
2025-2026 学年第一学期期末考试试卷
高二技术
第一部分 信息技术(共50分)
一、选择题(本大题共 12 小题,每小题 2 分,共 24 分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 某次素养比赛后,小李整理部分考生的成绩,整理后的成绩表如下所示。
学号
姓名
客观题得分
主观题得分
等级
240101
张三
42
28
A
240102
李四
35
25
B
240103
王五
38
22
B
240104
赵六
29
18
C
下列有关数据分类及表现形式的说法,正确的是( )
A. 表中的所有数字都具有量的意义、可以进行算术运算
B. 数值本身没有意义、没有量含义
C. 数据的表现形式多样,表中数据涵盖了所有的表现形式
D. 表中“客观题得分”如42和35,是对考生客观题答题情况的符号表示
【答案】D
【解析】
【详解】本题考查数据分类及表现形式相关知识。A选项错误,表中的“学号”(如240101)是标识类数据,不具有量的意义,无法进行算术运算;B选项错误,“客观题得分”“主观题得分”等数值具有明确的量的含义,可用于算术运算;C选项错误,数据的表现形式多样,表中数据仅包含文本、数字等部分形式,并未涵盖所有表现形式;D选项正确,表中“客观题得分”的42、35等数值,是对考生客观题答题情况的符号化表示,用于量化描述其答题表现。因此,本题选择D选项。
2. 某次素养比赛后,小李整理部分考生的成绩,整理后的成绩表如下所示。
学号
姓名
客观题得分
主观题得分
等级
240101
张三
42
28
A
240102
李四
35
25
B
240103
王五
38
22
B
240104
赵六
29
18
C
下列有关数据项、数据元素和数据结构的说法不正确的是( )
A. 表中每一行对应一个数据元素,每个数据元素用于描述一名考生的成绩信息
B. 表中“学号”、“客观题得分”等列标题均为数据项名称,对应的具体内容为数据项的值
C. 该成绩表存储时可以用二维列表,但不能用一维列表
D. 表中每个数据元素包含5个数据项
【答案】C
【解析】
【详解】本题考查数据项、数据元素和数据结构相关知识。A选项正确,表中每一行对应一个数据元素,用于描述一名考生的成绩信息;B选项正确,“学号”“客观题得分”等列标题为数据项名称,对应的具体内容为数据项的值;C选项错误,该成绩表既可以用二维列表存储,也可以用一维列表存储(如将每个考生的信息封装为一个子列表,整体作为一维列表的元素),并非不能用一维列表;D选项正确,表中每个数据元素包含学号、姓名、客观题得分、主观题得分、等级共5个数据项。因此,本题选择C选项。
3. 下列有关数据结构的说法正确的是( )
A. 数组是一种适合用于组织、存储涉及频繁插入与删除的数据结构
B. 链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的
C. 链表在访问、插入和删除元素时,算法效率比数组高
D. 树结构中,每个子节点的父节点可以有多个
【答案】B
【解析】
【详解】本题考查数据结构。A选项错误。数组在涉及频繁插入与删除时,由于元素在数组中的位置是固定的,插入和删除可能涉及移动大量元素,效率较低。B选项正确。链表中的元素通过指针链接,每个元素保存下一个元素的地址,从而形成逻辑上的顺序。C选项错误。链表在插入和删除元素时确实具有较高的灵活性和效率,但在访问元素时,由于需要遍历链表,效率相对较低,特别是对于随机访问。D选项错误。在一棵树中,每个子节点只有一个父节点,这是树结构的基本特性。故答案为:B。
4. 某算法的部分流程图如图所示,输入下列数据,输出值与其它三项不同的是( )
A. 8 B. 12 C. 36 D. 42
【答案】C
【解析】
【详解】本题考查算法流程图的理解。根据流程图,该算法通过不断除以最小质因子并计数,最终得到质因数的总个数(含重复)。计算各选项:8=2³,输出3;12=2²×3,输出3;36=2²×3²,输出4;42=2×3×7,输出3。因此输出值与其他三项不同的是C。
5. 元素甲,乙,丙,丁,戊依次入栈,最先出栈的元素是丙,则最后出栈的元素不可能的是( )
A 甲 B. 乙 C. 丁 D. 戊
【答案】B
【解析】
【详解】本题考查栈"先进后出"的操作特性。元素甲乙丙丁戊依次入栈,且第一个出栈的元素是丙,说明丙出栈前,甲、乙已经先后入栈且未出栈,栈内从栈底到栈顶为甲、乙,甲始终位于乙下方,根据栈先进后出的特点,出栈时乙一定比甲先出栈,因此乙不可能是最后出栈的元素。验证其余选项:最后出栈为甲:可按入甲→入乙→入丙→出丙→入丁→出丁→入戊→出戊→出乙→出甲的顺序操作,符合要求;最后出栈为丁:可按入甲→入乙→入丙→出丙→出乙→出甲→入丁→入戊→出戊→出丁操作,符合要求;最后出栈为戊:可按入甲→入乙→入丙→出丙→出乙→出甲→入丁→出丁→入戊→出戊操作,符合要求。因此只有乙不可能。故答案为:B。
6. 某队列中,队首到队尾的元素依次为B,D,C,E,A,元素出队后直接输出或重新入队。若最终输出次序为A,B,C,D,E。则重新入队的最少次数为( )
A. 3 B. 4 C. 5 D. 6
【答案】D
【解析】
【详解】本题考查的是队列操作。初始队列为B,D,C,E,A(队首到队尾),目标输出顺序为A,B,C,D,E。需通过出队后直接输出或重新入队实现,并统计最少重新入队次数。1. 输出A:必须出队B,D,C,E并重新入队。2. 输出B,直接输出。3. 输出C: 出队D并重新入队。4. 输出D: 出队E并重新入队。5. 输出E:直接输出。 综上,重新入队至少6次,故答案为D。
7. 某二叉树用一维数组表示如下表所示:
下标
0
1
2
3
4
5
6
7
8
9
10
元素
A
B
C
D
E
F
G
则该二叉树的中序遍历结果为( )
A. BFDGAEC B. BDFGAEC C. BFGEADC D. BFGDACE
【答案】A
【解析】
【详解】本题考查二叉树的遍历。根据表格可画出二叉树如下,
该二叉树的中序遍历结果为BFDGAEC。故选A。
8. 有如下Python程序代码:
n=int(input("请输入n:"))
s,i=0,1
while i<=n:
s=s+i
i*=2
print("s=",s)
下列说法正确的是( )
A. 该程序算法时间复杂度为O(log2n) B. 若输入n的值为8,则输出的结果为21
C. 交换语句s=s+i与i*=2的位置,输出s的值将不变 D. 该算法的功能是求1+2+4+6+8+…+2*n的和
【答案】A
【解析】
【详解】本题考查算法效率。A选项正确, 在循环中,i的初始值为1,每次循环都乘以2,那么i的值依次为1,2,4,8,⋯,当i>n时循环结束。假设循环执行了k次,则2k>n,即k>log2n。所以循环执行的次数与log2n成正比,时间复杂度为O(log2n),该选项正确。B选项错误:当n=8时,循环执行过程如下:第一次循环:i=1,s=0+1=1,i=1×2=2。 第二次循环:s=1+2=3,i=2×2=4。第三次循环:s=3+4=7,i=4×2=8。 第四次循环:s=7+8=15,i=8×2=16,此时i>n,循环结束。所以输出结果为15,而不是21。C选项错误:如果交换这两条语句的位置,那么循环执行过程会发生变化,s的值也会发生改变。D选项错误:循环中i的值依次为1,2,4,8,⋯,是2的幂次方序列,而不是2,4,6,8,⋯这样的偶数序列,所以该算法的功能不是求1+2+4+6+8+⋯+2∗n的和。 综上所述,正确答案是选项A。
9. 有如下Python程序段:
s="RGGBRRGBB"
r=s[0]
for i in range(1,len(s)):
if len(r) == 0 or s[i] != r[-1]:
r=r+s[i]
else:
r=r[:len(r)-1]
print(r)
执行该程序段后,输出结果是( )
A. RBB B. RGB C. GRB D. RBG
【答案】D
【解析】
【详解】本题考查的是字符串处理。初始:r = "R"(s[0])。
i=1,s[1]='G':r 不为空,且 'G' != 'R'(r[-1] 为 'R'),因此 r = "R" + "G" = "RG"。
i=2,s[2]='G':r 不为空,且 'G' == 'G'(r[-1] 为 'G'),因此移除 r 的最后一个字符,r = "R"。
i=3,s[3]='B':r 不为空,且 'B' != 'R'(r[-1] 为 'R'),因此 r = "R" + "B" = "RB"。
i=4,s[4]='R':r 不为空,且 'R' != 'B'(r[-1] 为 'B'),因此 r = "RB" + "R" = "RBR"。
i=5,s[5]='R':r 不为空,且 'R' == 'R'(r[-1] 为 'R'),因此移除 r 的最后一个字符,r = "RB"。
i=6,s[6]='G':r 不为空,且 'G' != 'B'(r[-1] 为 'B'),因此 r = "RB" + "G" = "RBG"。
i=7,s[7]='B':r 不为空,且 'B' != 'G'(r[-1] 为 'G'),因此 r = "RBG" + "B" = "RBGB"。
i=8,s[8]='B':r 不为空,且 'B' == 'B'(r[-1] 为 'B'),因此移除 r 的最后一个字符,r = "RBG"。
故选D。
10. 有如下 Python 程序段:
def gcd(a, b):
if a == b:
return a
elif a > b:
return gcd(a - b, b)
else:
return gcd(a, b - a)
num1, num2 = 30, 36
result = gcd(num1, num2)
print(result)
执行该程序段后,下列说法正确的是( )
A. result的值是6
B. 该算法使用了迭代算法
C. 将num2的值修改为120,函数的返回结果不变
D. 当执行语句 gcd(num1, num2)时,函数gcd被调用的次数为 4
【答案】A
【解析】
【详解】本题考查Python递归函数及最大公约数计算。A选项正确,通过递归计算gcd(30,36)的过程:首先30<36调用gcd(30,6),然后30>6依次调用gcd(24,6)、gcd(18,6)、gcd(12,6)、gcd(6,6)返回6,因此result值为6。B选项错误,该函数通过自身调用实现,属于递归算法而非迭代。C选项错误,将num2修改为120后,gcd(30,120)计算过程为30<120调用gcd(30,90)、30<90调用gcd(30,60)、30<60调用gcd(30,30)返回30,结果变为30,与原结果不同。D选项错误,执行gcd(30,36)时,函数被调用的次数包括初始调用共6次(依次为gcd(30,36)、gcd(30,6)、gcd(24,6)、gcd(18,6)、gcd(12,6)、gcd(6,6)),而非4次。因此,本题选择A选项。
11. 有如下Python程序:
n=0
a=[5,11,18,23,27,33,34,41,45,69]
key=int(input("请输入要查找的数:"))
i=0;j=len(a)-1
while i<=j:
m=(i+j)//2
n+=1
if a[m]==key:
break
elif a[m] < key:
i=m+1
else:
j=m-1
程序运行后变量n的值为3,则输入的key不可能是( )
A. 4 B. 18 C. 33 D. 49
【答案】D
【解析】
【详解】本题考查二分查找算法及比较次数的计算。给定列表a=[5,11,18,23,27,33,34,41,45,69],通过模拟二分查找过程,分析各选项对应的比较次数n:key=4时,经过三次比较后区间为空,n=3;key=18时,第三次比较找到目标,n=3;key=33时,第三次比较找到目标,n=3;key=49时,需要四次比较才能确定不存在,n=4。因此,n=3时输入的key不可能是49。故本题答案为D。
12. 使用列表a和列表b分别存储学生的总分和考号,已知考号为b[i]的学生的总分为a[i],使用Python编程实现如下功能:将成绩数据“按总分降序排序、总分相同按学号升序排序”,代码如下。
n=len(a)
for i in range(1,n):
for j in range(0,n-i):
if (1) or (2) and (3) :
a[j],a[j+1]=a[j+1],a[j]
b[j],b[j+1]=b[j+1],b[j]
上述程序段中方框处可选代码:
①a[j]>a[j+1] ②a[j]==a[j+1] ③a[j] < a[j+1] ④b[j] < b[j+1] ⑤b[j]==b[j+1] ⑥b[j]>b[j+1]
则(1)(2)(3)处代码依次为( )
A. ③②④ B. ①⑤⑥ C. ③②⑥ D. ①⑤④
【答案】C
【解析】
【详解】本题考查的是冒泡排序。将成绩数据“按总分降序排序、总分相同按学号升序排序”,而填空处所需填入的条件为需要交换的情况。因此可知,第一种情况,j号位的总分小于j+1号位,此时需要交换,转换为Python表达式为a[j]<a[j+1];第二种情况,j号位的总分和j+1号位的总分相同,此时若是j号位的学号大于j+1号位,则需要交换,转换为Python表达式为a[j]==a[j+1] and b[j]>b[j+1]。整合后为a[j]<a[j+1] or a[j]==a[j+1] and b[j]>b[j+1],故答案为C。
二、非选择题(本大题共3小题,其中第13题8分,第14题9分,第15题9分,共26分)
13. 一个十进制正整数,如果它能被5整除,或者它的某一位上的数字为5,则称其为与5相关的数。现求所有小于等于n的与5无关的正整数的平方和。
(1)实现上述功能的部分Python 程序如下,请在划线处填入合适的代码。
(2)程序中加框处代码有错,请改正。____
n=int(input())
①_____
for i in range(n+1):
flag=False
if i%5==0:
flag=True
m=i
while :
if②____ :
flag=True
m//=10
if flag==False:
print(i)
sum=③_____
print(sum)
【答案】 ①. not flag and m>0 ②. sum=0 ③. m%10==5 ④. sum+i*i
【解析】
【详解】本题考查Python循环逻辑、条件判断及数字特征分析的综合应用,核心考点包括整除判断、数字逐位遍历、标志位使用及平方和累加计算。
(1)①处:需要初始化存储平方和的变量,后续用于累加符合条件的数的平方,因此代码为sum=0。②处:需要判断数字m的个位是否为5,逐位遍历数字的每一位,因此代码为m%10==5。③处:若数字i是与5无关的数,需将其平方累加到sum中,因此代码为sum+i*i。
(2)原代码的错误在于,当m被逐位整除至0时,循环仍会继续执行,导致逻辑错误。正确的循环条件应同时满足“标志位为False”和“数字m大于0”,即需要遍历数字的每一位直到结束,因此改正后的代码为not flag and m>0。
14. 某项体育比赛采取五局三胜制,一方获胜三局即停止此场比赛。每局比赛采用21分制,即当一方得分达到21分且领先对手至少2分时,该局比赛结束。为熟悉比分规则,某球迷编写程序模拟比赛过程,依次输出每局比赛比分,程序某次执行结果如图所示。
(1)根据比分规则,若一局比赛的比分为20:23,是否合理?___(选填:合理/不合理)
(2)实现上述功能的Python程序如下,请在划线处填入合适的代码。
import random
# 五局三胜制,先赢3局即终止比赛,因此循环条件为双方获胜局数均小于3
count = 1
wa = wb = 0
while①___:
a = b = 0 # 表示比赛双方此局的分数
# 每局21分制:得分未到21分 或 分差不足2分,继续该局比赛
while a < 21 and b < 21 or abs(a - b) < 2:
t = random.randint(0, 1) #产生随机得分0或1(0表示b得分,1表示a得分)
a += t
②___
print("第", count, "局:", a, ":", b)
if a > b:
③____
else:
wb += 1
④_____
print("胜负情况:", wa, ":", wb)
【答案】 ①. 合理 ②. wa<3 and wb<3 ③. b+=1-t ④. wa+=1 ⑤. count+=1
【解析】
【详解】(1)根据比分规则,一局比赛必须至少有一方得分达到21分且领先2分,20:23中一方得23分,另一方20分,分差为3,且23>21,因此符合规则,是合理的。所以答案是合理。
(2)①外层循环条件:比赛采用五局三胜制,即先赢得三局的一方获胜,比赛结束。因此,只要双方获胜局数都小于3,比赛就继续进行。所以循环条件为 wa<3 and wb<3。②内层循环中,每局比赛通过随机数t模拟得分,t为1表示a得分,t为0表示b得分。a的得分通过 a+=t 增加,相应地b的得分应增加与t相反的值,即当t=1时b不加,t=0时b加1,因此用 b+=1-t 实现。③当一局比赛结束,比较a和b,若a > b,则a赢得该局,因此a的胜场数wa增加1,即 wa+=1。 ④每局结束后,局数计数器count需要增加1,以便下一局输出正确的局数,故填写 count+=1。
15. 小松鼠喜欢收集各类坚果,它在森林里摘了n堆果子,决定把所有果子合成一堆后运回树洞。每次可以把任意两堆果子合并到一起,消耗的体力等于这两堆果子的数量之和。n堆果子经过n-1次合并后,最终变成一大堆。小松鼠合并果子时消耗的总体力等于每次合并所耗体力之和。请设计合并的次序方案,使小松鼠耗费的体力最少,并输出这个最小的体力耗费值。 例如有4堆果子,数量依次为1,4,2,5。可以先将数量为1、2的两堆合并,新堆数量为 3,耗费体力3;合并后4堆变3堆,数目为3,4,5;接着合并3、4的两堆,耗费体力7;最后合并5、7的两堆,耗费体力12,总体力为3+7+12=22。
(1)现有5堆果子,它们的数量依次为“2,7,6,12,10”,则合并为一堆的最小体力消耗值为______。
(2)定义如下sortdata(data),参数data存储了每堆果子的重量。函数的功能是对data中元素进行升序排序
def sortdata(data):
n = len(data)
i=0
flag=True
while i<n and flag:
return data
若data的数据为[3,1,2,7,6,5],则调用该函数时,加框部分代码执行的次数为____。
(3)实现合并果子的函数如下,请在程序划线处填入合适的代码
def merge_min(lst):
data = ①____
n=len(data)
link=[-1]*n
for i in range(n-1):
link[i]=i+1
total = 0
head=0
while link[head]!=-1:
data[head]+=data[link[head]]
total+=data[head]
link[head]=link[link[head]]#删除第二个节点
p,temp=link[head],link[head]
q=p
while②____ :
q=p
p=link[p]
if link[head]!=p:
link[q]=head
link[head]=p
③____
return total
data = [1, 4, 2, 5]
min1 = merge_min(data)
print("最小体力:",min1)
【答案】 ① 82 ②. 12 ③. sorted(lst) ④. p != -1 and data[p] < data[head] ⑤. head = 0
【解析】
【详解】本题考查哈夫曼算法的应用、冒泡排序的执行过程分析、Python基于链表实现合并果子的代码补全能力。
(1) 计算最小体力消耗合并果子的最小体力消耗使用哈夫曼算法求解,每次选择最小的两堆合并,过程如下:原始数据排序为[2,6,7,10,12]:合并2和6得到新堆8,消耗体力8,剩余堆:[7,8,10,12],总消耗:8;合并7和8得到新堆15,消耗体力15,剩余堆:[10,12,15],总消耗:8+15=23;合并10和12得到新堆22,消耗体力22,剩余堆:[15,22],总消耗:23+22=45;合并15和22得到新堆37,消耗体力37,总消耗:45+37=82 。
(2)计算冒泡排序代码执行次数该排序是带提前退出优化的冒泡排序,flag标记本轮是否发生交换,无交换则终止排序,输入data = [3,1,2,7,6,5]长度为6,过程:i=0,flag=True进入循环,共执行5次循环体,发生交换,i变为1;i=1,flag=True进入循环,共执行4次循环体,发生交换,i变为2;i=2,flag=True进入循环,共执行3次循环体,无交换,flag保持为False,i变为3;循环因flag=False终止,总执行次数为5+4+3=12。
(3)①:算法需要先对输入的果子数量做升序排序,才能进行后续合并操作,因此填入排序结果:sorted(lst)。 ②:合并前两个节点得到新值后,需要在链表中向后查找,找到第一个大于新值的节点作为插入位置的终点,循环条件为当未到链表尾,且当前节点值小于新的节点值时继续向后找,因此填入:p != -1 and data[p] < data[head]。③:每次合并插入完成后,下一轮合并需要从链表头重新开始处理,因此重置链表头指针,因此填入:head = 0。
第1页/共1页
学科网(北京)股份有限公司
$
2025-2026 学年第一学期期末考试试卷
高二技术
第一部分 信息技术(共50分)
一、选择题(本大题共 12 小题,每小题 2 分,共 24 分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)
1. 某次素养比赛后,小李整理部分考生的成绩,整理后的成绩表如下所示。
学号
姓名
客观题得分
主观题得分
等级
240101
张三
42
28
A
240102
李四
35
25
B
240103
王五
38
22
B
240104
赵六
29
18
C
下列有关数据分类及表现形式的说法,正确的是( )
A. 表中的所有数字都具有量的意义、可以进行算术运算
B. 数值本身没有意义、没有量的含义
C. 数据的表现形式多样,表中数据涵盖了所有的表现形式
D. 表中“客观题得分”如42和35,是对考生客观题答题情况的符号表示
2. 某次素养比赛后,小李整理部分考生的成绩,整理后的成绩表如下所示。
学号
姓名
客观题得分
主观题得分
等级
240101
张三
42
28
A
240102
李四
35
25
B
240103
王五
38
22
B
240104
赵六
29
18
C
下列有关数据项、数据元素和数据结构说法不正确的是( )
A. 表中每一行对应一个数据元素,每个数据元素用于描述一名考生的成绩信息
B. 表中“学号”、“客观题得分”等列标题均为数据项名称,对应的具体内容为数据项的值
C. 该成绩表存储时可以用二维列表,但不能用一维列表
D. 表中每个数据元素包含5个数据项
3. 下列有关数据结构的说法正确的是( )
A. 数组是一种适合用于组织、存储涉及频繁插入与删除的数据结构
B. 链表中数据元素的逻辑顺序是通过链表中的指针链接次序实现的
C. 链表在访问、插入和删除元素时,算法效率比数组高
D. 树结构中,每个子节点的父节点可以有多个
4. 某算法的部分流程图如图所示,输入下列数据,输出值与其它三项不同的是( )
A. 8 B. 12 C. 36 D. 42
5. 元素甲,乙,丙,丁,戊依次入栈,最先出栈的元素是丙,则最后出栈的元素不可能的是( )
A. 甲 B. 乙 C. 丁 D. 戊
6. 某队列中,队首到队尾的元素依次为B,D,C,E,A,元素出队后直接输出或重新入队。若最终输出次序为A,B,C,D,E。则重新入队的最少次数为( )
A. 3 B. 4 C. 5 D. 6
7. 某二叉树用一维数组表示如下表所示:
下标
0
1
2
3
4
5
6
7
8
9
10
元素
A
B
C
D
E
F
G
则该二叉树的中序遍历结果为( )
A. BFDGAEC B. BDFGAEC C. BFGEADC D. BFGDACE
8. 有如下Python程序代码:
n=int(input("请输入n:"))
s,i=0,1
while i<=n:
s=s+i
i*=2
print("s=",s)
下列说法正确的是( )
A. 该程序算法的时间复杂度为O(log2n) B. 若输入n的值为8,则输出的结果为21
C. 交换语句s=s+i与i*=2位置,输出s的值将不变 D. 该算法的功能是求1+2+4+6+8+…+2*n的和
9 有如下Python程序段:
s="RGGBRRGBB"
r=s[0]
for i in range(1,len(s)):
if len(r) == 0 or s[i] != r[-1]:
r=r+s[i]
else:
r=r[:len(r)-1]
print(r)
执行该程序段后,输出结果是( )
A. RBB B. RGB C. GRB D. RBG
10. 有如下 Python 程序段:
def gcd(a, b):
if a == b:
return a
elif a > b:
return gcd(a - b, b)
else:
return gcd(a, b - a)
num1 num2 = 30, 36
result = gcd(num1 num2)
print(result)
执行该程序段后,下列说法正确的是( )
A. result的值是6
B. 该算法使用了迭代算法
C. 将num2的值修改为120,函数的返回结果不变
D. 当执行语句 gcd(num1, num2)时,函数gcd被调用的次数为 4
11. 有如下Python程序:
n=0
a=[5,11,18,23,27,33,34,41,45,69]
key=int(input("请输入要查找的数:"))
i=0;j=len(a)-1
while i<=j:
m=(i+j)//2
n+=1
if a[m]==key:
break
elif a[m] < key:
i=m+1
else:
j=m-1
程序运行后变量n的值为3,则输入的key不可能是( )
A. 4 B. 18 C. 33 D. 49
12. 使用列表a和列表b分别存储学生的总分和考号,已知考号为b[i]的学生的总分为a[i],使用Python编程实现如下功能:将成绩数据“按总分降序排序、总分相同按学号升序排序”,代码如下。
n=len(a)
for i in range(1,n):
for j in range(0,n-i):
if (1) or (2) and (3) :
a[j],a[j+1]=a[j+1],a[j]
b[j],b[j+1]=b[j+1],b[j]
上述程序段中方框处可选代码为:
①a[j]>a[j+1] ②a[j]==a[j+1] ③a[j] < a[j+1] ④b[j] < b[j+1] ⑤b[j]==b[j+1] ⑥b[j]>b[j+1]
则(1)(2)(3)处代码依次为( )
A. ③②④ B. ①⑤⑥ C. ③②⑥ D. ①⑤④
二、非选择题(本大题共3小题,其中第13题8分,第14题9分,第15题9分,共26分)
13. 一个十进制正整数,如果它能被5整除,或者它的某一位上的数字为5,则称其为与5相关的数。现求所有小于等于n的与5无关的正整数的平方和。
(1)实现上述功能的部分Python 程序如下,请在划线处填入合适的代码。
(2)程序中加框处代码有错,请改正。____
n=int(input())
①_____
for i in range(n+1):
flag=False
if i%5==0:
flag=True
m=i
while :
if②____ :
flag=True
m//=10
if flag==False:
print(i)
sum=③_____
print(sum)
14. 某项体育比赛采取五局三胜制,一方获胜三局即停止此场比赛。每局比赛采用21分制,即当一方得分达到21分且领先对手至少2分时,该局比赛结束。为熟悉比分规则,某球迷编写程序模拟比赛过程,依次输出每局比赛比分,程序某次执行结果如图所示。
(1)根据比分规则,若一局比赛的比分为20:23,是否合理?___(选填:合理/不合理)
(2)实现上述功能的Python程序如下,请在划线处填入合适的代码。
import random
# 五局三胜制,先赢3局即终止比赛,因此循环条件为双方获胜局数均小于3
count = 1
wa = wb = 0
while①___:
a = b = 0 # 表示比赛双方此局的分数
# 每局21分制:得分未到21分 或 分差不足2分,继续该局比赛
while a < 21 and b < 21 or abs(a - b) < 2:
t = random.randint(0, 1) #产生随机得分0或1(0表示b得分,1表示a得分)
a += t
②___
print("第", count, "局:", a, ":", b)
if a > b:
③____
else:
wb += 1
④_____
print("胜负情况:", wa, ":", wb)
15. 小松鼠喜欢收集各类坚果,它在森林里摘了n堆果子,决定把所有果子合成一堆后运回树洞。每次可以把任意两堆果子合并到一起,消耗的体力等于这两堆果子的数量之和。n堆果子经过n-1次合并后,最终变成一大堆。小松鼠合并果子时消耗的总体力等于每次合并所耗体力之和。请设计合并的次序方案,使小松鼠耗费的体力最少,并输出这个最小的体力耗费值。 例如有4堆果子,数量依次为1,4,2,5。可以先将数量为1、2的两堆合并,新堆数量为 3,耗费体力3;合并后4堆变3堆,数目为3,4,5;接着合并3、4的两堆,耗费体力7;最后合并5、7的两堆,耗费体力12,总体力为3+7+12=22。
(1)现有5堆果子,它们的数量依次为“2,7,6,12,10”,则合并为一堆的最小体力消耗值为______。
(2)定义如下sortdata(data),参数data存储了每堆果子的重量。函数的功能是对data中元素进行升序排序
def sortdata(data):
n = len(data)
i=0
flag=True
while i<n and flag:
return data
若data的数据为[3,1,2,7,6,5],则调用该函数时,加框部分代码执行的次数为____。
(3)实现合并果子的函数如下,请在程序划线处填入合适的代码
def merge_min(lst):
data = ①____
n=len(data)
link=[-1]*n
for i in range(n-1):
link[i]=i+1
total = 0
head=0
while link[head]!=-1:
data[head]+=data[link[head]]
total+=data[head]
link[head]=link[link[head]]#删除第二个节点
p,temp=link[head],link[head]
q=p
while②____ :
q=p
p=link[p]
if link[head]!=p:
link[q]=head
link[head]=p
③____
return total
data = [1, 4, 2, 5]
min1 = merge_min(data)
print("最小体力:",min1)
第1页/共1页
学科网(北京)股份有限公司
$