中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2025屆信息技術一輪復習練習:專題11 數組(含答案)

資源下載
  1. 二一教育資源

2025屆信息技術一輪復習練習:專題11 數組(含答案)

資源簡介

專題11 數 組
知識點一 一維數組
1.有如下Python程序段:
a=[12,8,9,18,2,19,28,6]
for i in range(len(a)-1):
if a[i]a[i],a[i+1]=a[i+1],a[i]
p=len(a)-1
for i in range(len(a)-2,0,-1):
if a[i]>a[p]:
p=i
tmp=a[p];a[p]=a[0];a[0]=tmp
執行該程序段后,a列表的值為(  )
A.[28,9,18,8,19,12,6,2]
B.[12,9,18,8,19,28,6,2]
C.[28,9,18,19,8,12,6,2]
D.[2,9,12,8,18,19,6,28]
2.去除數組a中重復數據,部分程序代碼如下
a=[5,6,4,7,5,7,6,5,7,2]
i=0;n=len(a)-1
while i①________
while j<=n:
if a[i]==a[j]:
     if a[i]==a[n]:
       ②________
     else:
       ③________
     n-=1
j+=1
i+=1
print(a[:n+1])
則劃線處應填空的內容是(  )
A.①j=i+1 ②a[j]=a[n] ③j-=1
B.①j=i ②j-=1 ③a[j]=a[n]
C.①j=i+1 ②j-=1 ③a[j]=a[n]
D.①j=i+1 ②i-=1 ③a[j]=a[n]
3.以下Python程序段用以實現在列表a下標為K的位置處插入元素X,而不會導致原有數據的丟失。
x=int(input(″請輸入插入的數據:″))
k=int(input(″請輸入插入位置:″))
a=[10,20,30,40,50,60,70]
a.append(0) #在最后添加一個0,用以插入新數據。
for i in range(len(a)-2,k-1,-1):
①________
a[k]=x
則劃線處填入的代碼為(  )
A.a[i+1]=a[i] B.a[i]=a[i+1]
C.a[i]=a[i-1] D.a[i-1]=a[i]
4.有如下Python程序段:
a=[1,0,0,0,1,0,1]
for i in range(100,0,-1):
flag=True
m=i
for j in range(len(a)-1,-1,-1):
if m % 2!=a[j]:
    flag=False
m//=2
if flag:
ans=i
break
print(ans)
程序運行后,變量ans的值是(  )
A.46 B.58
C.69 D.81
5.有如下的Python程序段:
a=[3,5,7,9,11,13,15]
p=2
for i in range(p+1,len(a)): a[i-1]=a[i] del a[i] #從列表中刪除元素a[i]
則與方框中程序段功能相同的語句是(注:pop()刪除列表最后一個元素,del()刪除列表指定范圍元素)(  )
A.a=a[:p]+a[p+1:] B.a=a[:p]+a[p:]
C.a.pop() D.del a[p:]
6.將一組數保存在列表a中,若a[0]=0,則在列表a中從左到右找到第一個大于零的元素,并與a[0]交換。用Python程序描述,下列選項中不可行的是(  )
A.i=0
while a[i]==0:
 i+=1
a[0],a[i]=a[i],a[0]
B.for i in ranges(5):
if a [i]>0:
break
a[0],a[i]=a[i],a[0]
C.i=0
while True:
if a[i]>0:
break
i+=1
a[0],a[i]=a[i],a[0]
D.for i in a:
if i>0:
break
a[0],a[i]=a[i],a[0]
7.列表a有n(n>=2)個正整數,相鄰兩數的差值為1,0或-1。求相鄰兩數具有相同差值的連續子序列中,子序列元素和的最大值。實現該功能的程序段如下,加框處應填寫的正確代碼是(  )
state=a[1]-a[0]
maxv=t1=t2=a[1]+a[0]
for i in range(2,n):
f=a[i]-a[i-1]
print(maxv)
8.有如下Python程序段:
import random
n=8
a=[random.randint(0,9) for i in range(n)]
for t in range(2):
i=t+1
while iif t % 2==0:
     if a[i-1]a[i+1]:
       i+=2
     else:
       a[i]+=random.randint(0,9)
else:
     if a[i-1]>a[i] and a[i]       i+=2
     else:
       a[i] -=random.randint(0,9)
print(a)
運行后,數組a中的值可能是(  )
A.[8,8,3,5,4,7,3,5]
B.[5,11,10,18,8,9,0,2]
C.[1,2,1,4,0,10,-1,7]
D.[7,12,5,17,9,19,-10,8]
9.下列Python程序段功能為:列表lst中存放的是無重復的正整數,找出其中的最大值max1和次大值max2。
max1=max2=0
for i in range(len(lst)):
if lst[i]>max1:
   ____(1)____
   ____(2)____
elif lst[i]>max2:
   ____(3)____
print(″最大值是:″+str(max1)+″,次大值是:″+str(max2))上述程序段中劃線處可選語句為:
①max1=lst[i] ②max1=max2 ③max2=max1 ④max2=lst[i]
則(1)、(2)、(3)處語句依次可為(  )
A.③①④ B.①③②
C.③①② D.①③④
10.有Python代碼如下:
a=[6,3,7,5]
b=[0,1,2,3]
for i in range(3,0,-1):
if a[b[i]]>a[b[i-1]]:
b[i],b[i-1]=b[i-1],b[i]
print(b)
則運行結果是(  )
A.[3,2,1,0] B.[1,3,0,2]
C.[2,0,3,1] D.[2,0,1,3]
11.有如下Python程序段:
a=[9,1,7,3,8,4]
key=5
pmin=a[0]
for i in range(1,len (a)):
if keypmin=a[i]
print(pmin)
執行該程序段后,輸出的結果是(  )
A.1 B.4
C.7 D.9
12.有如下Python程序,程序執行,輸入數據k之后輸出的結果不正確的是(  )
L=[8,10,9,14,13,4,9,13,10]
k=int(input('請輸入k值:'))
j=0
for i in range(8):
if L[i]<=k:
L[j]=L[i]
j=j+1
print(L[:j])
A.k=8輸出:[8,4]
B.k=9輸出:[8,9,4,9]
C.k=10輸出:[8,10,9,4,9,10]
D.k=13輸出:[8,10,9,13,4,9,13]
13.有如下Python程序:
a=[43,23,87,67,80]
queinfo=[]
for item in a:
k=0
while kif item>=queinfo[k][-1]:
     break
k+=1
if k==len(queinfo):
queinfo.append([item])
else:
queinfo[k].append(item)
print(len(queinfo))
執行該程序段后,輸出的結果是(  )
A.1 B.2
C.3 D.4
14.某學校要組建年級學生會,共有cla個班級,n個人報名,每班報名人數大于等于1人,招募m個人(其中m>cla),錄取規則如下:每班必須有一人錄用(取綜合評分最高),剩余人數按報名學生的綜合評分由高到低錄取。程序運行的界面如圖所示:
輸入要挑選的人數:12 切分線為:95 李疏銅 98 董奧雪 95 李中山 97 舒愷臣 99 羅梓尹 92 謝鄒逸涵 97 方政 95 陶佳怡 99 陳果兒 97 周文瑯 96 陳余雄 95 潘文博 91 王志豪 96 一共挑選人數:13
(1)實現上述功能的Python程序如下,請在劃線處填入合適的代碼。
(2)程序中加框處代碼有錯,請改正。
def search(x): #查找x班級最高分學生的下標
amax=-1;p=-1
for i in range(len(score)):
if ①________:
     amax=score[i]
    p=i
return p
def qfx(m): #查找得分最高的前m個人的得分
b=[0]*101
for i in range(n):
if not in f[i]:
    b[score[i]]+=1
i=100
while b[i]0:
i-=1
b[i]+=b[i+1]
②________
cla=6
#讀取n個人班級、姓名和綜合得分,分別存儲數組bj、xm和score中,代碼略
m=int(input(″輸入要挑選的人數:″))
f=[False]*n #是否選入的標志
for i in range(cla):
t=search(i+1) #1班對應的索引號為0
f[t]=True
fsx= #計算剩下人的切分線
print(″切分線為:″,fsx)
for i in range(n):
if ③________:
f[i]=True
nc=0
for i in range(n):
if f[i]:
nc+=1
#輸出挑選人員名單和人數,代碼略
知識點二 二維數組
1.在一個6行8列的二維數組a中,每個元素所占空間大小為8個字節,從首地址SA開始連續存放在存儲器內。該數組按行優先存儲時,元素a[3][4]的起始地址為(  )
A.SA+224 B.SA+216
C.SA+192 D.SA+176
2.有如下Python程序:
a=[[i+1 for i in range(4)] for j in range(3)]
for i in range(3):
for j in range(4):
a[i][j]=a[i][j]+4*i
則程序執行后,a[2][2]的值為(  )
A.2 B.6
C.8 D.11
3.有如下Python程序段:
n=4
a=[[i*n+j+1 for j in range(n)]for i in range(n)]
for i in range(n//2):
for j in range(1,n,2):
a[i][j],a[n-i-1][n-j-1]=a[n-i-1][n-j-1],a[i][j]
則程序執行后,a[1][1]和 a[2][0]的值分別為(  )
A.6和9 B.8和9
C.11和9 D.11和8
4.有如下Python程序段:
n=4
a=[[j*n+i+1 for i in range(n)]for j in range(n)]
for i in range(1,n,2):
for j in range(n//2):
a[i][j],a[i][n-j-1]=a[i][n-j-1],a[i][j]
則程序執行后,a[1][1]和a[2][1]的值分別為(  )
A.6和10 B.7和10
C.6和11 D.7和11
5.用Python程序對分辨率為500*500的白色背景圖像文件white.jpg(如圖所示)進行處理,代碼如下:
white.jpg
from PIL import Image
im=Image.open(″white.jpg″)
pix=im.load()
width=im.size[0] #獲取圖像寬度值
height=im.size[1] #獲取圖像高度值
for x in range(height):
for y in range(width):
if x<=width//2 and y<=height//2:
     if x%50==0 or y%50==0:
       pix[x,y]=(0,0,0)
elif y> width //2:
     if x==y or width-x-1==y:
       pix[x,y]=(0,0,0)
im.show()
程序執行后的圖像效果是(  )
6.貨輪在裝載貨物時,不相容的物品不能裝在一只箱子中。比如酸類腐蝕物品不宜和堿類腐蝕物品混裝,否則容易造成事故。物品不相容關系用下表表示:
每一種貨物用一個整數編號表示,如第i物品和第j物品不相容,則表第i行j列和第j行i列的值均為1。如1號物品和3號物品不相容,則表中第1行第3列,第3行第1列的值均為1。小明設計了一個Python程序檢查n張貨物裝箱清單是否合理(檢查每張裝箱單中是否有不相容的物品)。列表a依次存儲各裝箱清單中的物品編號(1-m之間的整數),每張清單的物品數量依次存儲在列表b中。如b[0]=3,表示第1張裝箱清單有3件物品。程序運行的部分結果如圖所示。
請回答下列問題:
第1張清單[5,4,6,3,1] 第2張清單[4,3,5] 第3張清單[2,5,1] 第1張清單不合理! 第2張清單不合理!
(1)如物品不相容關系如表所示,有3張裝箱清單,b[0]=3,b[1]=3,b[2]=4,列表a的值依次是6,2,3,1,4,3,4,2,5,1,則不合理的清單數量是________(填數字)。
(2)實現上述功能的Python程序如下,請在劃線處填入合適的代碼。
f=[[int(s[i*6+j]) for j in range(6)]for i in range(6)]
def Check(f,t):
for i in range(len(t)-1):
for j in range(①________):
     if f[t[i]-1][t[j]-1]==1:
       return False
return True
a=[5,4,6,3,1,4,3,5,2,5,1]
m=6
b=[5,3,3]
p=0;k=0;h=[]
for i in b:
c=Check(f,②________)
print(″第″,k+1,″張清單″,a[p:p+i])
if c==False:
h.append(″第″+str(k+1)+″張清單不合理!″)
k+=1
p=p+i
for ③________:
print(i)
7.編寫“矩形面積”程序,實現如下功能:按一定比例隨機生成a(1)至a(100)數組元素的值:0或1(0多1少);將這100個數組元素,按行依次轉化為10×10的二維陣列;當數組元素的值為0時表示沒有障礙物,當數組元素的值為1時有障礙物。尋找陣列中構造出的最大面積的矩形面積和起點坐標。程序運行界面如圖所示。
(1)實現上述功能的Python程序如下,請在劃線處填入合適的代碼。
(2)程序中加框處代碼有錯,請改正。
實現上述功能的Python代碼如下:
def Check(a,x,y): #在數組a中從點x,y開始向右向下查找最大矩形面積
i=x;maxx=0;n=10;jn=10
while iif ①________:
     break
j=y+1;s=0
while j     j+=1
②________
jn=j #更新右邊界,從該位置開始,右邊的區域不能計算面積
if s>maxx:
     maxx=s
i+=1
return maxx
#產生一個10*10的初值為0的二維數組a,并隨機產生若干個障礙物,將數組a中的值修改為1,如圖所示,代碼略
n=0;maxx=0;px=0;py=0;t=0
for i in range(n):
for j in range(n):
if :
     ③________
if t>maxx:
     maxx=t
     px=i+1
     py=j+1
print(″構成的最大面積是:″,maxx,″。起點坐標為:″,px,py)
8.BMP圖片能壓縮的一個原因是圖片本身存在空間冗余,即一幅圖像像素之間往往存在著連貫性。如圖a所示,假設此圖為256色位圖圖像,第一行為16個白色像素,每個像素顏色用一個“FF”表示,存儲信息用十六進制描述為“FF,FF,FF,……FF”(16個“FF”)。壓縮后可以用兩個字節“10FF”來表示,第一個字節“10”表示數量,第二個字節“FF”表示顏色,存儲空間為原來的1/8。
現在對256色位圖圖像信息進行壓縮,算法描述如下:
①像素用十六進制編碼;
②對像素壓縮用兩個字節為一個單元存儲,第一個字節存儲連續相同像素的個數,第二字節存儲此像素的顏色編碼;
③連續相同像素超過255個,用多個單元存儲該連續像素。
小劉根據上述描述設計了如下Python程序:
f=open(″圖片代碼.txt″,″r″)
list1=[];line=f.readline()
while line:
data=line.split()
list1=list1+data
line=f.readline()
print(″原始數據信息″)
print(list1)
print(″---------″)
f.close()
def dtoh(n):
tmp=″″
while n>0:
r=n % 16;n=n//16
if r>9:
     tmp=①________
else:
     tmp=str(r)+tmp
tmp=″0″+tmp #保證轉換結果至少為兩位十六進制數
return tmp[-2:]
n=len(list1) ;ans=[]
list1.append(″OV″)
key=list1[0];pos=1
while poscount=1
while poscount+=1
pos+=1
tim=count//255
rem=count % 255
for i in range(tim):
②________
if rem>0:
ans.append(dtoh(rem)+key)
③________
pos+=1
print(″壓縮數據信息″)
print(ans)
閱讀上述代碼,請回答下列問題:
(1)圖像數據片段“ABABAAAAAAAAAAAAA AAAAAAAD9”經過該程序壓縮后的數據是________。
(2)請在劃線處填入合適的代碼。
9.生成m顆(m<=30)地雷隨機放置在10×10的方格中,方塊中出現地雷用#表示,出現數字,則表示在其周圍相鄰的方塊中共有多少顆地雷,中間位置有8個方塊相鄰,邊上位置有5個方塊相鄰,角上位置有3個方塊相鄰。程序運行的結果如圖所示:
實現上述功能的Python程序如下,請在劃線處填入合適的代碼。
def Check(a,x,y): #統計第x行第y列四周雷的個數
count=0
for i in range(x-1,x+2):
for j in range(y-1,y+2):
     if ①________:
       if a[i][j]==9:
        count+=1
return count
import random
n=10
a=[[0 for j in range(10)]for i in range(10)]
m=int(input(″輸入地雷的個數″))
i=0
while ix=random.randint(0,9)
y=random.randint(0,9)
if a[x][y]==0:
a[x][y]=9
②________
for i in range(n):
for j in range(n):
if a[i][j]!=9:
    ③________
for i in range(n):
s=″″
for j in range(n):
if a[i][j]==9:
     s=s+″# ″
else:
     s=s+str(a[i][j])+″ ″
print(s)
專題11 數 組
知識點一
1.A [第一個循環實現從第1個數據開始與他相鄰的數據進行比較,如果他后面的數小就進行交換,結果為[12,9,18,8,19,28,6,2]。第2個循環的功能是最大值的初始位置在最后,若找到比最大值大的,更新最大值的位置,因此最大值位置為5,再將最大值與第一個數進行交換。]
2.C [變量i從0開始遍歷,程序的功能是讓[0,i]這個區間內數據不會重復,因此指針j需從i后面的第1個位置i+1開始遍歷,若有重復(a[i]和a[j]相等),將最后一個數據a[n]覆蓋a[j],數據個數n將減少一個。但a[n]也可能等于a[i],即a[i]和新的a[j]相等,只是將個數減少一個,j重新遍歷一次。]
3.A [需從原數組最后一個位置開始,將數據向后移動,即把當前位置值賦值給他后面位置。]
4.C [一個數除2的余數分別等于列表a從后向前的數,那么就將列表a看成二進制數各個位上數字,轉換成十進制數后為69。]
5.A [框中程序相當于把索引P位置以后字符依次前移一個位置,然后把最后一個元素刪除,答案A實現同樣功能。B內容不變,C只刪除了最后一個元素,D則把P及以后元素全部刪除了。]
6.D [本題考查循環結構。D選項中變量i已經是列表a中的元素,無法實現兩個位置數據交換。]
7.D [state是兩個數的差值,當兩個差值不相等時進行最值比較,由于循環了n-2次,最后一次的最值在循環時沒有比到,在循環結束后需再一次進行最值比較。]
8.C [本題考查Python循環與數組的應用。a數組初始有8個[0,9]元素。中間元素比兩邊元素大時往后移動兩個位置,否則重新產生a[i]的值,也就是索引1、3、5位置上的值都是比兩邊相鄰元素大。第二次循環中間元素比兩邊小時才往后移兩個位置,否則重新產生a[i]的值,也就是索引2、4、6位置上的值都是比兩邊相鄰元素小。]
9.A [本題考查最值查找。找到一個最大值,原最大值為現在次大值。若lst[i]大于max2,需更新次大值。]
10.D [遍歷數組b中數據,如果數組b作為索引下標,其對應數組a中值大于前面的值,進行交換,即向后入前遍歷,升序排列后并交換索引。]
11.C [找一個比key大的最小值。]
12.C [本題考查循環和分支結構的綜合應用。綜合分析程序可得for循環用循環變量i作為位置來遍歷列表L的前八位元素,當相應位置上的值不大于輸入的的k值時,將i位置上的元素賦值到j位置上,并且更新j的的值,若是i位置上的值大于輸入的的k值,則不做任何處理,因此可以大致得到該程序的作用是將列表L前八位元素中不大于k的值依次前移并且輸出新列表。C選項中最后一個10的索引值為8,訪問不到,因此錯誤。]
13.B [queinfo初值為空,語句queinfo.append([item])是將一個列表添加到queinfo,因此他是一個二維數組。遍歷列表a,在queinfo數組從第0個元素開始,與每個元素最后一個數據項進行比較,如果大于等于元素最后一個數據項,結束比較,此時j肯定在0至len(queinfo)-1之間,若j的值為len(queinfo),說明該元素比queinfo中每個元素的最后一個值均小,則新成一組。queinfo的值為[[43,87],[23,67,80]]。]
14.(1)①score[i]>amax and bj[i]==x ②return I ③not f[i] and score[i]>=fsx (2)qfx(m-cla)
解析 本題考查自定義函數的應用。(1)①search函數查找x班級最高分學生的下標,因此比較的關鍵有x班,且該班學生的得分兩個條件。②qfx函數查找得分最高的前m個人的得分。在for i in range(n)循環中,統計每個分數的人數。從100分向下枚舉,如果得分前面的得分總人數和小于m人,繼續向下查找,當前面的人數累加和等于m時,表示正好有m個人符合條件,累加和大于m時,表示最低分數有多個相同的人。因此返回的切分線為i。③前面已經挑選了cla個人,將找出剩下m-cla個人,因此條件是f的值為False且分數線大于等于切分線。(2)前面已經選了cla個人,將找出剩下m-cla個人,因此將計算m-cla個人的切分線。
知識點二
1.A [本題考查二維數組空間相關知識點。元素a[3][4]的起始地址為SA+8*(24+4)=SA+224。]
2.D [創建一個每行均為1,2,3,4的3行二維數組,遍歷每行每列,對每個數據項加上4*i,因此a[2][2]原值為3,再加8,值為11。]
3.D [創建一個[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]的二維數組,遍歷前2行,對其中偶數列按對稱行和對稱列進行交換。a[1][1]是原a[2][2]的值,a[2][0]是原a[1][3]的值。]
4.B [本題考查二維數組。先生成一個1-4,5-8,9-12,13-16的4行4列的矩陣。外循環for i in range(1,n,2)表示對偶數行進行操作,j和n-j-1表示兩個列坐標,且是左右對稱的,行坐標保持不變,因此程序的功能是偶數行的數據進行左右水平翻轉,奇數行保持不變。]
5.B [條件x<=width//2 and y<=height//2成立,表示坐標x,y位于左上角4分之1區域。若條件x==y or width-x-1==y成立,表示下半部分的兩條對角線坐標,將這些區域的值賦值為黑色。]
6.(1)2 (2)①i+1,len(t) ②a[p:p+i] ③i in h
解析 本題考查二維數組的相關性質。(1)第2張中1和3不相容。(2)①第i物品和第j物品,為了避免組合重復,j從i+1到最后。②p的初值為0,表示第1張訂單的開始位置,訂單數量存儲在數組b中,那么訂單的結束位置為p+i-1。③從語句h.append(″第″+str(k+1)+″張清單不合理!″)來看,列表h中存儲的是不合理的訂單情況。
7.(1)①a[i][y]==1 ②s=(i-x+1)*(j-y) ③t=Check(a,i,j) (2)a[i][j]==0
解析 本題考查二維數組的性質。(1)①變量i從當前行開始,先向右遍歷列,若碰到障礙物,語句jn=j是為了更新右邊界,從該位置開始,右邊的區域不能計算面積。接著再向下遍歷,如果碰到i行的第1列就是障礙物,要結束循環,因此第i行第y列是障礙物。②面積是行和列構成。③調用自定義函數來計算最大面積t=Check(a,i,j)。(2)從第0行第0列這個點開始遍歷,如果該點不是障礙物,開始尋找最大面積。
8.(1)02AB0AAA01D9 (2)①chr(r+55)+tmp ②ans.append(″FF″+key)或ans+=[″FF″+key] ③key=list1[pos]
解析 (1)對像素壓縮用兩個字節為一個單元存儲,第一個字節存儲連續相同像素的個數,第二字節存儲此像素的顏色編碼。(2)①大于9的轉換成A-F之間的字母。②將壓縮代碼添加到ans中。③更新下一個連續字母key。
9.①0<=i解析 本題考查二維數組的相關性質。① Check函數統計第x行第y列四周雷的個數,變量i,j表示從他上一行前一列到下一行的后一列區域,但這些區域要在矩陣的范圍內。②變量i表示雷的個數,每增加一個雷,x的值將增加1。③若當前位置不是雷,調用函數統計四周雷的個數a[i][j]=Check(a,i,j)。

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 屏东县| 通海县| 化州市| 鄂伦春自治旗| 额济纳旗| 丰宁| 海伦市| 广东省| 怀集县| 宁武县| 三原县| 新乡县| 威海市| 平利县| 隆子县| 昆明市| 溧阳市| 英吉沙县| 固始县| 平安县| 大石桥市| 南溪县| 兰州市| 巴彦县| 福安市| 无棣县| 佛山市| 驻马店市| 长寿区| 封丘县| 兴城市| 洱源县| 馆陶县| 旅游| 玉溪市| 瓦房店市| 云和县| 金乡县| 曲沃县| 普陀区| 兴城市|