浙江版高中信息技術(shù)復(fù)習(xí)練習(xí)專題八數(shù)據(jù)結(jié)構(gòu)與算法課件_第1頁
浙江版高中信息技術(shù)復(fù)習(xí)練習(xí)專題八數(shù)據(jù)結(jié)構(gòu)與算法課件_第2頁
浙江版高中信息技術(shù)復(fù)習(xí)練習(xí)專題八數(shù)據(jù)結(jié)構(gòu)與算法課件_第3頁
浙江版高中信息技術(shù)復(fù)習(xí)練習(xí)專題八數(shù)據(jù)結(jié)構(gòu)與算法課件_第4頁
浙江版高中信息技術(shù)復(fù)習(xí)練習(xí)專題八數(shù)據(jù)結(jié)構(gòu)與算法課件_第5頁
已閱讀5頁,還剩170頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

高考

技術(shù)第一部分信息技術(shù)專題八數(shù)據(jù)結(jié)構(gòu)與算法浙江省專用考點一數(shù)據(jù)結(jié)構(gòu)與算法效率1.(2024屆發(fā)展共同體聯(lián)考,12)以下兩個程序段的功能相同,實現(xiàn)的功能是:刪除列表a

(元素個數(shù)為n)中的重復(fù)元素(只保留一個),并將剩下的元素降序輸出。#程序段①#對列表a進(jìn)行降序排序,代碼略i=1whilei<n:ifa[i]==a[i-1]:forjinrange(i+1,n):a[j-l]=a[j]i-=1;n-=1i+=1#輸出列表元素a[0]到a[n-1],代碼略#程序段②max_num=max(a)#求出列表a中的最大值max_numb=[0]*(max_num+1)foriinrange(0,n):b[a[i]]+=1foriinrange(max_num,0,-1):ifb[i]>0:print(i,end="")關(guān)于上述兩個程序段及功能的描述,正確的是

(

)A.同樣的數(shù)據(jù)規(guī)模,兩個程序段的時間效率一樣B.程序段①加框處語句是否執(zhí)行不受列表a原數(shù)據(jù)的影響C.程序段②加框處語句修改為“foriinrange(1,max_num+1)”,輸出結(jié)果不變D.在實現(xiàn)該功能的過程中,程序段②比程序段①需要更多的存儲空間答案

D

2.常見算法時間復(fù)雜度函數(shù)的增長率如圖所示。

則當(dāng)問題規(guī)模n=100時,下列時間復(fù)雜度中效率最高的是

(

)A.O(nlog2n)B.O(log2n)C.O(n)D.O(n3)答案

B

3.有如下Python程序代碼:n=int(input("n="))ans1=ans2=0foriinrange(0,n,2):forjinrange(n):ans1=ans1+1ans2=ans2+ans1print("ans1=",ans1,"ans2=",ans2)則該算法的時間復(fù)雜度為

(

)A.O(1)B.O(n)C.O(n2)D.O(2n)答案

C

4.有以下Python程序段:defjishu(n):s=0whilen>0:s+=n%2n//=2returnsn=int(input("輸入一個正整數(shù):"))ans=jishu(n)print(ans)閱讀上述代碼,回答以下問題。(1)該程序運行后,輸入整數(shù)23,輸出結(jié)果為

。(2)若輸入整數(shù)23,則程序中自定義函數(shù)jishu()中語句“s+=n%2”執(zhí)行的次數(shù)是

。(3)函數(shù)jishu()的時間復(fù)雜度為

(單選:A.O(n)B.O(log2n))。答案

(1)4

(2)5

(3)B考點二迭代與遞歸1.(2023浙江1月選考,11,2分)定義如下函數(shù):defrf(n):ifn<3:returnnreturnrf(n-1)+rf(n-3)執(zhí)行語句v=rf(5),函數(shù)rf被調(diào)用的次數(shù)是

(

)A.1B.5C.7D.15答案

C

2.(2023浙江6月選考,10,2分)定義如下函數(shù):deff(a,s):ifa>=s:returnaelse:returnf(a+1,s-a)執(zhí)行語句k=f(6,21)后,k的值為

(

)A.6B.7C.8D.9答案

C

3.(2024屆發(fā)展共同體聯(lián)考,10)定義如下函數(shù):deff(x,y):ifx<=2ory>20:returnx+yreturnf(x-1,y+1)執(zhí)行語句k=f(5,1)后,k的值為

(

)A.6B.7C.8D.9答案

A

4.(2022紹興諸暨期中,10)某Python程序段如下:importrandomfibo=[1]*11foriinrange(2,11):fibo[i]=fibo[i-1]+fibo[i-2]n=random.randint(1,10)print(fibo[n])運行該程序段,輸出結(jié)果不可能是

(

)A.1B.21C.35D.89答案

C

5.(2022紹興諸暨期中,12)下列Python程序的功能是使用迭代算法求s的值。n=int(input("pleaseinputn:"))s=0foriinrange(1,n):ifi%3==0:s=s+iprint("s=",s)程序執(zhí)行時,輸入n的值為25,則輸出的結(jié)果為

(

)A.s=84B.s=118C.s=108D.s=105答案

C

6.(2022衢州期末,11)某Python程序段如下:defdoit(x):ifx>=6:ans=1else:ans=3*doit(x+1)+2*doit(x+2)returnansprint(doit(3))程序運行后,輸出的結(jié)果為

(

)A.17B.21C.61D.62答案

C

考點三數(shù)據(jù)排序1.(2023浙江1月選考,10,2分)列表s包含8個互不相等的元素,即s[0],s[1],s[2],…,s[7],有

如下Python程序段:n=8foriinrange(1,n-1):forjinrange(1,n-i-1):ifs[j]>s[j-1]:s[j],s[j-1]=s[j-1],s[j]該程序段實現(xiàn)的是

(

)A.s[0]到s[5]的降序排列B.s[1]到s[6]的降序排列C.s[1]到s[7]的升序排列D.s[2]到s[6]的升序排列答案

A

2.(2024屆名校協(xié)作體聯(lián)考,10)有如下Python程序:a=[12,45,45,63,0,0,63]cnt=0foriinrange(1,len(a)):j=i-1t=a[i]whilej>=0andt>a[j]:a[j+1]=a[j]j=j-1cnt=cnt+1a[j+1]=tprint(cnt)運行該程序后,輸出的結(jié)果是

(

)A.8B.10C.11D.13答案

B

3.(2024屆浙南名校聯(lián)考,12)有如下Python程序段:fromrandomimportrandintx=randint(2,4)*2a=[9,2,5,1,3,4,8,7]n=len(a)foriinrange(0,n-1):k=iforjinrange(i+1,x):ifa[k]>a[j]:k=jifi!=k:a[k],a[i]=a[i],a[k]print(a)執(zhí)行后,輸出結(jié)果不可能是

(

)A.[1,2,3,4,5,7,8,9]B.[1,2,3,4,5,9,8,7]C.[1,2,5,9,3,4,8,7]D.[1,2,3,4,5,9,7,8]答案

D

4.(2024屆天域全國名校協(xié)作體聯(lián)考,11)列表s存有4個整數(shù),有如下Python程序段:n=len(s)f=[1]*nforiinrange(n-1):forjinrange(i+1,n):ifs[j]>=s[i]:f[j]+=1else:f[i]+=1print(f)該程序段實現(xiàn)的功能是標(biāo)記列表中每個數(shù)值的名次值,名次排序的規(guī)則是

(

)A.數(shù)值越大名次值越大,同數(shù)值先出現(xiàn)的名次值小B.數(shù)值越大名次值越大,同數(shù)值先出現(xiàn)的名次值大C.數(shù)值越大名次值越小,同數(shù)值先出現(xiàn)的名次值小D.數(shù)值越大名次值越小,同數(shù)值先出現(xiàn)的名次值大答案

A

5.(2022紹興諸暨期中,11)有如下Python程序段:b=[56,80,10,31,24,52,66,49]n=len(b)foriinrange(1,3):forjinrange(0,n-i):ifb[j]>b[j+1]:b[j],b[j+1]=b[j+1],b[j]經(jīng)過該程序段“加工”后,列表b中的元素為

(

)A.[10,24,31,49,52,56,66,80]B.[10,31,24,52,56,49,66,80]C.[56,10,31,24,52,66,49,80]D.[10,24,31,52,49,56,66,80]答案

B

6.(2022紹興柯橋期末,11)對一組數(shù)據(jù)采用冒泡排序算法進(jìn)行排序,若第一趟排序完成

后的數(shù)據(jù)序列為31,24,23,15,20,10,則該數(shù)據(jù)序列的原始順序不可能是

(

)A.24,23,15,31,10,20B.24,23,15,20,31,10C.24,31,23,15,10,20D.23,24,15,20,31,10答案

D

1.(2022Z20名校聯(lián)盟聯(lián)考,9)某Python程序如下:importrandomkey=random.randint(35,45)*2i=0;j=len(a)-1;s=[]whilei<=j:m=(i+j+1)//2s.append(a[m])ifkey<a[m]:j=m-1考點四數(shù)據(jù)查找else:i=m+1數(shù)組a中的元素為“58,69,78,80,83,84,90,90,95”,則執(zhí)行該程序段后,數(shù)組s中的元素

不可能為

(

)A.83,90,95B.83,78,80C.83,90,90,84D.83,78,69,58答案

D

2.(2022百校聯(lián)考,12)某程序段如下:a=[9,15,19,20,23,36,78,87,96,100]ans=[];i=0;j=9key=int(input("請輸入待查數(shù)據(jù):"))flag=Falsewhilei<=jandnotflag:m=(i+j)//2ans.append(a[m])ifa[m]==key:flag=Trueelifa[m]>key:j=m-1else:i=m+1print(ans)執(zhí)行該程序后,當(dāng)輸入的key值為15時,輸出的結(jié)果是

(

)A.[23,15]B.[23,19,15]C.[20,15]D.[20,19,15]答案

A

3.(2022名校協(xié)作體聯(lián)考,12)某算法的Python程序段如下:key=randint(0,3)*2+13i,j,c=0,len(a)-1,0whilei<=j:m=(i+j+1)//2ifa[m]>=key:i=m+1else:j=m-1c+=1列表a=[23,21,19,18,16,15,14,11],該程序段執(zhí)行后,下列說法不正確的是

(

)A.i的值為j+1B.i的值可能是8C.j的值可能是5D.c的值一定是3答案

B

4.(2022諸暨海亮月考,12)下列程序?qū)崿F(xiàn)了輸入k,找出大于k的數(shù)據(jù)的起始索引位置并

顯示。a=[1,3,3,5,5,7,10,11,12,15]n=10k=int(input())i=-1j=

whilei<j:m=(i+j+1)//2ifk<a[m]:j=

else:i=mL=

print(">",k,"的數(shù)據(jù)索引起始位置為",L)上述程序段橫線處語句依次為

(

)A.nm-1iB.n-1m-1i+1C.nm+1iD.n-1m+1i+1答案

B

5.(2022諸暨期末,12)有如下二分查找程序段:#列表a存放整數(shù)升序數(shù)據(jù),代碼略key=int(input())f=[0]*9i=0;j=8whilei<=j:m=(i+j)//2f[m]=1ifa[m]>key:j=m-1else:i=m+1print(f)輸入待查找數(shù)據(jù),執(zhí)行該程序段后,下列選項中,列表f的值不可能是

(

)A.[0,0,0,0,1,1,1,0,0]B.[1,1,0,0,1,0,0,0,0]C.[0,1,0,0,1,0,1,0,0]D.[0,0,0,0,1,0,1,1,0]答案

C

6.(2022紹興諸暨期中,19)小明學(xué)了排序和查找算法后,編寫了一個處理成績的程序,功

能如下:程序運行時,首先從Excel文件中讀取n個學(xué)生的技術(shù)成績存儲在列表a中,并對

列表中的數(shù)據(jù)按升序進(jìn)行排序;輸入成績key,統(tǒng)計并輸出共有多少位同學(xué)的成績大于

該成績。實現(xiàn)上述功能的Python程序如下,請在程序劃線處填入合適的代碼。#從Excel文件中讀取n個學(xué)生的技術(shù)成績存儲在列表a中,代碼略#對列表a中的元素進(jìn)行升序排序n=len(a)foriinrange(n-1):forjinrange(0,n-i-1):if①

:a[j],a[j+1]=a[j+1],a[j]print(a)#輸入成績key,統(tǒng)計并輸出共有多少位同學(xué)的成績大于該成績key=int(input("pleaseinputkey:"))i,j=0,n-1whilei<=j:m=(i+j)//2if②

:j=m-1else:i=m+1print("共有"③

+"位同學(xué)大于等于該成績。")答案①a[j]>a[j+1]②key<a[m]③str(n-i)題組一1.(2024屆A9協(xié)作體返校考,11)有如下Python程序段:importrandoma=[1,3,4,6,6,6,9,9,11,12]key=random.randint(2,5)*2i,j=0,9whilei<=j:m=(i+j)//2ifkey<a[m]:j=m-1else:i=m+1print(j)執(zhí)行該程序段后,輸出的結(jié)果不可能是

(

)A.2B.3C.5D.7答案

B

2.(2024屆Z20聯(lián)盟聯(lián)考,10)有如下Python函數(shù):deftrans(num,n):s="0123456789ABCDEF"ifnum<n:returns[num]else:returntrans(num//n,n)+s[num%n]執(zhí)行語句a=trans(394,16)后,a的值為

(

)A.19AB.1810C.180D.18A答案

D

3.(2024屆七彩聯(lián)盟聯(lián)考,10)有如下程序段:defcal(n):ifn<=1:return1ifn%2==0:return2*cal(n-1)return1+cal(n-1)執(zhí)行語句k=cal(5),則k的值為

(

)A.6B.7C.10D.11答案

B

4.(2024屆強(qiáng)基聯(lián)盟統(tǒng)測,10)有如下程序段:deffun(k):ifk==1:return"1"elifk%2==0:returnfun(k-1)+str(k%2)else:returnstr(k%2)+fun(k-1)執(zhí)行語句s=fun(5),則s的值為

(

)A."00111"B."11010"C."11100"D."10110"答案

C

5.(2024屆新陣地聯(lián)盟聯(lián)考,10)有如下Python程序:importrandomdeffunc(n):ifn==1:return1elifn==2:return2elifn%2==1:return2*func(n-2)+func(n-1)else:returnfunc(n-2)+2*func(n-1)p=random.randint(3,6)print(func(p))執(zhí)行程序后,輸出結(jié)果不可能為

(

)A.4B.10C.12D.18答案

C

6.(2024屆天域全國名校協(xié)作體聯(lián)考,10)某遞歸函數(shù)如下所示:defhs(m):ifm<=1:f=1else:f=hs(m-1)+hs(m-2)returnfans=0foriinrange(5):ifhs(i)%2==1:ans+=1print(ans)程序運行后,輸出的結(jié)果是

(

)A.2B.3C.4D.5答案

C

7.(2023十校聯(lián)盟聯(lián)考,12)某二分查找算法的Python程序段如下:importrandomkey=random.randint(0,4)*2+5n=10;ans=0a=[4,5,5,8,9,11,11,13,15,17]i=0;j=n-1whilei<=j:m=(i+j)//2ifa[m]<=key:i=m+1else:j=m-1ans+=a[m]print(ans)執(zhí)行該程序段后,ans的值不可能是

(

)A.19B.27C.37D.44答案

A

8.(2024屆七彩聯(lián)盟聯(lián)考,15)某工廠每天會收到多個訂單,有n臺機(jī)器對零件進(jìn)行加工。

為減少機(jī)器的損耗,需要在滿足所有訂單加工的情況下(訂單即到即加工),機(jī)器開啟數(shù)

量盡量少。若開啟n臺機(jī)器不能滿足訂單即到即加工,則計算所有訂單最少的平均等

待時間。若給定某天內(nèi)所有的訂單信息,請計算需要開啟的機(jī)器數(shù)量以及訂單平均等

待時間,代碼運行效果圖如圖所示(注意:若上一個訂單結(jié)束時間為9:00,下一個訂單開

啟時間最早為9:00)。訂單信息如下:(批次,到達(dá)時間,加工時間min)(A1,9:00,30)(A2,11:30,50)(A3,10:40,50)(A4,10:00,60)(A5,9:20,40)(A6,11:00,20)(A7,10:

20,40)(A8,9:30,20)機(jī)器數(shù)量:22臺機(jī)器全部開啟,訂單平均等待2.5min第1臺機(jī)器:A1:09:00~09:30,A8:09:30~09:50,A4:10:00~11:00,A3:11:00~11:50第2臺機(jī)器:A5:09:20~10:00,A7:10:20~11:00,A6:11:00~11:20,A2:11:30~12:20請回答下列問題:(1)上圖所示的例子中,若機(jī)器有10臺,則只需要開啟

臺機(jī)器。(2)定義如下data_sort(a)函數(shù),參數(shù)a為列表,列表中每個元素包含三個數(shù)據(jù)項,依次分別對應(yīng)訂單批次、到達(dá)時間、加工時間(時間均轉(zhuǎn)為分鐘)。該函數(shù)實現(xiàn)將列表a按照訂

單到達(dá)時間升序排序。defdata_sort(a):foriinrange(len(a)):forjinrange(len(a)-i-1):if

:a[j],a[j+1]=a[j+1],a[j]①劃線處填入的語句為

,可實現(xiàn)上述功能。②若將加框處語句寫錯為range(i,len(a)-1),則下列4組數(shù)據(jù)中,列表a的值為

(單選,填字母)時不能測試出問題。A.[['A1',100,30],['A2',120,30],['A3',110,30],['A4',140,30],['A5',130,30]]B.[['A1',120,30],['A2',110,30],['A3',100,30],['A4',130,30],['A5',140,30]]C.[['A1',110,30],['A2',140,30],['A3',130,30],['A4',100,30],['A5',120,30]]D.[['A1',110,30],['A2',120,30],['A3',130,30],['A4',140,30],['A5',100,30]](3)實現(xiàn)計算開啟機(jī)器數(shù)量的部分Python程序如下,請在劃線處填入合適的代碼。defhuan(n):#將分鐘轉(zhuǎn)換為時間AA:BB格式,返回值為字符串,代碼略#讀取文件中的信息,并存儲在列表order中,代碼略data_sort(order)n=int(input("機(jī)器數(shù)量:"))foriinrange(len(order)):order[i].append(-1)#order[i]追加一個元素-1mach=[-1]*nnum,wait=0,0foriinrange(len(order)):k=-1time=-1forjin①

:t1=mach[j]ifk==-1:k=jtime=order[t1][1]+order[t1][2]else:t2=mach[k]iforder[t1][1]+order[t1][2]<order[t2][1]+order[t2][2]:k=jtime=order[t1][1]+order[t1][2]ifk==-1ornum<nand②

:mach[num]=inum+=1else:order[i][3]=mach[k]mach[k]=iiftime>order[i][1]:wait+=time-order[i][1]order[i][1]=timeifnum<n:print("只需開啟"+str(num)+"臺機(jī)器")else:print(str(n)+"臺機(jī)器全部開啟,訂單平均等待"+str(round(wait/len(order),2))+"min")foriinrange(num):print('第'+str(i+1)+'臺機(jī)器:')p=mach[i]ans=''whilep!=-1:ans=order[p][0]+':'+huan(order[p][1])+'~'+huan(order[p][1]+order[p][2])+','+ansp=③

print(ans[:-1])答案

(1)3

(2)①a[j][1]>a[j+1][1]②A

(3)①range(num)②time>order[i][1]③order[p][3]9.(2024屆名校協(xié)作體聯(lián)考,15)有一款益智游戲,規(guī)則如下:軌道上有不同顏色的珠子連

成珠串,玩家可以通過炮臺發(fā)射若干珠子,每次發(fā)射一顆珠子到珠串中的某位置,形成

新的珠串。當(dāng)新珠串中出現(xiàn)3顆及以上顏色相同的連續(xù)珠子時,這些連續(xù)的同色珠子

會被消除,并獲得相應(yīng)積分,若消除后仍有符合條件的同色珠子,會繼續(xù)被消除。記分

規(guī)則為:在被消除的連續(xù)珠子中,前面3顆直接記3分,其余的珠子每顆記2分,例如有5顆

相同顏色的連續(xù)珠子被消除,可獲得7分。程序運行過程如圖所示?,F(xiàn)軌道的珠串為:-1->3->1->5->4->2->2->1->2->2當(dāng)前珠子的顏色為:1請輸入當(dāng)前發(fā)射位置:7當(dāng)前珠子的顏色為:1請輸入當(dāng)前發(fā)射位置:7當(dāng)前珠子的顏色為:4請輸入當(dāng)前發(fā)射位置:5當(dāng)前珠子的顏色為:4請輸入當(dāng)前發(fā)射位置:5最終得分為11軌道中剩余的珠串為:-1->3->1->5編寫程序模擬游戲的實現(xiàn)過程,珠子的顏色用數(shù)字表示,為方便處理,在珠串最前面加

入一顆不可消除的珠子,顏色值為-1。請回答下列問題:(1)若珠串為-1,2,2,3,3,2,2,將顏色為3的珠子發(fā)射到顏色為2和3的珠子之間,可獲得積

分為

。(2)定義如下insert(t,pos)函數(shù),函數(shù)功能是將顏色為t的珠子,插入到當(dāng)前珠串中的第pos

顆珠子后面(列表link存儲珠串的相關(guān)數(shù)據(jù),例如link中某元素的值為[3,2],3表示某顆珠

子的顏色,2表示與該珠子相鄰的下一顆珠子的存儲地址,變量head保存珠串第一個珠

子的存儲地址),請在劃線處填入合適的代碼。definsert(t,pos):#將顏色為t的珠子,插入到當(dāng)前珠串第pos顆珠子的后面p=headwhilepos>1:pos-=1p=link[p][1]link.append(

)link[p][1]=len(link)-1(3)定義如下fun()函數(shù),函數(shù)功能是:查找珠串里最早出現(xiàn)的可消除珠串,函數(shù)返回ret,ret

由該珠串起始珠子的前一顆珠子位置和該珠串的連續(xù)長度組成。deffun():p=head;st=headpre=pnum=0lastcolor=-1ret=[-1,0]whilep!=-1:t=link[p][0]ift!=lastcolor:ifnum>=3:ret=[st,num]breaklastcolor=tst=prenum=1else:num+=1pre=pp=link[p][1]ifnum>=3:ret=[st,num]returnret若將函數(shù)中加框處代碼刪除,會導(dǎo)致某些情況下無法得到符合函數(shù)功能的結(jié)果。調(diào)用

fun()函數(shù),下列4組數(shù)據(jù)中能測試出這一問題的是

(單選,填字母)。A.head=4link=[[2,3],[1,0],[1,1],[2,-1],[-1,2]]B.head=0link=[[-1,1],[2,3],[2,4],[2,2],[1,-1]]C.head=1link=[[2,-1],[-1,3],[2,0],[1,4],[2,2]]D.head=4link=[[2,-1],[1,0],[1,1],[1,2],[-1,3]](4)實現(xiàn)模擬游戲過程的部分Python程序如下,請在劃線處填入合適的代碼。defclear(g):#根據(jù)fun函數(shù)的返回值對珠串進(jìn)行消除,并統(tǒng)計獲得本次消除的積分p=g[0]q=plength=g[1]ret=①

whilelength>=0:q=link[q][1]length-=1link[p][1]=qreturnretdeftraverl():#將軌道中珠串按序輸出,代碼略head=7link=[[1,3],[1,8],[2,1],[5,5],[2,2],[4,4],[3,0],[-1,6],[2,9],[2,-1]]print("現(xiàn)軌道的珠串為:")traverl()points=0que=[1,1,4,4]#保存炮臺中待發(fā)射珠子的顏色qhead=0qtail=4whileqhead!=qtail:print("當(dāng)前珠子的顏色為:",que[ghead])s=int(input("請輸入當(dāng)前發(fā)射位置:"))insert(que[qhead],s)qhead+=1g=fun()whileg!=[-1,0]:points+=clear(g)②

print("最終得分為",points)print("軌道中剩余的珠串為:")traverl()答案

(1)8

(2)[t,link[p][1]]

(3)C

(4)①3+(length-3)*2②g=fun()10.(2024屆發(fā)展共同體聯(lián)考,15)某業(yè)務(wù)服務(wù)大廳共有m個服務(wù)窗口(編號為0~m-1),服

務(wù)大廳根據(jù)服務(wù)對象的優(yōu)先等級(等級分為1~10,數(shù)字越大優(yōu)先級越高)從高到低依次

分配窗口并提供服務(wù)。某個時間段內(nèi)(該時間段起始時刻各窗口都空閑著),服務(wù)對象

按服務(wù)優(yōu)先等級從高到低排隊后依次到空閑的窗口享受服務(wù),服務(wù)優(yōu)先等級相同時,

先到達(dá)的先享受服務(wù)。由于辦理的業(yè)務(wù)不同,每個服務(wù)對象的服務(wù)時長(單位:分鐘)可

能是不相同的。按照上述服務(wù)規(guī)則,問所有服務(wù)對象完成業(yè)務(wù)辦理需要多少時間。一

個服務(wù)對象業(yè)務(wù)辦理結(jié)束,另一個服務(wù)對象馬上到該窗口接受服務(wù),中間浪費的時間

忽略不計。圖a描述了5個服務(wù)對象的信息,按照服務(wù)規(guī)則確定的服務(wù)次序如圖b所示。到達(dá)序號服務(wù)優(yōu)先等級服務(wù)時長1710261234324524568圖a到達(dá)序號服務(wù)優(yōu)先等級服務(wù)時長服務(wù)次序171012612234325452445683圖b若服務(wù)大廳提供2個服務(wù)窗口(m=2),則所有服務(wù)對象完成業(yè)務(wù)辦理需要50分鐘。具體

方案可以是:0號窗口依次服務(wù)到達(dá)序號為1、5、3的對象,1號窗口依次服務(wù)到達(dá)序號

為2、4的對象。請回答下列問題:(1)若有6個服務(wù)對象的信息如圖c所示,根據(jù)上述服務(wù)規(guī)則,在提供3個服務(wù)窗口的情況

下,所有服務(wù)對象完成業(yè)務(wù)辦理需要

分鐘。到達(dá)序號服務(wù)優(yōu)先等級服務(wù)時長132257341341558126411圖c(2)定義如下sort_lst(lst)函數(shù),參數(shù)lst是所有服務(wù)對象信息構(gòu)成的列表。函數(shù)的功能是

將列表lst按照服務(wù)對象的優(yōu)先等級降序排列并構(gòu)成鏈表,返回排序后的鏈表及其頭指

針。defsort_lst(lst):foriinrange(len(lst)):lst[i].append(-1)head=0foriinrange(1,len(lst)):p=headwhilep!=-1:iflst[p][1]>=lst[i][1]:q=pp=lst[p][3]else:breakifp==head:lst[i][3]=headhead=ielse:lst[q][3]=ilst[i][3]=preturnlst,head若lst列表依次存儲圖c所示的服務(wù)對象信息,如lst[0]為[1,3,2],各數(shù)據(jù)項依次表示服務(wù)

對象的到達(dá)序號,服務(wù)優(yōu)先等級及服務(wù)時長。調(diào)用sort_lst(lst)時,程序中加框處的語句

“q=p”總共執(zhí)行

次。(3)計算時間段內(nèi)服務(wù)對象完成業(yè)務(wù)辦理所需時間的部分Python程序如下,請在劃線處填入合適的代碼。defproc(lst,p,n,m):s=[0]*mforiinrange(m):#前m個人直接開始服務(wù),等待時間為0ifp==-1:breaks[i]=lst[p][2]①

ans=0whilep!=-1:k=s[0]#找出正在被服務(wù)的對象中最早結(jié)束的一個forjinrange(1,m):ifs[j]<k:k=s[j]ans+=kforjinrange(m):s[j]-=kif②

:s[i]=lst[p][2]p=lst[p][3]k=s[0]foriinrange(m):ifs[i]>k:k=s[i]③

print("所有服務(wù)對象完成業(yè)務(wù)辦理需要",str(ans),"分鐘")'''讀入服務(wù)對象總數(shù)n和窗口數(shù)m按到達(dá)序號讀入n個服務(wù)對象的信息到列表lst中,如圖c為:lst=[[1,3,2],[2,5,7],[3,4,13],

[4,1,5],[5,8,12],[6,4,11]]代碼略'''lst,head=sort_lst(lst)#對lst按照服務(wù)對象優(yōu)先等級降序排序proc(lst,head,n,m)答案

(1)18

(2)7

(3)①p=lst[p][3]或其他等價答案②s[j]==0andp!=-1或其他等

價答案③ans=ans+k或其他等價答案11.(2024浙江1月選考,15,9分)某項活動有n個單位(編號1到n)參加,需將員工分成若干

個小組,每個小組的人數(shù)上限為m,小組編號按新建次序從1開始編號。分組時,首先按

單位編號次序依次在各單位內(nèi)部分組,每m人分配到一個新建小組中,不足m人的剩余

員工暫不分配;然后按剩余員工人數(shù)由大到小的順序,依次為各單位剩余員工分配小

組。若某單位剩余員工人數(shù)為k,則分配方法為:在已建的小組中查找空位數(shù)(該小組還可容

納的人數(shù))大于或等于k的小組,如果找到的小組有多個,則選擇空位數(shù)最少的小組,將

此k人分配到該小組中;如果沒有找到,則新建一個小組,將此k人分配到該小組中。設(shè)n為5,m為20,各單位員工人數(shù)及單位內(nèi)部的分組過程如圖a所示,各單位剩余員工的分組過程如圖b所示。

編寫程序:給定各單位編號及員工人數(shù),根據(jù)上述方法進(jìn)行分組處理,按單位編號次序

輸出各單位所分配的分組編號。請回答下列問題:(1)由題意可知,若僅將圖a中1號單位的員工人數(shù)修改為25,然后對圖中5個單位重新分

組,則1號單位所分配的分組編號為

。(2)定義如下bubble_sort(lst)函數(shù),參數(shù)lst的每個元素由單位編號和剩余員工人數(shù)2個數(shù)

據(jù)項組成。函數(shù)的功能是根據(jù)每個單位的剩余員工人數(shù),對lst進(jìn)行降序排序。defbubble_sort(lst):n=len(lst)foriinrange(0,n-1):forjinrange(n-1,i,-1):iflst[j-1][1]<lst[j][1]:tmp=lst[j]lst[j]=lst[j-1]lst[j-1]=tmpiflst[i][1]==0:breakreturn調(diào)用該函數(shù),若lst為[[1,0],[2,0],[3,18],[4,0],[5,19],[6,17]],請回答①和②兩個問題。①框中的程序段第1次執(zhí)行后,關(guān)于lst中的剩余員工人數(shù),下列說法正確的是

(單選,填字母)。A.lst[0][1]數(shù)值最小B.lst[0][1]數(shù)值最大C.lst[5][1]數(shù)值最小D.lst[5][1]數(shù)值最大②框中的程序段執(zhí)行的次數(shù)為

。(3)實現(xiàn)分組功能的部分Python程序如下,程序中用到的列表函數(shù)與方法如圖c所示,請

在程序中劃線處填入合適的代碼。函數(shù)與方法功能w.append(x)在列表w末尾添加元素xx.w.pop()將列表w末尾元素賦值給x,并將其從w中刪除圖cdefgroup(data,m):n=len(data)a=[]foriinrange(n+1):a.append([])#a[i]初始化為空列表,存放編號為i的單位所分配的分組編號gnum=0foriinrange(n):#各單位內(nèi)部分組whiledata[i][1]>=m:gnum+=1k=data[i][0]a[k].append(gnum)①

bubble_sort(data)#根據(jù)每個單位的剩余員工人數(shù),對data進(jìn)行降序排序b=[]foriinrange(m):b.append([])i=0#對剩余員工分組whilei<nanddata[i][1]!=0:②

whilej<mandlen(b[j])==0:j+=1ifj<m:v=b[j].pop()else:gnum+=1v=gnuma[data[i][0]].append(v)③

i+=1#輸出各單位的分組編號,代碼略'''讀取小組人數(shù)上限存入m;讀取1至n號單位的數(shù)據(jù),依次存入列表data的data[0]至data[n

-1]中。data[i]包含2個數(shù)據(jù)項,data[i][0],data[i][1]分別存放單位編號及員工人數(shù),代碼略'''group(data,m)答案

(1)1,8

(2)①B②4

(3)①data[i][1]-=m②j=data[i][1]③b[j-data[i][1]].ap-

pend(v)12.(2024屆浙南名校聯(lián)盟聯(lián)考,15)某工廠將送達(dá)的各批次物品按品種打包。小李將各

批次物品信息按送達(dá)時間順序合并,得到如圖a-2所示數(shù)據(jù)data。同一個包裹只能裝入

同一品種任意批次的物品,當(dāng)某一個品種物品A送達(dá)使得已送達(dá)的該品種物品總質(zhì)量

超過m時,則將在該物品之前送達(dá)的物品按質(zhì)量由大到小依次裝入包裹,其余質(zhì)量不足

m的品種,按各品種依次裝入包裹。編寫程序,讀取物品合并更新后的信息,按送達(dá)時

間順序打包,輸出各包裹中的物品序號,運行結(jié)果如圖b所示。序號品種送達(dá)時間批次質(zhì)量(千克)128:3516218:5018309:1012409:1514序號品種送達(dá)時間批次質(zhì)量(千克)108:3023序號品種送達(dá)時間批次質(zhì)量(千克)108:4034圖a-1序號品種送達(dá)時間批次質(zhì)量(千克)108:3023228:3516308:4034418:5018509:1012609:1514圖a-2m=10data=[[1,0,'8:30',2,3],[2,2,'8:35',1,6],[3,0,'8:40',3,4],[4,1,'8:50',1,8],[5,0,'9:10',1,2],[6,0,'9:1

5',1,4]]第1個包裹中品種為0,各物品的序號依次是:3,1,5,第2個包裹中品種為0,各物品的序號依次是:6,第3個包裹中品種為1,各物品的序號依次是:4,第4個包裹中品種為2,各物品的序號依次是:2,圖b請回答下列問題:(1)送達(dá)物品信息合并后如圖a-2所示,若包裹裝入物品質(zhì)量不能超過8千克,則首先打包

完成的包裹中裝入品種為0,各物品的序號依次是

。(2)定義data_sort(lst)函數(shù)。先將數(shù)據(jù)(見圖a-1)合并得到lst列表(見圖a-2),函數(shù)data_sort

(lst)的功能是對lst列表按送達(dá)時間升序排列,并對序號進(jìn)行更新。defdata_sort(lst):foriinrange(n-1):#n為數(shù)據(jù)個數(shù)forjinrange(n-1,i,-1):iflst[j][2]<lst[j-1][2]:lst[j],lst[j-1]=lst[j-1],lst[j]lst[i][0]=i+1returnlst執(zhí)行上述代碼后,

(填寫:能/不能)正確得到圖a-2中的數(shù)據(jù)。(3)實現(xiàn)上述功能的部分Python程序如下,請在劃線處填入合適的代碼。defpack(k):#對品種k已送達(dá)待打包的物品按質(zhì)量由大到小輸出#部分代碼略p=b[k][1]num+=1print("第"+str(num)+"個包裹中品種為"+str(k)+",各物品的序號依次是:",end="")whilep!=-1:print(data[p][0],end=",")p=x[p]print()#合并后排序得到n件物品的數(shù)據(jù)存儲在數(shù)組data中并輸出,包裹最大承受質(zhì)量為m千

克。物品品種的數(shù)量是sn,代碼略b=[[0,-1]foriinrange(sn)]x=[-1foriinrange(n)]num=0foriinrange(n):k=data[i][1]ifb[k][0]+data[i][4]>m:pack(k)b[k]=[0,-1]p=①

ifp==-1:b[k][1]=ielse:ifdata[i][4]>data[p][4]:b[k][1]=i②

else:q=-1while③

:q=pp=x[p]x[q]=ix[i]=pb[k][0]+=data[i][4]#質(zhì)量不足m的品種,按品種依次裝入包裹foriinrange(sn):ifb[i][1]!=-1:pack(i)答案(1)3,1(2)不能(3)①b[k][1]②x[i]=p③p!=-1anddata[i][4]<=data[p][4]或p>-1anddata[i][4]<=data[p][4]或p>=0andda-ta[i][4]<=data[p][4]13.(2024屆新陣地聯(lián)盟聯(lián)考,15)進(jìn)入新學(xué)期第一天,班主任老師將班上N個同學(xué)(學(xué)號

為1~N)排成一排,分配座位。從排隊到分配座位步驟如下:步驟一:先將1號同學(xué)安排進(jìn)隊;步驟二:2~N號同學(xué)由老師依次指定入隊位置,如學(xué)號為i的同學(xué)由老師指定站在隊中

某位同學(xué)的左側(cè)或右側(cè);步驟三:所有同學(xué)按照上述方法入隊完畢后,以2人一組的方式依次分配到四個組別中;步驟四:輸出每組學(xué)生的名單。請回答下列問題。(1)若某班有4位同學(xué),學(xué)號為1~4,完成步驟一后,執(zhí)行步驟二的指令3次,每次指令包含兩個整數(shù)k和p(p為0或1)。若p為0,則表示插在k號同學(xué)的左側(cè),p為1則表示插在k號同

學(xué)的右側(cè)。若三條指令分別為10、21、10,則執(zhí)行指令后隊伍從左到右學(xué)號分別為

。(2)實現(xiàn)上述功能的部分Python程序如下,請在劃線處填入合適的代碼。#insert(k,x)函數(shù)的功能是在k號的右側(cè)插入x號同學(xué)#L和R列表分別用于記錄每位同學(xué)的左側(cè)和右側(cè)的同學(xué)學(xué)號definsert(k,x):R[x]=R[k]L[x]=k①

R[k]=xL=[0]*100;R=[0]*100;vis=[0]*100insert(0,1)#0的右邊插入1號同學(xué)#info列表存儲各學(xué)生姓名和學(xué)號,格式如[["張三",1],["李四",2]…],代碼略n=int(input("請輸入同學(xué)人數(shù):"))foriinrange(2,n+1):k=int(input("請問插入在幾號同學(xué)旁邊?"))p=int(input("請輸入該同學(xué)的左側(cè)還是右側(cè)"))ifp==0:②

else:insert(k,i)q=[[]foriinrange(4)]i=m=0③

whilex!=0:q[i].append(x)m=m+1ifm%2==0:④

x=R[x]foriinrange(4):forjinq[i]:print(info[j-1][0],end="

")print()答案

(1)2341

(2)①L[R[k]]=x②insert(L[k],i)③x=R[0]④i=(i+1)%414.(2023學(xué)軍中學(xué)月考,15)學(xué)校為了使本校畢業(yè)生能以更好的狀態(tài)參加高考,都會創(chuàng)

造條件向上級申請在本校設(shè)立標(biāo)準(zhǔn)化考點,讓學(xué)生能在本校參加考試。標(biāo)準(zhǔn)化考點要

求很多,其中之一就是各考場內(nèi)的座位安排必須是蛇形排列,保證使用A、B卷的同學(xué)

能完全錯開,如圖a所示。小明用Python編寫了一個模擬考場座位編排程序,程序運行

結(jié)果如圖b所示,每個座位號占4位寬度右對齊。輸出程序如下,請在劃線處填入合適

的代碼。defpx(lst):foriinrange(len(lst)-1):k=iforjinrange(①

):iflst[j]>lst[k]:k=jifk!=i:lst[i],lst[k]=lst[k],lst[i]defgssc(t,n):#將字符t按n個字符寬度輸出t="

"*(n-len(t))+treturntn=int(input('請輸入行數(shù):'))m=int(input('請輸入列數(shù):'))a=[]forjinrange(m):a.append([])foriinrange(n):a[j].append(②

)foriinrange(m):if③

:px(a[i])foriinrange(n):st=""forjinrange(m):tmp='A'ifa[j][i]%2==1:tmp='B'st+=④

#每個座位號按4位輸出print(st)答案①i+1,len(lst)②i+j*n③i%2==1④gssc(str(a[j][i])+tmp,4)題組二1.(2024屆名校協(xié)作體聯(lián)考,11)定義如下函數(shù):deff(k):ifk<=3:print(k)returnforiinrange(1,4):f(k-i)return執(zhí)行語句f(6),則f(3)被調(diào)用的次數(shù)為

(

)A.1次B.2次C.3次D.4次答案

D

2.(2024屆強(qiáng)基聯(lián)盟聯(lián)考,10)執(zhí)行下列Python代碼,輸出結(jié)果為

(

)deff(s):m=len(s)ifm==1:returnint(s)else:returnf(s[:m-1])+f(s[m-1])print(f("101"))A.11B.2

C.5D.101答案

B

3.(2024屆百校起點調(diào)研測試,10)定義如下遞歸函數(shù):deff(a,n):n=n-1ifn==0:returnaelse:returnf(a-1,n)+f(a+1,n)print(f(5,3))程序運行后,輸出的結(jié)果是

(

)A.10B.20C.30D.40答案

B

4.(2022寧波九校聯(lián)考期末,12)某二分查找算法的Python程序段如下,運行該段代碼后,

輸出的結(jié)果不可能是

(

)importrandoma=[10,20,30,40,50,60,70,80]key=random.choice(a);i,j=0,len(a)-1s=""whilei<=j:m=(i+j)//2ifkey==a[m]:s=s+"M";breakelifkey<a[m]:j=m-1;s=s+"L"else:i=m+1;s=s+"R"print(s)A.LLMB.LRMC.RRRMD.RRLM答案

D

5.(2023浙江開學(xué)考,12)峰值元素指數(shù)組中其值大于左右相鄰值的元素,如序列3、8、

4、1中8為峰值元素。一個數(shù)組r包含多個峰值元素,現(xiàn)需要找出其中一個峰值元素所

在的位置(默認(rèn)第一個數(shù)的左側(cè)和最后一個數(shù)的右側(cè)為0,即序列1、2、3中3也為峰值

元素)?,F(xiàn)有實現(xiàn)該功能的Python程序如下:i=0;j=6whilei<j:m=(i+j)//2ifa[m+1]>a[m]:i=m+1else:j=mprint("峰值位置是",i)數(shù)組a=[10,2,25,17,20,21,9],執(zhí)行該程序后,輸出的值為

(

)A.0B.2C.5D.8答案

C

6.(2023十校聯(lián)盟聯(lián)考,9)有如下Python程序段:deftrans(m,n):ifm!=0:r=m%nreturntrans(m//n,n)+str(r)else:return"0"a=int(input("a="))b=int(input("b="))print(trans(a,b))執(zhí)行該程序段,依次輸入11和2,則輸出的結(jié)果是

(

)A.1011B.1101C.01011D.11010答案

C

7.(2023浙南名校聯(lián)盟聯(lián)考,8)小王走樓梯,每次走1個臺階或2個臺階,問小王走n個臺階

時,有多少種不同的走法?現(xiàn)編寫代碼如下:defupstairs(n):ifn==0orn==1:return1else:returnupstairs(n-1)+upstairs(n-2)n=int(input('請輸入樓梯有幾個臺階:'))way=upstairs(n)print(way)當(dāng)輸入的樓梯有10個臺階時,請問有多少種走樓梯的方法

(

)A.88B.89C.90D.91答案B

8.(2024屆天域全國名校協(xié)作體聯(lián)考,15)計算機(jī)運行多個任務(wù)(又稱進(jìn)程)時,需要進(jìn)行

調(diào)度。有的進(jìn)程需要優(yōu)先響應(yīng),例如用戶的交互操作,此時就需要暫停當(dāng)前運行的進(jìn)

程,讓CPU先執(zhí)行需要優(yōu)先響應(yīng)的進(jìn)程,這稱為搶占。操作系統(tǒng)需要設(shè)計調(diào)度算法,來

決定CPU運行進(jìn)程的順序。優(yōu)先級搶占式調(diào)度算法是一種簡單的調(diào)度算法,規(guī)則如下:1)將進(jìn)程分為m個優(yōu)先級,設(shè)置m個等待隊列,分別對應(yīng)每一級優(yōu)先級。2)每個進(jìn)程具有三個要素:到達(dá)時間,運行所需時長,優(yōu)先級數(shù)(數(shù)越大優(yōu)先級越高)。3)相同優(yōu)先級的進(jìn)程,按照先到先服務(wù)的原則依次執(zhí)行。4)同一時刻中,先將到達(dá)的進(jìn)程都加入隊列,再按照優(yōu)先級進(jìn)行分配。5)只有當(dāng)k級隊列為空的時候,才會為k-1級隊列隊首的進(jìn)程分配時間。6)進(jìn)程Pi運行時,如果有優(yōu)先級更高的進(jìn)程Pj到達(dá),則立即發(fā)生搶占,先執(zhí)行Pj,并將進(jìn)程

Pi未執(zhí)行完的部分,重新加入Pi優(yōu)先級對應(yīng)的隊列末尾,等待繼續(xù)執(zhí)行。編寫程序模擬CPU分配計算資源的過程,已知按照到達(dá)時間升序排序的進(jìn)程數(shù)據(jù)(包

含到達(dá)時間、運行時長、優(yōu)先級),計算并輸出每個進(jìn)程最終處理完成的時間。(時間

單位均為毫秒)請回答下列問題:(1)有4個進(jìn)程A、B、C、D如圖所示。進(jìn)程到達(dá)時間運行時長優(yōu)先級A071B242C413D542由優(yōu)先級搶占式調(diào)度算法的規(guī)則可知,0毫秒時進(jìn)程A到達(dá)并執(zhí)行;2毫秒時進(jìn)程B到達(dá),

B的優(yōu)先級高于A,發(fā)生搶占,A剩余的5毫秒回到隊列1,B開始執(zhí)行;4毫秒時進(jìn)程C到達(dá),

C的優(yōu)先級高于B,發(fā)生搶占,B剩余的2毫秒回到隊列2,C開始執(zhí)行;則進(jìn)程D執(zhí)行完的時

刻為

。(2)模擬實現(xiàn)優(yōu)先級搶占式調(diào)度算法Python程序如下,請在劃線處填入合適的代碼。definsert(p,remain):data[p][2]=remain#更新進(jìn)程剩余的運行時間lvl=data[p][3]ifqueinfo[lvl][0]==-1:queinfo[lvl][0]=pifqueinfo[lvl][1]!=-1:data[queinfo[lvl][1]][-1]=pdata[p][-1]=-1queinfo[lvl][1]=pm=int(input('設(shè)置優(yōu)先級的數(shù)量m:'))#輸入列表data存儲進(jìn)程,data中的節(jié)點包含信息有[名稱,到達(dá)時間,運行時長,優(yōu)先級],

代碼略#進(jìn)程已經(jīng)按到達(dá)時間升序排序#例如:data=[['A',0,7,1],['B',2,4,2],['C',4,1,3],['D',5,4,2]]foriinrange(len(data)):data[i].append(-1)queinfo=[[-1,-1]foriinrange(m+1)]insert(0,data[0][2])#將第1個進(jìn)程加入隊列time=data[0][1]cnt=1#所有隊列內(nèi)等待的進(jìn)程總數(shù)idx=1lvl=mwhilecnt>0:ifqueinfo[lvl][0]!=-1:cur=queinfo[lvl][0]queinfo[lvl][0]=data[queinfo[lvl][0]][-1]cnt-=1①

whileidx<len(data)andtime+data[cur][2]>=data[idx][1]:iflvl>=data[idx][3]ortime+data[cur][2]==data[idx][1]:insert(idx,data[idx][2])cnt+=1idx+=1eliftime+data[cur][2]>data[idx][1]:insert(idx,data[idx][2])#搶占的進(jìn)程也先入隊cnt+=1insert(cur,②

)cnt+=1time=data[idx][1]lvl=data[idx][3]idx+=1flag=Truebreakifflag==False:time=time+data[cur][2]print("時刻",time,":進(jìn)程",data[cur][0],"完成")lvl=mif

:#仍然有未到達(dá)的進(jìn)程等待入隊insert(idx,data[idx][2])cnt+=1time=data[idx][1]idx+=1else:lvl-=1iflvl==0:lvl=m(3)若將以上程序中insert函數(shù)內(nèi)的加框處代碼刪除,會導(dǎo)致某些情況下無法得到符合

程序功能的結(jié)果,下列4組數(shù)據(jù)中能測試出這一問題的是

(單選,填字母)。A.m=3data=[['A',0,1,1],['B',1,1,2],['C',3,1,3]]B.m=3data=[['A',0,2,2],['B',1,2,3],['C',3,1,3]]C.m=3data=[['A',0,2,1],['B',1,2,3],['C',2,1,2]]D.m=3data=[['A',0,2,2],['B',1,2,3],['C',2,1,1]]答案

(1)11

(2)①flag=True②data[cur][2]-(data[idx][1]-time)③idx<len(data)andcnt==0

(3)D9.(2024屆A9協(xié)作體聯(lián)考,15)張三是一名計算機(jī)專業(yè)的大學(xué)生,為了幫助同學(xué)們學(xué)習(xí)專

業(yè)相關(guān)的英語詞匯,編寫了一個簡易字典程序。該程序中存放詞匯數(shù)據(jù)庫,在學(xué)習(xí)中

輸入英文單詞,可以獲得中文翻譯結(jié)果。程序中的詞匯數(shù)據(jù)庫采用鏈表方式存儲,首

字母相同時按升序排序。查找單詞時,首先根據(jù)首字母找到同首字母最小單詞所在鏈

表,再按照鏈表順序查找該單詞。(1)根據(jù)題意,部分的單詞庫數(shù)據(jù)邏輯結(jié)構(gòu)如圖所示,查找單詞"byte"的過程是"binary"

→"bit"→"byte",補(bǔ)充圖中空白單元格的值為

。列表索引數(shù)據(jù)區(qū)域指針區(qū)域0audio音頻-11binary二進(jìn)制數(shù)62byte字節(jié)-13cursor光標(biāo)-14access存取15cache高速緩存36bit比特

(2)wordlist(data,info)函數(shù)實現(xiàn)將詞匯數(shù)據(jù)庫data以鏈表的方式按字母序升序排列。in-

fo表示詞匯數(shù)據(jù)庫中各字母開頭的最小單詞位置,如info[0]表示字母a開頭的最小單詞

在詞匯數(shù)據(jù)庫data中的位置。實現(xiàn)該功能的程序如下,請在劃線處填入合適的代碼。defwordlist(data,info):n=len(data)foriinrange(n):data[i].append(-1)#data[i]追加一個元素-1foriinrange(n):d=data[i][0]①

ifinfo[k]==-1:info[k]=ielse:head=info[k]q=headwhile②

:p=qq=data[q][2]ifq!=head:data[p][2]=idata[i][2]=qelse:data[i][2]=head③

returndata,info(3)searchword(data,info,key)函數(shù)實現(xiàn)單詞的查找。程序如下,請在劃線處填入合適的

代碼。defsearchword(data,info,key):k=ord(key[0])-ord("a")head=info[k]p=headwhilep!=-1:ifdata[p][0]==key:return

p=data[p][2]return"沒有找到該單詞"#讀取詞匯數(shù)據(jù)庫,存入列表data中,列表的每個元素包含2個數(shù)據(jù)項,分別為英文單詞和

中文翻譯,如data=[['audio','音頻'],['binary','二進(jìn)制數(shù)']…],數(shù)據(jù)讀取存入的代碼略info=[-1]*26data,info=wordlist(data,info)key=input("請輸入查找單詞:").lower()#轉(zhuǎn)化為小寫字母res=searchword(data,info,key)print(key,"查找結(jié)果是:",res)答案

(1)2

(2)①k=ord(d[0])-ord('a')②q!=-1andd>data[q][0]③info[k]=i

(3)data[p][1]10.(2024屆強(qiáng)基聯(lián)盟聯(lián)考,15)某校針對高三高考成績進(jìn)行分析時,其中有兩個主要指

標(biāo):班級各科平均成績和班級總分平均成績。高考成績保存在“kscj.csv”文件中,格

式如圖a所示,每行有四個項目,分別是“學(xué)號”“姓名”“學(xué)科”和“得分”,其中

“學(xué)號”的前兩位表示班級編號,后兩位表示該學(xué)生班內(nèi)編號,兩種編號均從“01”

遞增編排。設(shè)計如下Python程序,執(zhí)行后輸出上述兩個主要指標(biāo),如圖b所示。請回答下列問題。

(1)通讀下列程序代碼后,可知程序中各班級隊列采用的數(shù)據(jù)結(jié)構(gòu)為

(選填,數(shù)

組/鏈表)。(2)函數(shù)dataToClassQue功能:根據(jù)班級編號,將數(shù)據(jù)分配到各個班級隊列。請在劃線處

填入合適的代碼。defdataToClassQue(data):num=len(data)foriinrange(num):classId=data[i][0]ifqueInfo[classId-1][0]==-1:queInfo[classId-1][0]=ielse:

queInfo[classId-1][1]=ireturn(3)函數(shù)dataProcessing功能:統(tǒng)計各班各科平均分和班總分平均分。請在劃線處填入

合適的代碼。defdataProcessing(data):forclassIdinrange(1,classNumber+1):①

score=[[0,0]foriinrange(10)]#班級各科平均分和人數(shù)初始化p=queInfo[classId-1][0]whilep!=-1:subjectId=data[p][3]total+=data[p][4]②

score[subjectId][1]+=1p=data[p][-1]forsubjectIdinrange(10):ifscore[subjectId][1]!=0:t=③

averageScore[classId-1][subjectId]=round(t,1)averageScore[classId-1][10]=round(total/score[0][1],1)returndefreadFile(data):#讀入原始學(xué)生數(shù)據(jù),預(yù)處理后,存儲到data中,代碼略#data數(shù)據(jù)格式:[[6,10,'白凱修',0,117,-1],[6,10,'白凱修',1,109,-1],……]#每條記錄包括班級編號,班內(nèi)編號,姓名,學(xué)科編號,得分和預(yù)留值-1returnmaxClassId#返回最大班級編號deffmtPrint():#格式化輸出,如圖b所示,代碼略return#主程序course={'語文':0,'數(shù)學(xué)':1,'英語':2,'物理':3,'化學(xué)':4,'生物':5,'政治':6,'歷史':7,'地理':8,'技術(shù)

':9}data=[]#存儲讀入的數(shù)據(jù)classNumber=readFile(data)queInfo=[[-1,-1]foriinrange(classNumber)]#初始化隊列,用于存儲各班級信息averageScore=[[0forkinrange(11)]foriinrange(classNumber)]dataToClassQue(data)dataProcessing(data)fmtPrint()答案

(1)鏈表

(2)data[queInfo[classId-1][1]]=i(3)①total=0②score[subjectId][0]+=data[p][4]③score[subjectId][0]/score[subjectId][1]11.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論