阶段检测(第三、四章) (原卷版+解析版) 2025-2026学年浙江省高三信息技术一轮复习选择性必修一

资源下载
  1. 二一教育资源

阶段检测(第三、四章) (原卷版+解析版) 2025-2026学年浙江省高三信息技术一轮复习选择性必修一

资源简介

阶段检测(第三、四章)
一、 选择题(本大题共12小题,每小题列出的四个备选项中只有一个是符合题目要求的)
1. 有如下Python程序段:
s="2022 Hope To Get Out Of The Epidemic"
t=""
for i in s:
  if i<"a" or i>"z":
    t=""
  t=i+t
print(t)
该程序运行后,最后显示的内容是( A )
A. cimedipE
B. cimedip
C. cimed
D. cime
【解析】 该程序中语句if i<"a" or i>"z"和t=""的功能是当字符i为非小写字母时,变量t就清空。因此在“Epidemic”出现前,变量t中的内容为空。这样变量t中最后的内容为“Epidemic”的重新组合。语句t=i+t的功能就是将“Epidemic”进行逆向组合。A正确。
2. 有后缀表达式“13 + 2 * 3 +2 *”,现利用栈计算该表达式:从左向右扫描,遇到数字时,数字入栈;遇到运算符时,两个元素出栈,用运算符计算,所得结果入栈,如此反复操作,直到扫描结束,栈顶元素是( B )
A. 21 B. 22
C. 23 D. 24
【解析】 本题考查栈的相关操作。依题意可得表达式为:((1+3)*2+3)*2=22,B正确。
3. 有如下Python程序段:
import random
a=[random.randint(1,5) for i in range(5)]
q=[1,3,5,2,1,0]
head,tail=0,len(q)-1
i=0
while head!=tail:
  c=0
  while q[head]!=a[i] and c<(tail-head)%len(q):
    q[tail]=q[head]
    head=(head+1)%len(q)
    tail=(tail+1)%len(q)
    c+=1
  if a[i]==q[head]:
    head=(head+1)%len(q)
    i+=1
  else:
    break
print((tail-head)%len(q))
执行该程序段后输出的值为3,则列表a的值不可能是( A )
A. [3, 2, 1, 4, 1] B. [5, 2, 4, 1, 1]
C. [1, 3, 4, 2, 3] D. [3, 5, 5, 3, 1]
【解析】 本题考查随机数及循环队列知识。本题运算量较大,重点考查了学生的逻辑判断及模拟运算能力。由代码可知,最初数组a产生5个1~5之间的随机整数。最后(tail-head)%len(q)的结果为3,意味着最终循环队列q中的元素数量为3。将各选项中的数据代入模拟可知,A中的数据最终队列中的元素数量只能为2,最终其他参数是head=5,tail=1,c=0,i=3,符合题意。B、C、D的最终输出都是3,均不符合题意。
4. 设栈S初始状态为空,元素a,b,c,d,e,f依次入栈,出栈顺序为b,d,c,f,e,a,那么栈容量至少应该是( D )
A. 6 B. 5
C. 4 D. 3
【解析】 本题考查栈的基本操作。出栈顺序为b,d,c,f,e,a,则a入→b入→b出→c入→d入→d出→c出→e 入→f入→f出→e出→a 出,因此栈容量至少是3。D正确。
5. 若字符串s1="pYTHON学习",有如下Python代码段:
s2="";i=0
while i  if "A"<=s1[i]<="Z":
    s2=s2+chr(ord(s1[i])+32)
  elif "a"<=s1[i]<="z":
    s2=s2+chr(ord(s1[i])-32)
  else:
    s2 = s2 + s1[i]
  i+=1
 print(s2)
执行该代码段后,字符串s2的值是( C )
A. PYTHON学习
B. Python
C. Python学习
D. python学习
【解析】 本题考查字符处理知识。ord()函数的作用是求字符的十进制ASCII值,chr()函数是将十进制数值转化成它对应的ASCII字符,因此这段程序的意思是当s1[i]为大写字母时,将其转换成对应的小写字母,当s1[i]为小写字母时,将其转换成对应的大写字母,而其他字符保持不变。C正确。
6. 某二叉树的先序遍历为ABFECD,中序遍历为BEFACD,则后序遍历为( D )
A. FEBACD B. BFECDA
C. EFBCDA D. EFBDCA
【解析】 本题考查二叉树的遍历。由先序遍历可知A为树根,由中序遍历可知根节点A的左子树是BEF,右子树为CD,那么后序遍历的最后3个节点是DCA,D正确。
7. 有如下Python程序段:
n="p4y2t3h1o9n4";p=""
for i in n:
  if "0"<=i<="9":
    if p=="":
      p+=i
    elif i>=p[-1]:
      p+=i
    elif i      p=i
执行该程序段后,p的值是( C )
A. "239"
B. "14"
C. "19"
D. "4"
【解析】 本题考查字符串及字符串的比较等知识。由题可知,字符串p中存储字符串n中的数字字符(以下用“p”指代该字符串,方便理解)。按照规则,每次从n中取出数字字符和p中的字符进行判断:①若大于等于最后的字符,直接追加进p; ②若小于第一个字符,直接替换p中的字符。p依次指向的字符串是 4 2 23 1 19 19 。C正确。
8. 有如下Python程序段:
s=input("请输入字符串:")
ans=0;t=""
for c in s:
  if "0"<=c <= "9":
    t+=c
  else:
    ans+=int(t)
    t=""
print(ans)
运行该代码段后,输入“2024-06-06”,则程序输出的结果为( C )
A. 24 B. 2024
C. 2030 D. 2036
【解析】 本题考查字符串知识。程序的功能是提取s中的连续数字并求整数和,由于最后的06后面没有非数字字符,因此该数不能累加到s中,故s=2024+6=2030,C正确。
9. 一个栈的入栈序列为1,2,3,4,5,则其出栈序列不可能为( C )
A. 1,2,3,4,5
B. 4,5,3,2,1
C. 4,3,5,1,2
D. 3,2,1,5,4
【解析】 本题考查栈的知识。若4先出栈,则后续出栈的顺序应为3,2,1,C符合题意。
10. 某算法利用“栈”的思想进行字符串处理,其步骤如下:①创建长度为n的空栈,字符依次入栈;②当达到栈满状态或数据全部入栈时,字符依次出栈,按照出栈顺序连接成新字符串;③若还有未处理的字符,则重复步骤①②,直到全部字符处理完毕。实现该功能的Python程序如下:
s=input("请输入字符串:")
n=5;st=[""]*n
top=-1;i=0;m=""
while i  while  (1)  and i     (2) 
    st[top]=s[i]
    i+=1
  while top!=-1:
    m+=st[top]
     (3) 
print("密文:",m)
加框处(1)(2)(3)的可选代码如下:
①top-=1 ②top+=1 ③top+1下列选项中,代码顺序正确的是( C )
A. ④②①
B. ③①②
C. ③②①
D. ④①②
【解析】 本题考查数据结构栈的出栈入栈基本操作。条件(1)处后面的相应代码是入栈的操作,那么栈不能为满的状态。栈满时top=n-1,所以此处代码:top+111. 如图所示的二叉树的中序遍历序列是( D )
A. G-D-B-H-I-F-E-C-A
B. D-G-B-A-C-E-H-F-I
C. A-B-D-G-C-E-F-H-I
D. D-G-B-A-E-C-H-F-I
【解析】 本题考查二叉树的遍历。中序遍历是“左—根—右”的顺序,由于根是节点“A”,选A、C错误。按照中序遍历规则可知,其序列应该是D-G-B-A-E-C-H-F-I,选B错误,选D正确。
12. 若一棵二叉树的中序遍历序列为BIGDHAECF,后序遍历序列为IGHDBEFCA,则该二叉树的前序遍历序列为( D )
A. ABCDEFGHI
B. ABDGHICEF
C. ABDHGICEF
D. ABDGIHCEF
【解析】 本题考查二叉树的遍历。“A”是根节点,那么“ECF”在右子树,A错误。左子树的根节点是“B”,再根据中序的“IGDH”,后序的“IGHD”,可知“D”是这个子树的根节点。“H”在右子树,前序遍历一定在最后,B、C错误,D正确
二、 非选择题(本大题共3小题)
13. 编写程序,实现如下功能:分别输入英文句子和关键词,运行程序后在英文单词中查找包含关键词的字符串,若查找成功,则输出该单词;若查找失败,则显示“查找无结果”。若某单词多次符合条件,则只显示一次。运行界面如图所示。
请输入英文单词:A friend in need is a friend indeed
请输入关键词:in
[ in , indeed ]
实现上述功能的Python程序如下,请回答下列问题:
(1)请在画线处填入合适的代码。
(2)加框处的程序代码有错误,请改正。
s = input("请输入英文单词:")
kword = input("请输入关键词:")
a = s.split()  #将字符串s切片为列表,以空格为间隔
b=[]
flag = False
for i in ① a :
  if len(i)>=len(kword):
     for j in range(len(i)):
       ② p=i[j:j+len(kword)] 
       if p==kword:
         b.append(i) #在列表b末尾增加元素i
         ③ flag=True 
         break
if flag:
  print(a)
else:
  print("查找无结果")
【答案】 (2)print(b)
【解析】 本题考查字符串处理知识。①根据题意可知,先是将字符串s切割并存入字符串类型的列表a,故此处填入a。②列表b用于存放匹配成功的单词,若某单词的长度大于或等于关键词的长度,则进行查找,外循环变量i列举单词,内循环j枚举单词中的位置信息,故此处需要关于p的表达式,根据题意可知,需要将单词i进行切片,其长度应该是kword的长度,故答案是p=i[j:j+len(kword)]。③flag是找到与否的标志,若找到,则令flag=True。(2)匹配到的单词存放于列表b中,而不是列表a中。
14. 利用栈的“先进后出”的特点可以实现数的进制转换。有如下Python程序段,实现的是十进制数转换为十六进制数的功能,运行界面如图所示。
请输入十进制数:90
其对应的十六进制数为:5A
请回答下列问题:
(1)十进制数78,其对应的十六进制数为 4E 。
(2)请在画线处填入合适的代码。
s=[""]*100
top=-1
n=int(input("请输入十进制数: "))
while n>0:
  top+=1
  r=n%16
  if r>9:
    ① s[top]=chr(r+55) 
  else:  
    s[top]= r
  ② n=n//16 
print("其对应的十六进制数为:",end="")
while top >-1:
    print(s[top],end="")
    ③ top-=1 
【解析】 本题考查栈的应用。利用除16取余倒排法的算法。(1)十进制数78,其十六进制数为4E。(2)①top是栈顶,该处功能是实现将取得的余数进行进栈操作。若余数大于9,则应该将其转换为相应的A~F的大写英文字符,利用数字和ASCII码的规律可知,10加上55,对应字符恰好为英文字符“A”。因此答案是chr(r+55)。②每次取余后,n都要被16整除,因此更新n的值为新值,直到n=0为止。③将所有得到的余数出栈,top指针每次减1,直到top=-1结束,此时所有数据出栈完毕。
15. 某校学生会要从候选人A和B中选举一个会长,每个候选人都有各自的支持方。现在进行几轮选举。在每一轮的选举中,当前成员可以直接剥夺对方阵营中另一名成员的选举权,即让对方成员在这一轮和随后的几轮中都丧失选举权。
在选举过程中,若有选举权的成员都来自同一个阵营,则该阵营胜利。字母A和B分别代表两位候选人,输入一个字符串代表每名成员的阵营。
例1:输入“ABB”,输出结果为B,即候选人B为会长。
例2:输入“AAABBBB”,输出结果为A,即候选人A为会长。
请在画线处填入合适的代码。
s1=input("请输入投票字符串:")
queA=[""]*100; queB=[""]*100
headA=headB=0
tailA=tailB=0
n=len(s1)
for i in range(n):   #按选票信息分成A、B两个阵营,用编号记录较量时的出现的次序
  if ① s1[i]== A  :
    queA[tailA]=i
    tailA+=1
  else:
    queB[tailB]=i
    tailB+=1
while ② headA  if ③ queA[headA]    queA[tailA]=queA[headA]+n #加n后的编号是下一轮,用编号次序比较(编号不重复)
    tailA+=1
  else:
    queB[tailB]=queB[headB]+n
    tailB+=1
  headA+=1; headB+=1
if ④ headB  print("B")
else:
  print("A")
【解析】 ①由于入队的是队列queA,可以确定当前候选人为"A",所以此处应填s1[i]== A 。②循环题的语句是队列queA或队列queB入队,因此此处应填headA一、 选择题(本大题共12小题,每小题列出的四个备选项中只有一个是符合题目要求的)
1. 有如下Python程序段:
s="2022 Hope To Get Out Of The Epidemic"
t=""
for i in s:
  if i<"a" or i>"z":
    t=""
  t=i+t
print(t)
该程序运行后,最后显示的内容是(  )
A. cimedipE
B. cimedip
C. cimed
D. cime
2. 有后缀表达式“13 + 2 * 3 +2 *”,现利用栈计算该表达式:从左向右扫描,遇到数字时,数字入栈;遇到运算符时,两个元素出栈,用运算符计算,所得结果入栈,如此反复操作,直到扫描结束,栈顶元素是(  )
A. 21 B. 22
C. 23 D. 24
3. 有如下Python程序段:
import random
a=[random.randint(1,5) for i in range(5)]
q=[1,3,5,2,1,0]
head,tail=0,len(q)-1
i=0
while head!=tail:
  c=0
  while q[head]!=a[i] and c<(tail-head)%len(q):
    q[tail]=q[head]
    head=(head+1)%len(q)
    tail=(tail+1)%len(q)
    c+=1
  if a[i]==q[head]:
    head=(head+1)%len(q)
    i+=1
  else:
    break
print((tail-head)%len(q))
执行该程序段后输出的值为3,则列表a的值不可能是(  )
A. [3, 2, 1, 4, 1] B. [5, 2, 4, 1, 1]
C. [1, 3, 4, 2, 3] D. [3, 5, 5, 3, 1]
4. 设栈S初始状态为空,元素a,b,c,d,e,f依次入栈,出栈顺序为b,d,c,f,e,a,那么栈容量至少应该是(  )
A. 6 B. 5
C. 4 D. 3
5. 若字符串s1="pYTHON学习",有如下Python代码段:
s2="";i=0
while i  if "A"<=s1[i]<="Z":
    s2=s2+chr(ord(s1[i])+32)
  elif "a"<=s1[i]<="z":
    s2=s2+chr(ord(s1[i])-32)
  else:
    s2 = s2 + s1[i]
  i+=1
 print(s2)
执行该代码段后,字符串s2的值是(  )
A. PYTHON学习
B. Python
C. Python学习
D. python学习
6. 某二叉树的先序遍历为ABFECD,中序遍历为BEFACD,则后序遍历为(  )
A. FEBACD B. BFECDA
C. EFBCDA D. EFBDCA
7. 有如下Python程序段:
n="p4y2t3h1o9n4";p=""
for i in n:
  if "0"<=i<="9":
    if p=="":
      p+=i
    elif i>=p[-1]:
      p+=i
    elif i      p=i
执行该程序段后,p的值是(  )
A. "239"
B. "14"
C. "19"
D. "4"
8. 有如下Python程序段:
s=input("请输入字符串:")
ans=0;t=""
for c in s:
  if "0"<=c <= "9":
    t+=c
  else:
    ans+=int(t)
    t=""
print(ans)
运行该代码段后,输入“2024-06-06”,则程序输出的结果为(  )
A. 24 B. 2024
C. 2030 D. 2036
9. 一个栈的入栈序列为1,2,3,4,5,则其出栈序列不可能为(  )
A. 1,2,3,4,5
B. 4,5,3,2,1
C. 4,3,5,1,2
D. 3,2,1,5,4
10. 某算法利用“栈”的思想进行字符串处理,其步骤如下:①创建长度为n的空栈,字符依次入栈;②当达到栈满状态或数据全部入栈时,字符依次出栈,按照出栈顺序连接成新字符串;③若还有未处理的字符,则重复步骤①②,直到全部字符处理完毕。实现该功能的Python程序如下:
s=input("请输入字符串:")
n=5;st=[""]*n
top=-1;i=0;m=""
while i  while  (1)  and i     (2) 
    st[top]=s[i]
    i+=1
  while top!=-1:
    m+=st[top]
     (3) 
print("密文:",m)
加框处(1)(2)(3)的可选代码如下:
①top-=1 ②top+=1 ③top+1下列选项中,代码顺序正确的是(  )
A. ④②①
B. ③①②
C. ③②①
D. ④①②
11. 如图所示的二叉树的中序遍历序列是(  )
A. G-D-B-H-I-F-E-C-A
B. D-G-B-A-C-E-H-F-I
C. A-B-D-G-C-E-F-H-I
D. D-G-B-A-E-C-H-F-I
12. 若一棵二叉树的中序遍历序列为BIGDHAECF,后序遍历序列为IGHDBEFCA,则该二叉树的前序遍历序列为(  )
A. ABCDEFGHI
B. ABDGHICEF
C. ABDHGICEF
D. ABDGIHCEF
二、 非选择题(本大题共3小题)
13. 编写程序,实现如下功能:分别输入英文句子和关键词,运行程序后在英文单词中查找包含关键词的字符串,若查找成功,则输出该单词;若查找失败,则显示“查找无结果”。若某单词多次符合条件,则只显示一次。运行界面如图所示。
请输入英文单词:A friend in need is a friend indeed
请输入关键词:in
[ in , indeed ]
实现上述功能的Python程序如下,请回答下列问题:
(1)请在画线处填入合适的代码。
(2)加框处的程序代码有错误,请改正。
s = input("请输入英文单词:")
kword = input("请输入关键词:")
a = s.split()  #将字符串s切片为列表,以空格为间隔
b=[]
flag = False
for i in ①   :
  if len(i)>=len(kword):
     for j in range(len(i)):
       ②   
       if p==kword:
         b.append(i) #在列表b末尾增加元素i
         ③   
         break
if flag:
  print(a)
else:
  print("查找无结果")
14. 利用栈的“先进后出”的特点可以实现数的进制转换。有如下Python程序段,实现的是十进制数转换为十六进制数的功能,运行界面如图所示。
请输入十进制数:90
其对应的十六进制数为:5A
请回答下列问题:
(1)十进制数78,其对应的十六进制数为   。
(2)请在画线处填入合适的代码。
s=[""]*100
top=-1
n=int(input("请输入十进制数: "))
while n>0:
  top+=1
  r=n%16
  if r>9:
    ①   
  else:  
    s[top]= r
  ②   
print("其对应的十六进制数为:",end="")
while top >-1:
    print(s[top],end="")
    ③   
15. 某校学生会要从候选人A和B中选举一个会长,每个候选人都有各自的支持方。现在进行几轮选举。在每一轮的选举中,当前成员可以直接剥夺对方阵营中另一名成员的选举权,即让对方成员在这一轮和随后的几轮中都丧失选举权。
在选举过程中,若有选举权的成员都来自同一个阵营,则该阵营胜利。字母A和B分别代表两位候选人,输入一个字符串代表每名成员的阵营。
例1:输入“ABB”,输出结果为B,即候选人B为会长。
例2:输入“AAABBBB”,输出结果为A,即候选人A为会长。
请在画线处填入合适的代码。
s1=input("请输入投票字符串:")
queA=[""]*100; queB=[""]*100
headA=headB=0
tailA=tailB=0
n=len(s1)
for i in range(n):   #按选票信息分成A、B两个阵营,用编号记录较量时的出现的次序
  if ①   :
    queA[tailA]=i
    tailA+=1
  else:
    queB[tailB]=i
    tailB+=1
while ②   : #当两阵营中均有成员时,进行较量
  if ③   :  #根据前面记录的编号,直接用编号进行较量
    queA[tailA]=queA[headA]+n #加n后的编号是下一轮,用编号次序比较(编号不重复)
    tailA+=1
  else:
    queB[tailB]=queB[headB]+n
    tailB+=1
  headA+=1; headB+=1
if ④   :      # 若B阵营中还有成员,则B阵营胜利
  print("B")
else:
  print("A")

展开更多......

收起↑

资源列表