一、数组及其基本操作(A)课时练(学生版+教师版) 2025-2026学年高中信息技术 选择性必修1 数据与数据结构

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

一、数组及其基本操作(A)课时练(学生版+教师版) 2025-2026学年高中信息技术 选择性必修1 数据与数据结构

资源简介

(共23张PPT)
一、数组及其基本操作(A)
第二章 数组与链表
信息技术 选择性必修1 数据与数据结构
必备知识练
1. (2023·杭州周边重点学校联考)有如下Python程序段:
a=[18,2,-1,-7,16,-2,12,8]
k1,k2=1,1
for i in range(len(a)):
  if a[i]>a[k1]:
    k2=k1;k1=i
  elif a[i]>a[k2]:
    k2=i
该程序段运行后,变量k1,k2的值分别为(  )
A. 2,5   B. 4,0
C. 5,2 D. 0,4
【解析】 本题考查程序数组知识。分析代码可知,k1是最大数的下标,k2是第二大数的下标,D正确。
D
2. 有一组正整数,要求对其中的奇数和偶数进行交换。交换后奇数在前,偶数在后,并保持相对顺序不变。请在画线处填入合适的代码。下列选项中,正确的是(  )
import random
a=[];n = 10
for i in range(n):
  a.append(random.randint(1,100))
b=[0]*n
num=0
k=0
while k   if ① :
    b[num]=a[k]
    num+=1
  else:
     ②
  k+=1
for j in ③ :
  a[j]=b[j- n + num]
print(a)
A. ①a[k]%2==0 ②a[k-num]=a[k] ③range(n-num,n)
B. ①a[k]%2==1  ②b[k-num]=a[k] ③range(n-num-1,n)
C. ①a[k]%2==1 ②a[k-num]=a[k] ③range(n-num-1,n)
D. ①a[k]%2==0 ②b[k-num]=a[k] ③range(n-num,n)
A
【解析】 本题考查列表及排序知识。本题实质是列表a中的原始数据,借助于列表b(用于存储偶数),而处理后列表a的前段用于存储原始数据中的奇数。最后再将列表b中的偶数存到列表a的后段。其中变量num记录偶数的个数,k记录当前读取原列表a中的位置,
k-num记录向原列表a存取奇数的位置,n-num则表示奇数的个数。例如n=6时,原始数据列表a是[1,4,2,7,5,8]。先将“1,7,5”存入列表a的前三位,而b=[4,2,8,0,0,0],后面的循环for j in range(n-num,n),其作用是将列表b中的偶数再按顺序写入列表a的后半段,此时num=3,n=6,将b[j-n+num]存入a[j],因此最后就得到a列表为[1,7,5,4,2,8],从而实现了目的。A正确。
3. (2024·嵊州模拟)数组元素a[0]至a[n-1]依次存放着n个数据,现需要将下标为
x(0≤x≤n-1)的元素在逻辑上删除,例如,n为5,数组a为[1,3,5,7,9],x为2,进行删除操
作后,输出[1,3,7,9]。实现该功能的程序段如下,画线处应填入的代码是(  )
  a=[1,3,5,7,9]
  n=len(a)
  x=2
  for i in range( ① ):
     ②  
  print(a[:-1])
A. ①x,n ②a[i-1]=a[i]
B. ①n-x ②a[i-1]=a[i]
C. ①x,n ②a[i]=a[i+1]
D. ①x-n,-1 ②a[i]=a[i+1]
【解析】 本题考查数组元素删除操作。要从数组中删去索引为2的值,需要将[x+1,n-1]范围内的值向前移动1位,②处为移数操作,若为a[i-1]=a[i],则①处应填x+1,n,A、B错误。②若为a[i]=a[i+1],①处应填:x,n-1,C错误。那么应该是采用了负索引,D正确。
D
4. 有n盏灯,一开始全部处于关闭状态,现有n个人对这些灯进行操作:第1个人将所有灯打开,第2个人将所有编号为2的倍数的灯全部关闭,第3个人对所有编号为3的倍数的灯进行反向操作……直到第n个人操作完成。该过程用如下的Python程序段进行模拟:
n=int(input())
a=[0]*(n+1) #数组a初始值全为0,灯的状态:0为关,1为开
 for i in range(1,n+1):
   for j in range(i,n+1):
    if  ① :
       ②
画线处应填入的代码是(  )
A. ① j % i == 0 ② a[j] = 1 - a[j] 
B. ① i % j == 0 ② a[j] = 1 - a[j]
C. ① j % i == 0 ② a[i] = 1 - a[i]
D. ① i % j == 0 ② a[i] = 1 - a[i]
【解析】 本题考查数组知识。根据代码i、j的范围可知,外循环i枚举人,内循环j枚举灯,灯的状态由a[j]来记录,A正确。
A
5. (2024·杭州二模)有如下Python程序段:
#随机产生5个整数,存储在列表a中
for i in range(1,5):
  k=a[i]
  j=i-1
  while j >= 0 and abs(a[j]-2)>abs(k-2):
    a[j+1]=a[j]
    j-=1
  a[j+1]=k
执行该程序段后,列表a的值可能是(  )
A. [-5,-2,4,0,1] B. [3,-1,0,2,-3]
C. [1,2,3,4,5] D. [0,4,0,-2,-4]
D
【解析】 本题考查插入排序思想。本题是插入排序升序的典型代码,变式在于比较的不是原始数据,而是abs(k-2)与abs(a[j]-2),最终是按abs(a[j]-2)升序排序,即最后每个数据项减2的绝对值应为升序。4个选项结果如下表所示:
A B C D
原始值 -5,-2,4, 0,1 3,-1,0, 2,-3 1,2,3, 4,5 0,4,0,
-2,-4
-2 -7,-4,2, -2,-1 1,-3,-2, 0,-5 -1,0,1, 2,3 -2,2,-2,
-4,-6
求绝对值 7,4,2,2,1 1,3,2,0,5 1,0,1,2,3 2,2,2,4,6
综上所述,D正确。
6. (2024·温州三模)有如下Python程序段:
from random import randint
s,i,ans =1,0,0
k=randint(10,24)  #randint(10,24)随机生成10到24(含10和24)之间的整数
for j in range(len(nums)):
  s=s*nums[j]
  while s >=k:
    s=s/nums[i]
    i +=1
  ans+=j-i+1
若nums的值为[2,3,4,5],执行该程序段后,变量ans的值不. 可. 能. 是(  )
A. 4 B. 5
C. 6 D. 7
A
【解析】 本题考查数组的相关知识。由于k的取值最大为24,s累乘=2*3*4=24,此时ans累加已经等于6。当s大于等于k的时候i才会加1,s=24/2=12*5=60/3=20,i等于1和2,所以ans=6有可能;若取20,s=20>=20会再增加一次i=3,此时ans=6-3-3+1,故7也有可能;再考虑取最小值k=10的情况,ans的值为5。A符合题意。
7. 有如下Python程序段:
a=[0]*10
for i in range(16):
  j=0;a[j]=a[j]+1
  while a[j]==3:
    a[j]=0
    j=j+1
    a[j]=a[j]+1
执行该程序段后,数组a中各元素之和为(  )
A. 2 B. 3
C. 4 D. 5
C
【解析】 本题考查两重循环和数组运算的知识。经过模拟可知,执行该程序段后,a[0]的值为1,a[1]的值为2,a[2]的值为1,其他元素值均为0,故各元素之和的值为4。该程序段的本质是外循环一共进行15次,而每三次外循环都会触发一次内循环,产生进位,故本题的本质是模拟了三进制的进位规则。(121)3=1*32+2*31+1*30=15,从而得到验证。C正确。
关键能力练
8. 有如下Python程序段:
import random
a=[0]*6
for i in range(1,6):
  tmp=random.randint(5,24)
  if tmp%2==0 or i%2==1:
    a[i]=a[i-1]+tmp
print(a)
运行程序后,数组a的值可能的是(  )
A. [0, 9, 29, 50, 0, 20] B. [8, 20, 44, 62, 86, 109]
C. [0, 8, 14, 21, 39, 0] D. [0, 10, 24, 43, 0, 30]
【解析】 本题考查数组及随机数知识。分析代码,a[0]元素一定是0,B错误。奇数位上的数一定不为0,C错误。和前面偶数位上的数相差不会超过24,D错误。
A
9. 有如下Python程序段:
a = [0]*10
s = "2024.09.19 Good Luck!"; n = 0
for i in range(len(s)):
  if "0"<=s[i] <= "9":
    m = ord(s[i])- ord("0")
    a[m] = a[m] + 1  
for i in range(10):
  if a[i] > 1:
    n = n + 1
print(n)
执行该程序段后,输出n的值为(  )
A. 2   B. 3
C. 4   D. 5
【解析】 本题考查循环和数组运算知识。由代码可知,程序的目的是统计字符串s中两个以上的数字字符数量(不统计其他字符),算法中使用了桶的概念。观察可知,数字字符“0”“2”“9”的数量都在两个以上,故答案是3,B正确。
B
10. 有如下Python程序段:
from random import randint
d=[]; k=0; i=0
while i<=4:
  b=randint(0,9)  # 随机产生一个[0,9]之间的整数
  if b not in d:
    d.append(b)  # 在数组a末尾增加元素b
    i+=1
for i in range(len(d)):
  if d[i]%2==0:
    k+=1
  else:
    d[i-k]=d[i]
print(d)
执行该程序段后,输出的数组d不. 可. 能. 为(  )
A. [7,9,1,1,8] B. [7,5,9,5,9]
C. [9,7,4,7,1] D. [5,1,0,5,1]
【解析】 本题考查随机数及逻辑判断知识。由while循环代码可知,数组d是一个由5个元素组成的位于[0,9]之间的不重复数据,其中k记录偶数的个数,代码d[i-k]=d[i]的意思是,若a[i]是奇数则将覆盖前面的偶数元素。[9,7,4,7,1]中有两个7,说明已经有一个偶数被覆盖,然后又有元素4,故有两个偶数,k=2,这样最后的奇数元素1一定将元素4覆盖,C符合题意。
C
11. 有一个整型的数组a,要求删除其中的某个元素x(若存在重复的数据,则删除第一
个),实现上述功能的Python代码如下,运行界面如图所示。
a=[17,10,13,1,9]
print("原始数据为:",a)
x = int(input("请输入待删除数:"))
n=len(a)-1
k = 0
for i in range(①__________):
  if ②__________:
    k = i
    break
for i in range(k,n):
  ③_______________
a=a[:n]
print("删除后数据:",a)
请回答下列问题:
(1)请在画线处填入合适的代码。
(2)若删除加框处的代码,则程序功能上的改变是___________________________________。
原始数据:[17,10,13,1,9]
请输入待删除数:13
删除后数据:[17,10,1,9]
n+1
a[i]==x
a[i]=a[i+1]
若有重复数据,删除的是最后一个数据
【解析】 本题考查数组数据的删除。(1)若要删除数组中间某个位置的数据,需要移动较多的数据(若删除数组末尾的数据,则不需要移动其他数据)。①由下文代码“k=i”可知,k应该是待删除数据x在数组a中的索引号,而n=len(a)-1,所以遍历的范围应该是0~n,故答案是n+1。②此处查找待删除数x在数组a中的索引号,故答案是a[i]==x。③此处是删除索引号为k的数据的核心代码,将k后面的数据依次往前覆盖,故代码是a[i]=a[i+1]。(2)若删除break语句,其他功能不变,但找到重复数据的最后一个索引号k,故删除的是最后一个数据。
12. 某农科院将试验田自左向右分为 m块地(编号依次为0~m-1),每块地配置一个喷灌装置。灌溉系统定期测量所有地块的水量(非负整数),然后自左起地块开始检查:若某地块当前水量值小于1则开启喷灌:自身水量增加2、左右相邻地块水量各增加1,随后关闭喷灌装置;接着进行下去,直到m块地的水量均不小于1。
(1)若m=12,灌溉系统某次测量中,编号0~11的各地块的水量值依次为0,0,1,2,1,0,1,
0,2,1,1,0,则需开启喷灌装置的数量为__________。
4
(2)模拟上述功能的部分Python程序如下,请在画线处填入合适的代码。
while True:
  #定期测量编号为0~m-1的各块地的水量值,依次存入a[0]~a[m-1]
  i = 0
  while i < n:
    if ①__________:
     #开启灌溉,代码略
    if i ==0:
      a[i + 1] += 1
    elif i < n - 1:
      a[i - 1] += 1
      a[i + 1] += 1
    else :
      a[i - 1] += 1
     ②__________________
     #关闭喷灌装置,代码略
    i = i + 2
   else:
     ③____________
a[i]==0
a[i]=a[i]+2
i=i+1
【解析】 本题考查基础python算法。(1)结合题意可知,从前向后遍历数组,遇到0时开启灌溉装置,数组有5个0,除了第2个0不会开启,其余都会,故4次。(2) ①依题意,当a[i]==0时开启灌溉。②在处理完左右相邻数据后,“自身水量增加2”,此处填a[i]=a[i]+2。③若开启灌溉装置,由于相邻数据都加了1,故可直接向右跳两步;若不开启,则向右跳一步,故答案是i=i+1。一、数组及其基本操作(A)
1. (2023·杭州周边重点学校联考)有如下Python程序段:
a=[18,2,-1,-7,16,-2,12,8]
k1,k2=1,1
for i in range(len(a)):
  if a[i]>a[k1]:
    k2=k1;k1=i
  elif a[i]>a[k2]:
    k2=i
该程序段运行后,变量k1,k2的值分别为( D )
A. 2,5   B. 4,0
C. 5,2 D. 0,4
【解析】 本题考查程序数组知识。分析代码可知,k1是最大数的下标,k2是第二大数的下标,D正确。
2. 有一组正整数,要求对其中的奇数和偶数进行交换。交换后奇数在前,偶数在后,并保持相对顺序不变。请在画线处填入合适的代码。下列选项中,正确的是( A )
import random
a=[];n = 10
for i in range(n):
  a.append(random.randint(1,100))
b=[0]*n
num=0
k=0
while k   if   ①   :
    b[num]=a[k]
    num+=1
  else:
      ②  
  k+=1
for j in   ③  :
  a[j]=b[j- n + num]
print(a)
A. ①a[k]%2==0 ②a[k-num]=a[k] ③range(n-num,n)
B. ①a[k]%2==1  ②b[k-num]=a[k] ③range(n-num-1,n)
C. ①a[k]%2==1 ②a[k-num]=a[k] ③range(n-num-1,n)
D. ①a[k]%2==0 ②b[k-num]=a[k] ③range(n-num,n)
【解析】 本题考查列表及排序知识。本题实质是列表a中的原始数据,借助于列表b(用于存储偶数),而处理后列表a的前段用于存储原始数据中的奇数。最后再将列表b中的偶数存到列表a的后段。其中变量num记录偶数的个数,k记录当前读取原列表a中的位置,k-num记录向原列表a存取奇数的位置,n-num则表示奇数的个数。例如n=6时,原始数据列表a是[1,4,2,7,5,8]。先将“1,7,5”存入列表a的前三位,而b=[4,2,8,0,0,0],后面的循环for j in range(n-num,n),其作用是将列表b中的偶数再按顺序写入列表a的后半段,此时num=3,n=6,将b[j-n+num]存入a[j],因此最后就得到a列表为[1,7,5,4,2,8],从而实现了目的。A正确。
3. (2024·嵊州模拟)数组元素a[0]至a[n-1]依次存放着n个数据,现需要将下标为x(0≤x≤n-1)的元素在逻辑上删除,例如,n为5,数组a为[1,3,5,7,9],x为2,进行删除操作后,输出[1,3,7,9]。实现该功能的程序段如下,画线处应填入的代码是( D )
  a=[1,3,5,7,9]
  n=len(a)
  x=2
  for i in range(  ①  ):
       ②    
  print(a[:-1])
A. ①x,n ②a[i-1]=a[i]
B. ①n-x ②a[i-1]=a[i]
C. ①x,n ②a[i]=a[i+1]
D. ①x-n,-1 ②a[i]=a[i+1]
【解析】 本题考查数组元素删除操作。要从数组中删去索引为2的值,需要将[x+1,n-1]范围内的值向前移动1位,②处为移数操作,若为a[i-1]=a[i],则①处应填x+1,n,A、B错误。②若为a[i]=a[i+1],①处应填:x,n-1,C错误。那么应该是采用了负索引,D正确。
4. 有n盏灯,一开始全部处于关闭状态,现有n个人对这些灯进行操作:第1个人将所有灯打开,第2个人将所有编号为2的倍数的灯全部关闭,第3个人对所有编号为3的倍数的灯进行反向操作……直到第n个人操作完成。该过程用如下的Python程序段进行模拟:
n=int(input())
a=[0]*(n+1) #数组a初始值全为0,灯的状态:0为关,1为开
 for i in range(1,n+1):
   for j in range(i,n+1):
    if   ①  :
        ②  
画线处应填入的代码是( A )
A. ① j % i == 0 ② a[j] = 1 - a[j] 
B. ① i % j == 0 ② a[j] = 1 - a[j]
C. ① j % i == 0 ② a[i] = 1 - a[i]
D. ① i % j == 0 ② a[i] = 1 - a[i]
【解析】 本题考查数组知识。根据代码i、j的范围可知,外循环i枚举人,内循环j枚举灯,灯的状态由a[j]来记录,A正确。
5. (2024·杭州二模)有如下Python程序段:
#随机产生5个整数,存储在列表a中
for i in range(1,5):
  k=a[i]
  j=i-1
  while j >= 0 and abs(a[j]-2)>abs(k-2):
    a[j+1]=a[j]
    j-=1
  a[j+1]=k
执行该程序段后,列表a的值可能是( D )
A. [-5,-2,4,0,1] B. [3,-1,0,2,-3]
C. [1,2,3,4,5] D. [0,4,0,-2,-4]
【解析】 本题考查插入排序思想。本题是插入排序升序的典型代码,变式在于比较的不是原始数据,而是abs(k-2)与abs(a[j]-2),最终是按abs(a[j]-2)升序排序,即最后每个数据项减2的绝对值应为升序。4个选项结果如下表所示:
A B C D
原始值 -5,-2,4, 0,1 3,-1,0, 2,-3 1,2,3, 4,5 0,4,0, -2,-4
-2 -7,-4,2, -2,-1 1,-3,-2, 0,-5 -1,0,1, 2,3 -2,2,-2, -4,-6
求绝对值 7,4,2,2,1 1,3,2,0,5 1,0,1,2,3 2,2,2,4,6
综上所述,D正确。
6. (2024·温州三模)有如下Python程序段:
from random import randint
s,i,ans =1,0,0
k=randint(10,24)  #randint(10,24)随机生成10到24(含10和24)之间的整数
for j in range(len(nums)):
  s=s*nums[j]
  while s >=k:
    s=s/nums[i]
    i +=1
  ans+=j-i+1
若nums的值为[2,3,4,5],执行该程序段后,变量ans的值不可能是( A )
A. 4 B. 5
C. 6 D. 7
【解析】 本题考查数组的相关知识。由于k的取值最大为24,s累乘=2*3*4=24,此时ans累加已经等于6。当s大于等于k的时候i才会加1,
s=24/2=12*5=60/3=20,i等于1和2,所以ans=6有可能;若取20,s=20>=20会再增加一次i=3,此时ans=6-3-3+1,故7也有可能;再考虑取最小值k=10的情况,ans的值为5。A符合题意。
7. 有如下Python程序段:
a=[0]*10
for i in range(16):
  j=0;a[j]=a[j]+1
  while a[j]==3:
    a[j]=0
    j=j+1
    a[j]=a[j]+1
执行该程序段后,数组a中各元素之和为( C )
A. 2 B. 3
C. 4 D. 5
【解析】 本题考查两重循环和数组运算的知识。经过模拟可知,执行该程序段后,a[0]的值为1,a[1]的值为2,a[2]的值为1,其他元素值均为0,故各元素之和的值为4。该程序段的本质是外循环一共进行15次,而每三次外循环都会触发一次内循环,产生进位,故本题的本质是模拟了三进制的进位规则。(121)3=1*32+2*31+1*30=15,从而得到验证。C正确。
8. 有如下Python程序段:
import random
a=[0]*6
for i in range(1,6):
  tmp=random.randint(5,24)
  if tmp%2==0 or i%2==1:
    a[i]=a[i-1]+tmp
print(a)
运行程序后,数组a的值可能的是( A )
A. [0, 9, 29, 50, 0, 20]
B. [8, 20, 44, 62, 86, 109]
C. [0, 8, 14, 21, 39, 0]
D. [0, 10, 24, 43, 0, 30]
【解析】 本题考查数组及随机数知识。分析代码,a[0]元素一定是0,B错误。奇数位上的数一定不为0,C错误。和前面偶数位上的数相差不会超过24,D错误。
9. 有如下Python程序段:
a = [0]*10
s = "2024.09.19 Good Luck!"; n = 0
for i in range(len(s)):
  if "0"<=s[i] <= "9":
    m = ord(s[i])- ord("0")
    a[m] = a[m] + 1  
for i in range(10):
  if a[i] > 1:
    n = n + 1
print(n)
执行该程序段后,输出n的值为( B )
A. 2   B. 3
C. 4   D. 5
【解析】 本题考查循环和数组运算知识。由代码可知,程序的目的是统计字符串s中两个以上的数字字符数量(不统计其他字符),算法中使用了桶的概念。观察可知,数字字符“0”“2”“9”的数量都在两个以上,故答案是3,B正确。
10. 有如下Python程序段:
from random import randint
d=[]; k=0; i=0
while i<=4:
  b=randint(0,9)  # 随机产生一个[0,9]之间的整数
  if b not in d:
    d.append(b)  # 在数组a末尾增加元素b
    i+=1
for i in range(len(d)):
  if d[i]%2==0:
    k+=1
  else:
    d[i-k]=d[i]
print(d)
执行该程序段后,输出的数组d不可能为( C )
A. [7,9,1,1,8] B. [7,5,9,5,9]
C. [9,7,4,7,1] D. [5,1,0,5,1]
【解析】 本题考查随机数及逻辑判断知识。由while循环代码可知,数组d是一个由5个元素组成的位于[0,9]之间的不重复数据,其中k记录偶数的个数,代码d[i-k]=d[i]的意思是,若a[i]是奇数则将覆盖前面的偶数元素。[9,7,4,7,1]中有两个7,说明已经有一个偶数被覆盖,然后又有元素4,故有两个偶数,k=2,这样最后的奇数元素1一定将元素4覆盖,C符合题意。
11. 有一个整型的数组a,要求删除其中的某个元素x(若存在重复的数据,则删除第一个),实现上述功能的Python代码如下,运行界面如图所示。
原始数据:[17,10,13,1,9]
请输入待删除数:13
删除后数据:[17,10,1,9]
a=[17,10,13,1,9]
print("原始数据为:",a)
x = int(input("请输入待删除数:"))
n=len(a)-1
k = 0
for i in range(① n+1 ):
  if ② a[i]==x :
    k = i
    break
for i in range(k,n):
  ③ a[i]=a[i+1] 
a=a[:n]
print("删除后数据:",a)
请回答下列问题:
(1)请在画线处填入合适的代码。
(2)若删除加框处的代码,则程序功能上的改变是 若有重复数据,删除的是最后一个数据 。
【解析】 本题考查数组数据的删除。(1)若要删除数组中间某个位置的数据,需要移动较多的数据(若删除数组末尾的数据,则不需要移动其他数据)。①由下文代码“k=i”可知,k应该是待删除数据x在数组a中的索引号,而n=len(a)-1,所以遍历的范围应该是0~n,故答案是n+1。②此处查找待删除数x在数组a中的索引号,故答案是a[i]==x。③此处是删除索引号为k的数据的核心代码,将k后面的数据依次往前覆盖,故代码是a[i]=a[i+1]。(2)若删除break语句,其他功能不变,但找到重复数据的最后一个索引号k,故删除的是最后一个数据。
12. 某农科院将试验田自左向右分为 m块地(编号依次为0~m-1),每块地配置一个喷灌装置。灌溉系统定期测量所有地块的水量(非负整数),然后自左起地块开始检查:若某地块当前水量值小于1则开启喷灌:自身水量增加2、左右相邻地块水量各增加1,随后关闭喷灌装置;接着进行下去,直到m块地的水量均不小于1。
(1)若m=12,灌溉系统某次测量中,编号0~11的各地块的水量值依次为0,0,1,2,1,0,1,0,2,1,1,0,则需开启喷灌装置的数量为 4 。
(2)模拟上述功能的部分Python程序如下,请在画线处填入合适的代码。
while True:
  #定期测量编号为0~m-1的各块地的水量值,依次存入a[0]~a[m-1]
  i = 0
  while i < n:
    if ① a[i]==0 :
     #开启灌溉,代码略
    if i ==0:
      a[i + 1] += 1
    elif i < n - 1:
      a[i - 1] += 1
      a[i + 1] += 1
    else :
      a[i - 1] += 1
     ② a[i]=a[i]+2 
     #关闭喷灌装置,代码略
    i = i + 2
   else:
     ③ i=i+1 
【解析】 本题考查基础python算法。(1)结合题意可知,从前向后遍历数组,遇到0时开启灌溉装置,数组有5个0,除了第2个0不会开启,其余都会,故4次。(2) ①依题意,当a[i]==0时开启灌溉。②在处理完左右相邻数据后,“自身水量增加2”,此处填a[i]=a[i]+2。③若开启灌溉装置,由于相邻数据都加了1,故可直接向右跳两步;若不开启,则向右跳一步,故答案是i=i+1。

展开更多......

收起↑

资源列表