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

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

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

资源简介

阶段检测(第一、二章)
一、 选择题(本大题共12小题,每小题列出的四个备选项中只有一个是符合题目要求的)
1. 下列关于链表的说法,错误的是( B )
A. 链表占用的存储空间不固定
B. 链表中不一定有头指针
C. 链表的节点由数据区域和指针区域两部分组成
D. 在链表中插入一个节点,只需要修改部分节点的指针
【解析】 本题考查链表知识。链表中必须要有头指针才能正常工作,B符合题意。
2. 文字处理软件Word的“撤销”操作,符号输入及撤销时,内部所依托的数据结构是( B )
A. 队列 B. 栈
C. 链表 D. 数组
【解析】 本题考查数据结构的相关知识。文字处理软件Word的“撤销”操作,符号输入及撤销时,先输入的最后撤销,最后输入的最先撤销,属于“栈”数据结构的特征。B正确。
3. 下列关于数组的说法,正确的是( C )
A. 在计算机内部存储时,一维数组是线性存储,二维数组是非线性存储
B. 对数组进行操作的过程中,若某些数据元素已被删除,其占用的存储空间也会被释放
C. 数组的优点是访问速度快,但删除、插入数据的操作效率较低
D. 同一数组元素的数据类型可以不相同,这和Python的列表类型相同
【解析】 本题考查数组的相关知识。在计算机内部存储时,一维数组是线性存储,二维数组也是线性存储,A错误。对数组进行操作的过程中,若某些数据元素已删除,其占用的存储空间不会被删除,B错误,C正确。同一数组元素的数据类型是相同的,D错误。
4. 下列关于字符串的说法,错误的是( B )
A. 字符串是由零个或多个字符组成的有限序列
B. 空串是由空格组成的字符串
C. 字符串可以比较大小
D. 字符串的存储既可以采用顺序存储结构,也可以采用链式存储结构
【解析】 本题考查字符串的相关知识。空串是长度为0的字符串,B符合题意。
5. 下列关于链表的说法,正确的是( A )
A. 插入、删除操作无须移动数据元素
B. 链表和数组相同,都属于顺序存储
C. 可随机快速访问任何一个数据元素
D. 同一链表中每个节点的结构均不同
【解析】 链表不属于顺序存储,B错误;数组可随机快速访问任何一个数据元素,C错误;同一个链表中每个节点的结构均相同,D错误。
6. 下列关于数组和链表的说法,错误的是( C )
A. 链表的各数据的存储空间可以不连续,而数组的存储空间必须连续
B. 链表各数据节点的存储顺序与逻辑顺序可以不一致
C. 在数组中进行插入或删除元素时,不需要移动元素
D. 存储同一序列,数组与链表所需的存储空间大小不同
【解析】 本题考查数组和链表的区别。数组进行插入与删除时,需要移动大量的元素,而链表不需要移动,C符合题意。
7. 有如下Python程序段:
import random
a=[0]*6
i=0
while i<6:
  t=random.randint(2,10)
  if t not in a:
    a[i]=t
  i+=1
print(a)
运行程序后,输出的结果不可能是( D )
A. [3, 0, 0, 0, 0, 0] B. [9, 10, 4, 6, 0, 0]
C. [2, 3, 4, 5, 6, 7] D. [0, 10, 1, 3, 4, 5]
【解析】 本题考查随机数及列表知识。由代码可知,a列表初始值全部为0,经过while循环的处理,列表a元素的值是2~10的不重复随机整数。由于i+=1和if语句对齐,因此不赋值循环也可以进行。因为第一次循环时,产生的随机数t一定不为0,因此一定会对列表a赋值,因此第一个值不可能为0,D符合题意。
8. 有如下Python程序段:
a = [0]*10
s=input("请输入字符串:")
n = 0
for i in range(len(s)):
  if "0" <=s[i] <= "9":
    m = 1
  else:
    m = 2
  a[m] = a[m] + 1
  if a[m] == 1:
    n +=1
print(n)
执行该程序段后,若输入s的内容为“Happy2025”,则输出变量n的值为( B )
A. 1 B. 2
C. 3 D. 9
【解析】 本题考查循环和数组运算知识。由程序可知,数组元素a[1]用于存储数字字符的个数,数组元素a[2]用于存储非数字字符的个数。 当遇到第1个数字或非数字时,a[1]=1和a[2]=1时,执行n=n+1。因此最终n的值为2。本题的易错在于只有当a[m]=1时,才触发计数器n加1,而这样的情况只有两种:a[1]=1和a[2]=1。B正确。
9. 数组元素a[0]~a[n-1]已按升序排列,现要将a[pos](0≤pos≤n-1)的值加1,并保持数组的有序性不变,实现该功能的程序段如下,方框中应填入的正确代码是( B )
t = a[pos]+1
i = pos
while      :
  a[i] = a[i+1]
  i += 1
a[i] = t
A. i < n-1 B. i < n-1 and t > a[i+1]
C. i < n-1 and a[i] > a[i+1] D. i <= n-1 or t > a[i]
【解析】 本题考查数组的插入排序知识。根据代码可知,由于代码中出现了a[i+1] 的表达式,因此循环变量i的取值范围不能等于n-1,否则会产生下标越界的错误,D错误。另外还需要保持数据的升序,因此还需要附加其他条件,A错误。根据代码可知,待排序的数事先已经被暂时存放到变量t中,因此移动数组元素数据时需要比较的是t和其后面的元素a[i+1],只有当t>a[i+1]时,才需要改变元素之间的前后顺序,C错误。
10. 数组中保存有n+1个数据,分别保存在a[0]到a[n]中。现需要删除第2个数字(即a[1]处的数字),且要求不能改变其他数字。Python代码如下:
a=[4,2,7,5,3,9]
n=len(a)-1
for i in range(  (1)  ):
    (2)  
a=a[:n]
print(a)
画线处的可选代码如下:
①1,n ②n,1,-1 ③a[i-1] = a[i] ④a[i+1] = a[i] 
⑤a[i] = a[i+1] ⑥a[i] = a[i-1]
为实现上述功能,画线处应填入的代码是( D )
A. ②④ B. ①③
C. ②⑥ D. ①⑤
【解析】 本题考查通过循环进行数组操作的能力。考虑对于数组a[0]到a[n],删除位置k上的数据,则需要将k+1到n中的数字全部左移,所以题目要求删除a[1]所在位置,需要将位置2到n的数字全部左移1个位置。注意左移时需要从左往右进行,若从右往左将造成数字的覆盖。所以循环时,每次将后一个赋值给当前一个即可,最后删除最后一个数。D正确。
11. 有如下Python程序段:
s=[[7,2],[5,4],[4,1],[9,-1],[1,3]]
p=head=2
while s[p][1]!=-1:
  print(s[p][0],end="->")
  p=s[p][1]
执行该代码后,输出结果为( C )
A. 4->5->1 B. 7-> 4->5->1->
C. 4->5->1-> D. 4->5->1->9
【解析】 本题考查链表的遍历。由于循环的条件是s[p][1]!=-1,也就是当前头指针p的下一个指针域不是最后一个(指针域为-1),则输出该数据域。因此最后的9不能输出,C正确。
12. 使用Python程序在链表a中删除一个数据data,代码如下:
import random
a=[[87,1],[93,3],[97,5],[95,2],[80,0],[98,-1]]
head=4
x=random.randint(0,len(a)-1)
data=  ①  
q=head
while q!=-1:
  if   ②  :
   if q==head:
     head=a[q][1]
   else:
     a[p][1]=a[q][1]
   break
  else:
    ③ 
   q=a[q][1]
则画线处应填入的代码是( C )
A. ①a[0][x]  ②data==a[q][0] ③p=q
B. ①a[0][x]  ②data!=a[q][0]  ③p=head
C. ①a[x][0]  ②data==a[q][0] ③p=q
D. ①a[x][0]   ②data!=a[q][0]  ③q=head
【解析】 本题考查遍历链表及删除节点操作。由代码可知,x是在二维列表a中任选的一个索引号,此数即为即将从链表中删除的数据data。由于二维列表a中的第一个数为链表的数据域,第二个数为指针域,因此①的位置肯定是a[x][0],A、B错误。接下来在while循环中,此为遍历链表过程中实现删除数据data的过程,当前节点为q节点,p为q的前驱节点。根据代码可知,若找到数据域为data的节点,将该节点删除,故②处的代码是data==a[q][0]。删除当前节点时,又要分为两种情况:该节点是头节点需要更新head的值(head更新为当前节点的下一个节点),若不是头节点,则可以直接删除,删除时只需让前驱节点p指向当前节点q的后继节点即可,即a[p][1]=a[q][1]。若当前节点的数据域不是data,则将当前节点p更新为前驱节点q,并继续检查下一个节点,故③处的代码是p=q。C正确,D错误。
二、 非选择题(本大题共3小题)
13. 有不同颜色的袜子若干(袜子的颜色用数字编号1~15表示),颜色相同的袜子才能组成一双,其中有几只袜子是落单的,现要求找出落单袜子的颜色以及能够配对的袜子数量。编写程序解决该问题,程序运行后,依次输入袜子的颜色编号(数据之间用空格分隔),输出落单袜子的颜色编号以及能配对的袜子的数量(双)。运行界面如图所示。
请输入袜子的颜色编号(1~15),用空格隔开:3 15 4 3 2 4 11 15
落单袜子的颜色为:2
落单袜子的颜色为:11
能配对的袜子有:3双
实现上述功能的Python程序如下,请回答下列问题:
(1)根据题意,请在画线处填入合适的代码。
(2)加框处的程序代码有错误,请改正。
s = input("请输入袜子的颜色编号(1~15),中间用空格隔开:")
a=s.split()  #将字符串s切片为列表,以空格为间隔
b=[0]*16    #定义用于装袜子编号的“桶”
t = 0 ;c = 0
for i in ① a :
  t = int(i)
  b[t] = ② b[t]+ 1 
for i in range(1,16):
  if ③ b[i]%2==1 :
    print("落单袜子的颜色为:" + str(i))
  c = c + b[i]%2
print("能配对的袜子有:" + str(c)+ "双")
【答案】 c + b[i]//2
【解析】 本题考查数组应用及循环知识。(1)①for语句,从左向右列举a中的每个元素。②数组a存放不同颜色袜子的数量,此处利用桶的思想进行计数。③袜子成双的话为一对,若某种颜色的袜子数量不是偶数则意味着落单了。(2)变量c用于记录袜子的总双数,因此c + b[i]//2,表示袜子的总双数。
14. 中华人民共和国公民身份号码共18位,其中前17位为数字本体码,第18位为校验码。
作为尾号的校验码,是按统一的公式计算出来的,校验码的计算方法如下:
①将公民身份号码前17位分别乘以不同的系数,系数依次为7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2。
②将这17位数字和系数相乘的结果相加。
③求用上述相加的和除以11的余数。
④余数只可能有0,1, 2... 9,10共11个数字,分别对应校验码1,0,X,9,8,7,6,5,4,3,2。
例如,公民身份号码34052419800101001X,计算3*7+4*9+0*10+5*5+...+1*2=189,用189除以11得出余数2,对应的校验码是X。
编写 Python程序,判断输入的公民身份号码的校验码是否正确,正确则输出“Yes”,否则输出“No”,请在画线处填入合适的代码。
def judge(s):
  ① n=len(s) 
  if n!=18:
    return False
  res=0
  for i in range(n-1):
    ② res+=int(s[i])*v[i] 
  res=res%11
  code=m[res]
  if ③ code==s[-1]或其他等价答案 :
    return True
  else:
    return False
v=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] #系数
m= 10X98765432  #余数对应的校验码
s=input()
if ④  judge(s)==True 或 judge(s) :
  print( Yes )
else:
  print( No )
【解析】 本题考查字符串、列表和自定义函数等知识。①根据代码 n!=18,返回False,可知这里的变量n得到的是字符串的长度n=len(s)。②根据循环范围range(n-1),以及前后的语句和对变量res的分析,res变量是公民身份号码前17位乘以不同的系数再相加后的结果,对应代码:res+=int(s[i])*v[i],进行数学运算时,一定要注意变量的类型。不一致的情况下做好相应的转换:int(s[i])。③根据函数return的返回情况,这里应该是:code==s[-1]。④代码的绝大部分工作都是自定义函数judge完成,这里只要调用函数即可:judge(s)。
15. 传统节日是中华民族悠久历史文化的重要组成部分,记录了中华民族丰富多彩的社会生活,并蕴含着深厚的历史文化内涵。经过信息课的集思广益,我们以链表的形式罗列了以下传统节日:[["元宵节", 11], ["元旦", 0], ["清明节", 4], ["中秋节", 5], ["端午节", 7], ["国庆节", 9], ["社日节", 12], ["中元节", 3], ["冬至节", -1], ["重阳节", 13], ["寒食节", 2], ["龙抬头", 6], ["上巳节", 10],["下元节", 8]]。请回答下列问题:
(1)当head为1的时候,想要在原始链表a中访问端午节,需要先访问 7 (填数字)个节日。为更全面地了解我国的传统节日,小明上网搜索后,发现了几个问题:
①他发现元旦和国庆节不是我国的传统节日。
②除了上述节日外,他还查阅到春节、七夕、除夕等也都是我国的传统节日。
小明编写程序对链表进行更正,程序如下所示:
a = [["元宵节", 11], ["元旦", 0],["清明节", 4], ["中秋节", 5],["端午节", 7], ["国庆节", 9],["社日节", 12], ["中元节", 3], ["冬至节", -1], ["重阳节", 13],["寒食节", 2],["龙抬头", 6],["上巳节", 10],["下元节", 8]]
head = 1
p = head
while a[p][1] != -1:
   if a[p][0] == "元旦" and p==head:
     head=a[p][1]
   elif ① a[a[p][1]][0]=="国庆节" :
     a[p][1] = a[a[p][1]][1]
   else:
     p = a[p][1] 
a. append(["春节", head])
② head=len(a)-1 
p = head
while a[p][0] != "端午节":
   p = a[p][1]
a. append(["七夕", a[p][1]])
a[p][1] = len(a)- 1
while a[p][0] != -1 :
   p = a[p][1]
a. append(["除夕", a[p][1]])
a[p][1] = len(a)- 1
# 遍历新链表
p = head
while a[p][1] != -1:
   print(a[p][0], end="->")
   p = a[p][1]
print(a[p][0])
小明想要设计一个程序,能够根据用户输入的节日名称,输出从该节日开始,一年内的节日顺序。如原始链表为A节->B节->C节->D节->E节->F节。若用户输入C节,则输出结果为C节->D节->E节->F节->A节->B节。
为了实现这个功能,小明在原有的程序基础上,增加了以下Python程序:
user_input = input("请输入一个传统节日名:")
found = False
index = -1
p=head
while a[p][1] != -1:
  if a[p][0] == user_input:
    found = True
    index = p
  p = a[p][1]
if found:
  p = index
  while p != -1:
    print(a[p][0], end="->")
    p = a[p][1]
    if p==-1:
      ③ p=head 
    if p==index:
      p=-1
  print()
else:
  print("不是传统节日,请重新输入:")
(2)请在画线处填入合适的代码。
(3)加框处的程序代码有错误,请改正。
【答案】 a[p][1]!=-1
【解析】 本题考查链表操作知识。(1)模拟后可知要访问7个节日。(2)①此处需要删除国庆节,因此需要找到下一个节点为国庆节的位置,然后让当前节点指向下下个节点即可。②增加春节,然后将该节点设置为头节点。③若按照链表遍历到尾部,则接下去继续从头节点head开始访问。(3)a[p][1]才是指针域,a[p][0]是数据域。阶段检测(第一、二章)
一、 选择题(本大题共12小题,每小题列出的四个备选项中只有一个是符合题目要求的)
1. 下列关于链表的说法,错误的是(  )
A. 链表占用的存储空间不固定
B. 链表中不一定有头指针
C. 链表的节点由数据区域和指针区域两部分组成
D. 在链表中插入一个节点,只需要修改部分节点的指针
2. 文字处理软件Word的“撤销”操作,符号输入及撤销时,内部所依托的数据结构是(  )
A. 队列 B. 栈
C. 链表 D. 数组
3. 下列关于数组的说法,正确的是(  )
A. 在计算机内部存储时,一维数组是线性存储,二维数组是非线性存储
B. 对数组进行操作的过程中,若某些数据元素已被删除,其占用的存储空间也会被释放
C. 数组的优点是访问速度快,但删除、插入数据的操作效率较低
D. 同一数组元素的数据类型可以不相同,这和Python的列表类型相同
4. 下列关于字符串的说法,错误的是(  )
A. 字符串是由零个或多个字符组成的有限序列
B. 空串是由空格组成的字符串
C. 字符串可以比较大小
D. 字符串的存储既可以采用顺序存储结构,也可以采用链式存储结构
5. 下列关于链表的说法,正确的是(  )
A. 插入、删除操作无须移动数据元素
B. 链表和数组相同,都属于顺序存储
C. 可随机快速访问任何一个数据元素
D. 同一链表中每个节点的结构均不同
6. 下列关于数组和链表的说法,错误的是(  )
A. 链表的各数据的存储空间可以不连续,而数组的存储空间必须连续
B. 链表各数据节点的存储顺序与逻辑顺序可以不一致
C. 在数组中进行插入或删除元素时,不需要移动元素
D. 存储同一序列,数组与链表所需的存储空间大小不同
7. 有如下Python程序段:
import random
a=[0]*6
i=0
while i<6:
  t=random.randint(2,10)
  if t not in a:
    a[i]=t
  i+=1
print(a)
运行程序后,输出的结果不可能是(  )
A. [3, 0, 0, 0, 0, 0] B. [9, 10, 4, 6, 0, 0]
C. [2, 3, 4, 5, 6, 7] D. [0, 10, 1, 3, 4, 5]
8. 有如下Python程序段:
a = [0]*10
s=input("请输入字符串:")
n = 0
for i in range(len(s)):
  if "0" <=s[i] <= "9":
    m = 1
  else:
    m = 2
  a[m] = a[m] + 1
  if a[m] == 1:
    n +=1
print(n)
执行该程序段后,若输入s的内容为“Happy2025”,则输出变量n的值为(  )
A. 1 B. 2
C. 3 D. 9
9. 数组元素a[0]~a[n-1]已按升序排列,现要将a[pos](0≤pos≤n-1)的值加1,并保持数组的有序性不变,实现该功能的程序段如下,方框中应填入的正确代码是(  )
t = a[pos]+1
i = pos
while      :
  a[i] = a[i+1]
  i += 1
a[i] = t
A. i < n-1 B. i < n-1 and t > a[i+1]
C. i < n-1 and a[i] > a[i+1] D. i <= n-1 or t > a[i]
10. 数组中保存有n+1个数据,分别保存在a[0]到a[n]中。现需要删除第2个数字(即a[1]处的数字),且要求不能改变其他数字。Python代码如下:
a=[4,2,7,5,3,9]
n=len(a)-1
for i in range(  (1)  ):
    (2)  
a=a[:n]
print(a)
画线处的可选代码如下:
①1,n ②n,1,-1 ③a[i-1] = a[i] ④a[i+1] = a[i] 
⑤a[i] = a[i+1] ⑥a[i] = a[i-1]
为实现上述功能,画线处应填入的代码是(  )
A. ②④ B. ①③
C. ②⑥ D. ①⑤
11. 有如下Python程序段:
s=[[7,2],[5,4],[4,1],[9,-1],[1,3]]
p=head=2
while s[p][1]!=-1:
  print(s[p][0],end="->")
  p=s[p][1]
执行该代码后,输出结果为(  )
A. 4->5->1 B. 7-> 4->5->1->
C. 4->5->1-> D. 4->5->1->9
12. 使用Python程序在链表a中删除一个数据data,代码如下:
import random
a=[[87,1],[93,3],[97,5],[95,2],[80,0],[98,-1]]
head=4
x=random.randint(0,len(a)-1)
data=  ①  
q=head
while q!=-1:
  if   ②  :
   if q==head:
     head=a[q][1]
   else:
     a[p][1]=a[q][1]
   break
  else:
    ③ 
   q=a[q][1]
则画线处应填入的代码是(  )
A. ①a[0][x]  ②data==a[q][0] ③p=q
B. ①a[0][x]  ②data!=a[q][0]  ③p=head
C. ①a[x][0]  ②data==a[q][0] ③p=q
D. ①a[x][0]   ②data!=a[q][0]  ③q=head
二、 非选择题(本大题共3小题)
13. 有不同颜色的袜子若干(袜子的颜色用数字编号1~15表示),颜色相同的袜子才能组成一双,其中有几只袜子是落单的,现要求找出落单袜子的颜色以及能够配对的袜子数量。编写程序解决该问题,程序运行后,依次输入袜子的颜色编号(数据之间用空格分隔),输出落单袜子的颜色编号以及能配对的袜子的数量(双)。运行界面如图所示。
请输入袜子的颜色编号(1~15),用空格隔开:3 15 4 3 2 4 11 15
落单袜子的颜色为:2
落单袜子的颜色为:11
能配对的袜子有:3双
实现上述功能的Python程序如下,请回答下列问题:
(1)根据题意,请在画线处填入合适的代码。
(2)加框处的程序代码有错误,请改正。
s = input("请输入袜子的颜色编号(1~15),中间用空格隔开:")
a=s.split()  #将字符串s切片为列表,以空格为间隔
b=[0]*16    #定义用于装袜子编号的“桶”
t = 0 ;c = 0
for i in ①  :
  t = int(i)
  b[t] = ②  
for i in range(1,16):
  if ③  :
    print("落单袜子的颜色为:" + str(i))
  c = c + b[i]%2
print("能配对的袜子有:" + str(c)+ "双")
14. 中华人民共和国公民身份号码共18位,其中前17位为数字本体码,第18位为校验码。
作为尾号的校验码,是按统一的公式计算出来的,校验码的计算方法如下:
①将公民身份号码前17位分别乘以不同的系数,系数依次为7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2。
②将这17位数字和系数相乘的结果相加。
③求用上述相加的和除以11的余数。
④余数只可能有0,1, 2... 9,10共11个数字,分别对应校验码1,0,X,9,8,7,6,5,4,3,2。
例如,公民身份号码34052419800101001X,计算3*7+4*9+0*10+5*5+...+1*2=189,用189除以11得出余数2,对应的校验码是X。
编写 Python程序,判断输入的公民身份号码的校验码是否正确,正确则输出“Yes”,否则输出“No”,请在画线处填入合适的代码。
def judge(s):
   
  if n!=18:
    return False
  res=0
  for i in range(n-1):
   
  res=res%11
  code=m[res]
  if ③   :
    return True
  else:
    return False
v=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] #系数
m= 10X98765432  #余数对应的校验码
s=input()
if ④   :
  print( Yes )
else:
  print( No )
15. 传统节日是中华民族悠久历史文化的重要组成部分,记录了中华民族丰富多彩的社会生活,并蕴含着深厚的历史文化内涵。经过信息课的集思广益,我们以链表的形式罗列了以下传统节日:[["元宵节", 11], ["元旦", 0], ["清明节", 4], ["中秋节", 5], ["端午节", 7], ["国庆节", 9], ["社日节", 12], ["中元节", 3], ["冬至节", -1], ["重阳节", 13], ["寒食节", 2], ["龙抬头", 6], ["上巳节", 10],["下元节", 8]]。请回答下列问题:
(1)当head为1的时候,想要在原始链表a中访问端午节,需要先访问 7 (填数字)个节日。为更全面地了解我国的传统节日,小明上网搜索后,发现了几个问题:
①他发现元旦和国庆节不是我国的传统节日。
②除了上述节日外,他还查阅到春节、七夕、除夕等也都是我国的传统节日。
小明编写程序对链表进行更正,程序如下所示:
a = [["元宵节", 11], ["元旦", 0],["清明节", 4], ["中秋节", 5],["端午节", 7], ["国庆节", 9],["社日节", 12], ["中元节", 3], ["冬至节", -1], ["重阳节", 13],["寒食节", 2],["龙抬头", 6],["上巳节", 10],["下元节", 8]]
head = 1
p = head
while a[p][1] != -1:
   if a[p][0] == "元旦" and p==head:
     head=a[p][1]
   elif ①  :
     a[p][1] = a[a[p][1]][1]
   else:
     p = a[p][1] 
a. append(["春节", head])
②  
p = head
while a[p][0] != "端午节":
   p = a[p][1]
a. append(["七夕", a[p][1]])
a[p][1] = len(a)- 1
while a[p][0] != -1 :
   p = a[p][1]
a. append(["除夕", a[p][1]])
a[p][1] = len(a)- 1
# 遍历新链表
p = head
while a[p][1] != -1:
   print(a[p][0], end="->")
   p = a[p][1]
print(a[p][0])
小明想要设计一个程序,能够根据用户输入的节日名称,输出从该节日开始,一年内的节日顺序。如原始链表为A节->B节->C节->D节->E节->F节。若用户输入C节,则输出结果为C节->D节->E节->F节->A节->B节。
为了实现这个功能,小明在原有的程序基础上,增加了以下Python程序:
user_input = input("请输入一个传统节日名:")
found = False
index = -1
p=head
while a[p][1] != -1:
  if a[p][0] == user_input:
    found = True
    index = p
  p = a[p][1]
if found:
  p = index
  while p != -1:
    print(a[p][0], end="->")
    p = a[p][1]
    if p==-1:
      ③  
    if p==index:
      p=-1
  print()
else:
  print("不是传统节日,请重新输入:")
(2)请在画线处填入合适的代码。
(3)加框处的程序代码有错误,请改正。

展开更多......

收起↑

资源列表