版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
專題七數(shù)據(jù)的組織考點(diǎn)過(guò)關(guān)練考點(diǎn)一數(shù)組1.(2022浙北G2聯(lián)盟期中,15)有如下Python程序段:importrandoma=[]foriinrange(10):a.append(random.randint(1,100))i=0whilei<10:ifi==0:i=i+1elifa[i-1]<=a[i]:①
else:a[i],a[i-1]=a[i-1],a[i]②
print(a)執(zhí)行該程序段實(shí)現(xiàn)了隨機(jī)生成一個(gè)數(shù)組,并將其元素遞增輸出的功能。劃線處的代碼應(yīng)該是()A.①i+=1②i=1B.①i-=1②i=1C.①i+=1②i+=1D.①i-=1②i-=1答案A2.(2022紹興諸暨期中,3)使用列表生成的方式創(chuàng)建數(shù)組代碼如下:a=[i*i-1foriinrange(10)ifi%2==0]則數(shù)組元素a[3]的值為()A.2B.8C.15D.35答案D3.(2022紹興諸暨期中,4)設(shè)有一個(gè)5×8的二維數(shù)組a,若按行優(yōu)先的順序存儲(chǔ)數(shù)組元素,則元素a[3][5]前面元素的個(gè)數(shù)為()A.21B.22C.29D.37答案C4.(2022紹興諸暨期中,13)有如下Python程序段:a=[[0foriinrange(3)]forjinrange(3)]foriinrange(3):forjinrange(3):a[i][j]=i*5+j+1foriinrange(1,3):forjinrange(2):print(a[j][i],end="")程序段執(zhí)行后,輸出的結(jié)果是()A.2378B.712813C.2738D.671112答案C5.(2022杭州期中,10)下述代碼段用于實(shí)現(xiàn)在數(shù)組a中將新數(shù)據(jù)k插入下標(biāo)為j(0<=j<=8)的位置:a=[8,6,12,3,5,7,11,2,10,0]i=8whilei>=j:(1)
(2)
(3)
橫線處的代碼由以下五部分中的三部分組成:①a[i+1]=k②a[i]=k③a[i+1]=a[i]④a[i]=a[i-1]⑤i=i-1下列選項(xiàng)中代碼選擇與順序正確的是()A.③⑤②B.⑤③①C.③⑤①D.④⑤②答案C6.(2022嘉興期中,3)用Python程序段定義一個(gè)3行4列的二維數(shù)組(要求先將各元素的值初始化為0,再將第2行第2個(gè)元素重新賦值為1),以下程序段可行的是()A.arr=[[0]*3forjinrange(4)]arr[2][2]=1B.arr=[[0]*4]*3arr[1][1]=1C.arr=[[0foriinrange(4)]forjinrange(3)]arr[1][1]=1D.arr=[[0,0,0,0]forjinrange(3)]arr[2][2]=1答案C考點(diǎn)二鏈表1.(2022浙南名校聯(lián)盟期末,12)一個(gè)頭指針head=2的單向鏈表L=[[30,4],[10,-1],[20,0],[15,1],[21,3]]通過(guò)以下Python程序段,轉(zhuǎn)換為原鏈表的逆序鏈表,即頭指針head=1,L=[[30,2],[10,3],[20,-1],[15,4],[21,0]]。q=-1p=head#head為原鏈表頭指針whilep!=-1:tmp=L[p][1]head=q上述程序段中方框處可選的語(yǔ)句為:①p=tmp②q=p③L[p][1]=q則方框處語(yǔ)句依次為()A.③②①B.③①②C.①③②D.①②③答案A2.(2022浙北G2聯(lián)盟期中,14)用兩個(gè)列表a、b分別保存單向鏈表中的數(shù)據(jù)區(qū)域和指針區(qū)域。如圖所示,在節(jié)點(diǎn)x與節(jié)點(diǎn)y之間插入一個(gè)新節(jié)點(diǎn),操作步驟正確的是()①b[i]=b[y]②b[i]=b[x]③b[y]=i④b[x]=i⑤b[i]=x⑥b[i]=yA.③⑥B.④②C.①③D.②④答案D3.(2023浙江開(kāi)學(xué)考,10)已知一個(gè)鏈表a,其a[i][0]存儲(chǔ)索引i下節(jié)點(diǎn)的數(shù)據(jù)區(qū)域,a[i][1]存儲(chǔ)索引i下節(jié)點(diǎn)的指針區(qū)域。對(duì)于當(dāng)前鏈表中的一個(gè)節(jié)點(diǎn)p(索引為p),若要?jiǎng)h除p的后一個(gè)節(jié)點(diǎn)q(q=a[p][1]),則應(yīng)執(zhí)行語(yǔ)句()A.a[p]=a[q]B.a[p][1]=a[q][1]C.a[p]=a[a[q][1]]D.a[p]=a[q];a[p][1]=a[q][1]答案B4.(2022杭州期中,12)在Python中用列表模擬鏈表結(jié)構(gòu),某程序段如下:a=[['H',1],['a',2],['n',3],['g',4],['2',5],['0',6],['2',7],['2',0]]p,head=3,3;q,c=-1,0;m,n=3,0whilen<4:c=c+1ifc==m:n=n+1;c=0ifp==head:head=a[p][1]a[q][1]=headp=a[p][1]else:a[q][1]=a[p][1]p=a[p][1]else:q=pp=a[p][1]#從頭節(jié)點(diǎn)開(kāi)始遍歷鏈表a邏輯順序的所有節(jié)點(diǎn),并依次輸出節(jié)點(diǎn)的數(shù)據(jù),代碼略該程序段執(zhí)行后的輸出結(jié)果為()A.ng02B.g02nC.2an2D.22an答案D5.(2022諸暨期末,8)某單向鏈表如圖所示,在data2與data3之間插入一個(gè)新節(jié)點(diǎn)data4(p指向data2,r指向data4。列表data來(lái)記錄鏈表數(shù)據(jù)域,列表next來(lái)記錄指針域),以下選項(xiàng)中正確的執(zhí)行步驟為()①next[p]=next[r]②next[p]=r③next[r]=p④next[r]=-1⑤next[r]=next[p]⑥next[p]=-1A.③⑥B.⑤②C.①④D.⑤②④答案B6.(2022杭嘉湖金月考,15)山頂上有10個(gè)圓形排列的洞,一只狐貍和一只兔子各住一個(gè)洞。狐貍總想吃掉兔子。一天兔子對(duì)狐貍說(shuō):“你想吃我有一個(gè)條件,先把洞從1~10編上號(hào),你先到1號(hào)洞找我;第二次隔1個(gè)洞(即3號(hào)洞)找我,第三次隔2個(gè)洞(即6號(hào)洞)找我,依此類推,次數(shù)不限。但狐貍從早到晚進(jìn)進(jìn)出出了1000次,仍沒(méi)有找到兔子。請(qǐng)問(wèn)兔子可能躲在哪個(gè)洞里?實(shí)現(xiàn)上述功能的Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。hole=[]n=10m=1000#構(gòu)造一個(gè)循環(huán)鏈表,并給n個(gè)洞編號(hào),設(shè)置洞的初始標(biāo)志為0#鏈表的節(jié)點(diǎn)樣式為:[洞的標(biāo)志,洞的編號(hào)]foriinrange(n-1):hole.append([0,i+1])(1)
#狐貍開(kāi)始找兔子,將進(jìn)入過(guò)的洞標(biāo)志改為1,尋找m次結(jié)束head=0k=headhole[0][0]=1foriinrange(1,m):forjinrange(1,i+2):(2)
hole[k][0]=1#輸出標(biāo)志仍為0的洞,即兔子可能的藏身地點(diǎn)foriinrange(len(hole)):ifhole[i][0]==0:print("兔子可能躲在第"+(3)+"號(hào)洞")
答案(1)hole.append([0,0])(2)k=hole[k][1](3)str(i+1)考點(diǎn)三隊(duì)列1.(2024屆七彩聯(lián)盟聯(lián)考,11)有如下程序段:s=input()head=0;tail=0;ans=0;tmp=''q=['']*100flag=Trueforiinrange(len(s)):ifs[i]==',':whilehead!=tail:tmp+=q[head]head+=1ifflagandhead<tail:head+=1flag=notflagans+=int(tmp)tmp='';flag=Trueelif'0'<=s[i]<='9':q[tail]=s[i]tail+=1輸入s為"1-500,2023900-,",執(zhí)行該程序段,變量ans的值為()A.100B.22300C.22351D.22400答案D2.(2022杭州“六縣九?!逼谥?5)有A、B、C、D、E五個(gè)人依次進(jìn)入電梯,結(jié)果警告超重了,需要出去一個(gè)人才能正常運(yùn)行,按照數(shù)據(jù)結(jié)構(gòu)中棧和隊(duì)列的思維,應(yīng)離開(kāi)電梯的人分別是()A.棧:A隊(duì)列:EB.棧:A隊(duì)列:AC.棧:E隊(duì)列:AD.棧:E隊(duì)列:E答案C3.(2024屆強(qiáng)基聯(lián)盟聯(lián)考,9)執(zhí)行下列Python程序段,輸出結(jié)果為()data=[1,2,3,1,2,3]que=[0]*10head=tail=0foriinrange(len(data)):ifdata[i]%2!=0:que[tail]=data[i]tail+=1eliftail-head>1:que[tail-1]+=que[head]head+=lprint(que[head:tail])A.[3,2,1]B.[1,2,3]C.[1,3,1]D.[3,2,3]答案D4.(2024屆新陣地聯(lián)盟第二次聯(lián)考,11)有如下程序段:m=3;n=7head=tail=0;ans=0vis=[0]*10;q=[0]*10foriinrange(n):x=int(input())if(vis[x]=0):ans+=1if(tail-head>=m):vis[q[head]]=0head+=1q[tail]=xtail+=1vis[x]=1print(ans)運(yùn)行該程序段,依次輸入x的值:1,2,1,5,4,4,1。則程序運(yùn)行完成后ans的值是()A.3B.4C.5D.6答案C5.(2024屆天域全國(guó)名校協(xié)作體聯(lián)考,12)已知列表a的長(zhǎng)度為6,a[0]至a[5]的值依次為18,12,24,15,21,0,某程序如下所示:head,tail=0,5x=a[head]head+=1while(head+1)%len(a)!=tail:t=y=a[head]head=(head+1)%len(a)ifx<y:x,y=y,xifx%y!=0:a[tail]=x%ytail=(tail+1)%len(a)x=tprint(a[head])程序運(yùn)行后,輸出的結(jié)果是()A.24B.12C.3D.0答案C6.(2023“山水聯(lián)盟”開(kāi)學(xué)考,11)有如下Python程序代碼:s="ABCDEF";head=0;tail=0que=[""]*100foriinrange(len(s)):ifi%2==0:que[tail]=s[i]else:que[tail]=s[len(s)-i]tail=tail+1foriinrange(len(s)):print(que[head],end="")head=head+1以上程序運(yùn)行后,輸出列表的情況是()A.ABCDEFB.FEDCBAC.ACEFDBD.AFCDEB答案D考點(diǎn)四棧1.(2022浙南名校聯(lián)盟期末,10)一個(gè)棧的入棧序列為“6、9、5、7、8、3”,其出棧序列不可能是()A.3、8、7、5、9、6B.7、5、9、8、6、3C.6、5、7、9、3、8D.5、9、6、3、7、8答案D2.(2024屆百校起點(diǎn)調(diào)研測(cè)試,9)棧q初始有三個(gè)值,經(jīng)過(guò)一系列入棧、出棧操作后,棧為空,若元素出棧的順序是1,2,3,4,5,6,7,則棧q初始的情況可能是()A.[1,2,3]B.[7,5,6]C.[6,3,1]D.[4,7,2]答案C3.(2024屆Z20聯(lián)盟聯(lián)考,9)若元素入棧的順序是1,2,3,4,5,6,不允許連續(xù)三次入棧,則可能的出棧序列為()A.2,3,5,1,6,4B.1,2,3,6,5,4C.2,4,3,1,6,5D.2,5,4,6,3,1答案C4.(2024屆七彩聯(lián)盟聯(lián)考,9)假設(shè)棧S的最大長(zhǎng)度為3,其初始狀態(tài)和終止?fàn)顟B(tài)均為空,經(jīng)過(guò)一系列入棧和出棧的操作,若元素最后的出棧序列為F,E,D,C,B,A,則可能的入棧順序?yàn)?)A.ABCDEFB.ACDFEBC.BEFACDD.BFDECA答案D5.(2024屆嘉興基測(cè),12)待入棧的序列a有多種出棧序列,以下函數(shù)用于判斷序列b是不是a的出棧序列,代碼如下:defjudge(a,b):n=len(a);st=[-1]*ntop=-1;i=j=0whilei<n:top+=1①
i+=1whiletop>-1and②:
top-=1j+=1returntop==-1fromrandomimportshufflea=[1,2,3,4,5]b=[1,2,3,4,5]shuffle(b)#將序列b的元素隨機(jī)排序ifjudge(a,b):print(b,'是',a,'的出棧序列')else:print(b,'不是',a,'的出棧序列')程序運(yùn)行結(jié)果如圖所示。劃線處應(yīng)填寫(xiě)的語(yǔ)句是()python12.py[2,5,4,3,1]是[1,2,3,4,5]的出棧序列python12.py[5,2,3,1,4]不是[1,2,3,4,5]的出棧序列A.①st[top]=a[i]②st[top]==b[j]B.①st[top]=a[i]②st[-1]==b[j]C.①st[top]=b[i]②st[top]==a[j]D.①st[top]=b[i]②st[-1]==a[j]答案A6.(2022Z20名校聯(lián)盟,10)某算法利用“?!彼枷脒M(jìn)行字符串處理,其步驟如下:①創(chuàng)建長(zhǎng)度為n的空棧,字符依次入棧;②當(dāng)達(dá)到棧滿狀態(tài)或數(shù)據(jù)全部入棧時(shí),字符依次出棧,按照出棧順序連接成新字符串:③若還有未處理的字符,則重復(fù)步驟①②,直到全部字符處理完畢。實(shí)現(xiàn)該功能的Python程序如下:s=input("請(qǐng)輸入字符串:")n=5;st=[""]*ntop=-1;i=0;m=""whilei<len(s):while(1)andi<len(s):(2)st[top]=s[i]i+=1whiletop!=-1:m+=st[top](3)print("密文:",m)加框處(1)(2)(3)的代碼由以下代碼組成:①top-=1②top+=1③top+1<n④top<n下列選項(xiàng)中代碼順序正確的是()A.④②①B.③①②C.③②①D.④①②答案C7.(2022諸暨海亮高中月考,10)有如下程序段:bt=["A","B","C","D",None,"E","F"]result=[]stack=[]i=0whilestackor(i<len(bt)andbt[i]isnotNone):ifi<len(bt)andbt[i]isnotNone:stack.append(i)i=2*i+1else:i=stack.pop()result.append(bt[i])i=2*i+2print("-".join(result))則程序運(yùn)行后輸出的結(jié)果為()A.A-B-D-C-E-FB.D-B-E-F-C-AC.D-B-A-E-C-FD.A-B-C-D-E-F答案C考點(diǎn)五樹(shù)1.(2024屆Z20聯(lián)盟聯(lián)考,8)某二叉樹(shù)的樹(shù)形結(jié)構(gòu)如圖所示,其后序遍歷結(jié)果為“物技化數(shù)英語(yǔ)”,則中序遍歷結(jié)果為()A.語(yǔ)數(shù)英物化技B.物數(shù)技化語(yǔ)英C.語(yǔ)數(shù)物化技英D.化物技英數(shù)語(yǔ)答案B2.(2022名校協(xié)作體,10)已知二叉樹(shù)T2的后序遍歷序列為G-D-H-E-B-I-F-C-A,中序遍歷序列為D-G-B-E-H-A-C-I-F,則二叉樹(shù)T2的前序遍歷序列為()A.A-B-D-G-E-H-C-I-FB.A-B-D-G-E-H-C-F-IC.A-B-D-G-E-H-F-C-ID.該二叉樹(shù)形態(tài)不唯一,無(wú)法確定答案B3.(2024屆新陣地聯(lián)盟第二次聯(lián)考,8)某二叉樹(shù)的樹(shù)形結(jié)構(gòu)如圖所示,其后序遍歷結(jié)果為FABGDEC,則中序遍歷結(jié)果為()A.FDAGBCEB.FDABGECC.AGBDFCED.FDAGBEC答案A4.(2024屆天域全國(guó)名校協(xié)作體聯(lián)考,8)下列二叉樹(shù)中,后序遍歷結(jié)果不為CBFEAD的是()答案D5.(2024屆七彩聯(lián)盟聯(lián)考,8)某二叉樹(shù)用一維數(shù)組表示(見(jiàn)表)。該二叉樹(shù)從根節(jié)點(diǎn)開(kāi)始,按照從上到下,從左到右的順序依次用A-H字母表示,該二叉樹(shù)的中序遍歷為()01234567891011121314ABCDEFGHA.DBGEACFHB.DBGEACHFC.DBEGACHFD.ABCDEFGH答案A考點(diǎn)六大數(shù)據(jù)時(shí)代的數(shù)據(jù)的組織1.下列關(guān)于實(shí)時(shí)查詢數(shù)據(jù)系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)的說(shuō)法,不正確的是()A.在實(shí)時(shí)查詢系統(tǒng)中使用數(shù)組,時(shí)效性較差B.在鏈表中查找數(shù)據(jù)時(shí)效性較高,插入數(shù)據(jù)時(shí)效性較低C.跳躍表基于有序鏈表D.跳躍表通過(guò)跨區(qū)間、跳躍性的比較,避免了依次比較,提高了效率答案B2.有如下跳躍表:若要在原鏈表中插入元素7,則數(shù)據(jù)元素需要比較的次數(shù)為()A.1B.3C.4D.5答案B3.下列關(guān)于Hadoop的說(shuō)法,不正確的是()A.Hadoop是一種超大規(guī)模,高可靠性,高可擴(kuò)展性的數(shù)據(jù)庫(kù)B.Hadoop是Google云計(jì)算技術(shù)的開(kāi)源實(shí)現(xiàn)C.使用Hadoop可以在POI數(shù)據(jù)的處理中獲得更方便的體驗(yàn)和更低廉的成本D.Hadoop可以對(duì)海量地理信息進(jìn)行處理和計(jì)算答案A專題綜合練題組一1.(2024屆名校協(xié)作體聯(lián)考,8)某二叉樹(shù)的前序遍歷結(jié)果為GFDECAB,中序遍歷結(jié)果為DFGCAEB。關(guān)于該二叉樹(shù),以下說(shuō)法正確的是()A.該二叉樹(shù)的后序遍歷為ADFCBEGB.該二叉樹(shù)的深度為4,節(jié)點(diǎn)C在第3層C.該二叉樹(shù)的葉子節(jié)點(diǎn)數(shù)比非葉子節(jié)點(diǎn)數(shù)多一個(gè)D.該二叉樹(shù)可以通過(guò)添加3個(gè)節(jié)點(diǎn)后變?yōu)橥耆鏄?shù)答案B2.(2024屆強(qiáng)基聯(lián)盟聯(lián)考,8)某二叉樹(shù)的樹(shù)形結(jié)構(gòu)如圖所示,其后序遍歷結(jié)果為FBCEAD,則前序遍歷結(jié)果為()A.ABCDEFB.FEDCBAC.DFACBED.FDBCAE答案C3.(2024屆強(qiáng)基聯(lián)盟統(tǒng)測(cè),8)已知某二叉樹(shù)的后序遍歷為GDBEHFCA,中序遍歷為DGBAECHF,下列說(shuō)法正確的是()A.該二叉樹(shù)中葉子節(jié)點(diǎn)有3個(gè)B.該二叉樹(shù)的前序遍歷為ABDGCEHFC.該二叉樹(shù)是一棵完全二叉樹(shù),樹(shù)的高度為4D.該二叉樹(shù)中度為1的節(jié)點(diǎn)有2個(gè)答案A4.(2024屆新陣地聯(lián)盟第二次聯(lián)考,9)棧S初始狀態(tài)為空棧,將序列3,2,5,7,1中元素逐一入棧,當(dāng)棧空或入棧元素比棧頂元素大時(shí)則入棧,否則出棧至符合條件再入棧。序列所有元素入棧完畢后,棧內(nèi)剩余元素出棧,直至棧空。則出棧的順序是()A.17523B.37521C.37512D.32751答案B5.(2024屆天域全國(guó)名校協(xié)作體聯(lián)考,9)利用棧求逆波蘭表達(dá)式(表達(dá)式由操作數(shù)和運(yùn)算符組成)的方法是:從左往右掃描該表達(dá)式,遇到操作數(shù)時(shí)入棧;遇到運(yùn)算符時(shí),把處于棧上方的兩個(gè)元素依次出棧,用運(yùn)算符計(jì)算,并把計(jì)算結(jié)果壓入棧中。如此反復(fù)操作,直至表達(dá)式掃描結(jié)束。當(dāng)用該算法求逆波蘭表達(dá)式abcd-*e/+f-的值時(shí)(abcdef表示不同的操作數(shù)),所使用的棧的深度至少為()A.3B.4C.5D.6答案B6.(2024屆嘉興基測(cè),11)長(zhǎng)度為5的循環(huán)隊(duì)列que,que[0]至que[4]的值依次為'a','b','c','d','e',執(zhí)行如下程序段后,輸出的最后一個(gè)字符為()n=5;head=0;tail=4que=['a','b','c','d','e']whilehead!=tail:ifhead%4==0:print(que[head])else:tail=(tai1+1)%nque[tail]=que[head]head=(head+1)%nprint(que[head])A.bB.cC.dD.e答案B7.(2024屆發(fā)展共同體聯(lián)考,9)某種特殊的隊(duì)列Q,支持以下三個(gè)操作:操作Q1:若隊(duì)列非空,隊(duì)首元素出隊(duì),并輸出;操作Q2:若隊(duì)列非空,隊(duì)首元素出隊(duì);操作Q3:一個(gè)元素入隊(duì)。以上任意一種操作后,若隊(duì)列非空,新的隊(duì)首元素仍為隊(duì)列中所有元素的最小值。若隊(duì)列Q初始狀態(tài)為空,依次進(jìn)行Q3、Q2、Q1、Q2、Q3、Q1、Q3七次操作后,下列說(shuō)法正確的是()A.當(dāng)前隊(duì)列中的元素個(gè)數(shù)為2B.輸出的元素個(gè)數(shù)為2C.第一個(gè)輸出的元素肯定比當(dāng)前隊(duì)首元素大D.隊(duì)列初始狀態(tài)是不是空對(duì)輸出結(jié)果有影響答案D8.(2024浙江1月選考,8,2分)棧S從棧底到棧頂?shù)脑匾来螢?,2,3,隊(duì)列Q初始為空。約定:U操作是指元素出棧后入隊(duì),H操作是指元素出隊(duì)后再入隊(duì)。經(jīng)過(guò)UUHU系列操作后,隊(duì)列中隊(duì)首到隊(duì)尾的元素依次為()A.2,1,3B.3,1,2C.1,3,2D.2,3,1答案D9.(2024浙江1月選考,9,2分)數(shù)組元素a[0]至a[n-1]依次存放著n個(gè)數(shù)據(jù),現(xiàn)需要將元素a[n-1]插入在下標(biāo)為x(0≤x<n-1)的位置,例如:n為5,數(shù)組a為[0,3,4,6,7],x為2,插入操作后a為[0,3,7,4,6]。實(shí)現(xiàn)該功能的程序段如下,方框中應(yīng)填入的正確代碼為()temp=a[n-1]foriinrange(n-2,x-1,-1):a[x]=tempA.a[i+1]=a[i]B.a[i-1]=a[i]C.a[i]=a[i+1]D.a[i]=a[i-1]答案A10.(2024屆發(fā)展共同體聯(lián)考,11)有如下程序段:s=['']*len(a)head=2;q=head;top=-1whileq!=-1:top+=1s[top]=a[q][0]q=a[q][1]print(s[top-2])若a=[['a',3],['b',0],['c',1],['d',-1]],則輸出的結(jié)果為()A.aB.bC.cD.d答案B11.(2024屆強(qiáng)基聯(lián)盟聯(lián)考,11)有如下Python程序段:s=input()stack=[0]*len(s);top=-1;presign='+';num=0foriinrange(len(s)):if'0'<=s[i]<='9':num=num*10+int(s[i])ifi==len(s)-1ors[i]in'+-*/':ifpresign=='+':top+=1stack[top]=numelifpresign=='-':top+=1stack[top]=-numelifpresign=='*':top+=1stack[top]=stack[top-1]*numelse:top+=1stack[top]=stack[top-1]//numpresign=s[i]num=0print(sum(stack))#sum函數(shù)對(duì)stack中所有元素求和若輸入'5*4-6+10/3',程序運(yùn)行后,輸出的結(jié)果是()A.32B.24C.17D.8答案A12.(2023浙江1月選考,15,9分)有2組器件共n個(gè),要用一臺(tái)檢測(cè)設(shè)備檢測(cè)。每個(gè)送檢器件的信息包含送達(dá)時(shí)間、檢測(cè)時(shí)長(zhǎng)和優(yōu)先級(jí)。優(yōu)先級(jí)有m(1<m<6)個(gè)等級(jí),由高到低分別用0~m-1的整數(shù)表示。每個(gè)器件的送達(dá)時(shí)間各不相同。已送達(dá)的器件按照各優(yōu)先級(jí)通道分別排隊(duì),先到達(dá)先入隊(duì)。設(shè)備每次檢測(cè)都從當(dāng)前各非空隊(duì)列中,選取優(yōu)先級(jí)最高的隊(duì)列的隊(duì)首器件出隊(duì)進(jìn)行檢測(cè)。(同一時(shí)刻出現(xiàn)入隊(duì)和出隊(duì)時(shí),先處理入隊(duì)。)編寫(xiě)程序模擬檢測(cè)過(guò)程,先合并2組器件的數(shù)據(jù),然后計(jì)算所有器件的平均等待時(shí)長(zhǎng),其中每個(gè)器件等待時(shí)長(zhǎng)為其開(kāi)始檢測(cè)時(shí)間與送達(dá)時(shí)間的時(shí)間差。(時(shí)間單位均為秒)請(qǐng)回答下列問(wèn)題:(1)由題意可知,圖中器件A、B、C、D的檢測(cè)順序?yàn)锳—C—D—B,A、C、D的等待時(shí)長(zhǎng)分別為0、1、0,B的等待時(shí)長(zhǎng)是。
送達(dá)時(shí)間檢測(cè)時(shí)長(zhǎng)優(yōu)先級(jí)A032B112C211D43011321222(2)定義如下merge(lst1,lst2)函數(shù),參數(shù)lst1和lst2的每個(gè)元素由送達(dá)時(shí)間、檢測(cè)時(shí)長(zhǎng)和優(yōu)先級(jí)3項(xiàng)構(gòu)成,lst1和lst2均已按送達(dá)時(shí)間升序排列。函數(shù)功能是將lst2中的元素合并到lst1中,并將lst1按送達(dá)時(shí)間升序排列,函數(shù)返回lst1。defmerge(lst1,lst2):i=len(lst1)-1j=len(lst2)-1fortinrange(len(lst2)):lst1.append([0,0,0])#為lst1追加一個(gè)元素[0,0,0]k=len(lst1)-1whilej>=0:ifi>=0andlst1[i][0]>lst2[j][0]:lst1[k]=lst1[i]i-=1else:lst1[k]=lst2[j]j-=1k-=1returnlst1①調(diào)用merge(lst1,lst2)函數(shù),若lst1為[[0,3,2],[1,1,2],[12,2,2]],lst2為[[2,1,1],[4,3,0],[11,3,2]],則while語(yǔ)句中循環(huán)體的執(zhí)行次數(shù)是。
②若函數(shù)中while語(yǔ)句的條件“j>=0”誤寫(xiě)為“k>=0”,會(huì)導(dǎo)致某些情況下無(wú)法得到符合函數(shù)功能的結(jié)果。調(diào)用merge(lst1,lst2)函數(shù),下列4組數(shù)據(jù)中能測(cè)試出這一問(wèn)題的是(單選,填字母)。
A.lst1=[[0,3,2],[4,3,0]]lst2=[[1,1,2]]B.lst1=[[1,1,2]]lst2=[[0,3,2],[4,3,0]]C.lst1=[[1,1,2],[4,3,0]]lst2=[[0,3,2]]D.lst1=[[4,3,0]]lst2=[[0,3,2],[1,1,2]](3)實(shí)現(xiàn)模擬檢測(cè)過(guò)程并計(jì)算平均等待時(shí)長(zhǎng)的部分Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。defproc(data,m):n=len(data)queinfo=[]foriinrange(m):queinfo.append([-1,-1])#queinfo追加一個(gè)元素[-1,-1]foriinrange(n):data[i].append(-1)#data[i]追加一個(gè)元素-1curtime=0waitnum=0i=0①
whilei<norwaitnum>0:ifi<nanddata[i][0]<=curtime:k=data[i][2]ifqueinfo[k][0]==-1:queinfo[k][0]=ielse:②
data[p][3]=iqueinfo[k][1]=iwaitnum+=1i+=1elifwaitnum>0:k=0whilequeinfo[k][0]==-1:k+=1p=queinfo[k][0]total+=curtime-data[p][0]curtime+=data[p][1]③
waitnum-=1else:curtime=data[i][0]returntotal/n'''讀取2組器件的數(shù)據(jù),分別存入列表data1和data2中。2個(gè)列表的每個(gè)元素包含3個(gè)數(shù)據(jù)項(xiàng),分別對(duì)應(yīng)器件的送達(dá)時(shí)間、檢測(cè)時(shí)長(zhǎng)和優(yōu)先級(jí)。data1和data2中的數(shù)據(jù)已分別按送達(dá)時(shí)間升序排列,代碼略讀取優(yōu)先級(jí)等級(jí)個(gè)數(shù)存入m,代碼略'''data=merge(data1,data2)print(proc(data,m))答案(1)6或6秒(2)①4②A(3)①total=0或其他等價(jià)表達(dá)式②p=queinfo[k][1]或其他等價(jià)語(yǔ)句③queinfo[k][0]=data[p][3]或其他等價(jià)語(yǔ)句13.(2023浙江6月選考,15,9分)某工程包含n個(gè)任務(wù)(編號(hào)為0~n-1),每天可以有多個(gè)任務(wù)同時(shí)進(jìn)行。某些任務(wù)之間有依賴關(guān)系,如圖a所示,任務(wù)4依賴于任務(wù)1,任務(wù)1依賴于任務(wù)2。即任務(wù)2完成后才可以開(kāi)始任務(wù)1,任務(wù)1完成后才可以開(kāi)始任務(wù)4。不存在一個(gè)任務(wù)依賴于多個(gè)任務(wù),或多個(gè)任務(wù)依賴于同一個(gè)任務(wù)的情況?,F(xiàn)已對(duì)該工程的依賴關(guān)系進(jìn)行了梳理,結(jié)果如圖b所示,標(biāo)記“T”表示依賴關(guān)系需保留,標(biāo)記“F”表示依賴關(guān)系需刪除。根據(jù)每個(gè)任務(wù)完成所需的天數(shù)和梳理后的依賴關(guān)系,編寫(xiě)程序,首先刪除標(biāo)記為“F”的依賴關(guān)系,然后計(jì)算工程最快完成所需的天數(shù),并以工程最快完成所需的天數(shù)為期限,計(jì)算每個(gè)任務(wù)最晚必須開(kāi)始的時(shí)間。任務(wù)A任務(wù)B標(biāo)記05T54F41T12T23F注:任務(wù)A依賴于任務(wù)B圖b請(qǐng)回答下列問(wèn)題:(1)若某工程有6個(gè)任務(wù),任務(wù)間依賴關(guān)系如圖a所示,完成任務(wù)0~5所需天數(shù)分別為2,1,3,5,1,6,則工程最快完成需要天。
(2)定義如下erase(lst)函數(shù),參數(shù)lst列表的每個(gè)元素表示一個(gè)依賴關(guān)系。函數(shù)的功能是刪除標(biāo)記為“F”的依賴關(guān)系,返回保留的依賴關(guān)系的個(gè)數(shù)。deferase(lst):i=0j=len(lst)-1whilei<=j:iflst[i][2]=='T':i+=1else:iflst[j][2]=='T':lst[i]=lst[j]i+=1j-=1returni若lst列表依次存儲(chǔ)圖b所示的依賴關(guān)系,如lst[0]為[0,5,'T'],調(diào)用erase(lst)函數(shù),則語(yǔ)句“l(fā)st[i]=lst[j]”的執(zhí)行次數(shù)為。
(3)實(shí)現(xiàn)上述功能的部分Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。defproc(n,lst,task):pr=[0]*nw=[0]*n#w[i]存放任務(wù)最晚必須開(kāi)始的時(shí)間m=erase(lst)foriin①:
task[lst[i][1]][1]=lst[i][0]pr[lst[i][0]]=1c=[]days=0#days存放工程最快完成所需的天數(shù)foriinrange(n):ifpr[i]==0:k=is=0whilek!=-1:c.append(k)s+=task[k][0]②
ifs>days:days=sforiinrange(n-1,-1,-1):k=c[i]iftask[k][1]==-1:w[k]=days-task[k][0]+1else:③
#輸出days,以及保存在w中的每個(gè)任務(wù)最晚必須開(kāi)始的時(shí)間,代碼略"'工程包含的任務(wù)數(shù)存入變量n任務(wù)間的依賴關(guān)系存入lst列表lst[0]包含3項(xiàng),任務(wù)lst[i][0]依賴于任務(wù)lst[i][1],lst[i][2]存放保留/刪除標(biāo)記,任務(wù)數(shù)據(jù)存入task列表task[i]包含2項(xiàng),task[i][0]為完成任務(wù)所需天數(shù),task[i][1]的初值為-1代碼略"'proc(n,lst,task)答案(1)8(2)1(3)①range(m)或range(0,m)或range(0,m,1)或range(m-1,-1,-1)或range(erase(lst))或range(0,erase(lst))或range(0,erase(lst),1)或range(erase(lst)-1,-1,-1)②k=task[k][1]③w[k]=w[task[k][1]]-task[k][0]或w[k]=w[c[i+1]]-task[k][0]或其他等價(jià)答案(這里面可以把k換成c[i])14.(2024屆Z20聯(lián)盟聯(lián)考,15)小明同學(xué)去看病,當(dāng)他在一位醫(yī)生的診室門(mén)口等待就診的時(shí)候,發(fā)現(xiàn)了叫號(hào)系統(tǒng)的頁(yè)面上有兩行病人名單。第一行名單為正常排隊(duì)等待就診的序號(hào),第二行名單為過(guò)號(hào)或檢后再診而等待的序號(hào)。叫號(hào)的規(guī)則是先在第一行叫2個(gè)就診序號(hào),再到第二行叫1個(gè)就診序號(hào)。小明同學(xué)回家后將剛才發(fā)現(xiàn)的叫號(hào)規(guī)則編寫(xiě)了Python程序。效果如圖所示:圖①:當(dāng)前到來(lái)的就診序號(hào)是3號(hào),為過(guò)號(hào)或檢后再診序號(hào),進(jìn)入第二行,先到達(dá)先就診。圖②:當(dāng)前到來(lái)的就診序號(hào)是4號(hào),為過(guò)號(hào)或檢后再診序號(hào),進(jìn)入第二行。圖③:當(dāng)前到來(lái)的就診序號(hào)是16號(hào),為正常排隊(duì)等待就診的序號(hào),進(jìn)入第一行,按就診序號(hào)順序排列。圖④:開(kāi)始叫號(hào),按照正常排隊(duì)等待就診叫號(hào)2位,過(guò)號(hào)或檢后再診叫號(hào)1位,得到新的順序。請(qǐng)輸入取號(hào):313請(qǐng)輸入取號(hào):請(qǐng)輸入取號(hào):(1)請(qǐng)?jiān)趧澗€處填入合適的代碼。(2)加框處的代碼有誤,請(qǐng)改正。defoutput(head,a,b):p=headhead_b=0;tail_b=len(b)whilep!=-1:print(a[p][0],end="->")p=a[p][1]print()whilehead_b!=tail_b:print(b[head_b],end="->")head_b+=1print()definsert(data,a,b):#根據(jù)掛號(hào)的序號(hào)分別進(jìn)入第一行名單或第二行名單head_a=a[0][0]ifdata>①:
p=0a.append([data,-1])whilep!=-1:ifdata<=a[p][0]:a[-1][1]=pa[q][1]=len(a)-1breakelse:q=pp=②
ifp==-1:a[q][1]=③
output(0,a,b)else:b.append(data)output(0,a,b)#a、b賦初值,代碼略#如圖①所示:a=[[13,1],[15,2],[17,-1]];b=[3]whileTrue:data=int(input("請(qǐng)輸入取號(hào):"))#輸入0表示停止取號(hào),開(kāi)始叫號(hào)ifdata==0:breakinsert(data,a,b)print("====開(kāi)始叫號(hào)====")p=head=0head_b=0;tail_b=len(b)whilep!=-1orhead_b!=tail_b:ifp!=-1andhead_b!=tail_b:i=0whilea[p][1]!=-1:print(a[p][0],end="->")p=a[p][1]i+=1print(④,end="->")
head_b+=1elifp!=-1andhead_b==tail_b:print(a[p][0],end="->")p=a[p][1]else:print(b[head_b],end="->")head_b+=1答案(1)①a[0][0]或head_a②a[p][1]③len(a)-1④b[head_b](2)i<2andp!=-1或i<=1andp!=-115.(2022山水聯(lián)盟開(kāi)學(xué)考,15)小趙同學(xué)在某游戲平臺(tái)中獲得虛擬的食物、裝備、材料等物品,它們分別有不同的價(jià)值,現(xiàn)游戲平臺(tái)有兌換機(jī)制,即可用多個(gè)不同物品換取一個(gè)等值的物品(每個(gè)物品只能取一樣),下表為小趙同學(xué)已獲得的物品。序號(hào)物品名稱數(shù)量單價(jià)0靈丹211大力丸122止血草353忘魂花174雄黃195靈山仙芝5106梅花鏢1157止血草120目標(biāo)置換物品的價(jià)值:35。已獲得物品價(jià)值依次是:1,2,5,7,9,10,15,20。依次拿取物品序號(hào)的方案有:取序號(hào)為[0,1,2,3,7]的物品;取序號(hào)為[0,1,3,5,6]的物品;取序號(hào)為[0,2,4,7]的物品;取序號(hào)為[0,4,5,6]的物品;取序號(hào)為[2,5,7]的物品;取序號(hào)為[6,7]的物品。如要換取游戲中的物品“破天錘”,需要35個(gè)金幣,有多種置換的方式,為方便計(jì)算以節(jié)省時(shí)間,小趙同學(xué)編寫(xiě)了如下程序,運(yùn)行界面和代碼如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。defexchange(t,pricelist):n=len(pricelist)stack=[]i=0num=0while①:
whilet>0andi<n:ift>=int(pricelist[i]):stack.append(i)②
i+=1ift==0:print("取序號(hào)為",stack,"的物品")num+=1if③:
i=stack.pop()t+=int(pricelist[i])④
ifnum==0:print("無(wú)方案")m=int(input("目標(biāo)置換物品的價(jià)值:"))price=input("已獲得物品價(jià)值依次是:")p=price.split(",")#將輸入的內(nèi)容以“,”作分隔,并轉(zhuǎn)換為列表print("依次拿取物品序號(hào)的方案有:")exchange(m,p)答案①stackori<n或len(stack)!=0ori<n或等價(jià)答案②t=t-int(pricelist[i])或等價(jià)答案③len(stack)!=0或等價(jià)答案④i+=116.(2022名校協(xié)作體聯(lián)考,15)某校軍訓(xùn),需要按照身高由低到高排成n行5列的方陣。某班學(xué)生按照身高(100≤身高<199)由低到高編寫(xiě)編號(hào)并將相關(guān)信息存在圖1所示的“stu.txt”文件中。根據(jù)教官提出的排方陣要求,排成如圖2所示的方陣,方陣各點(diǎn)顯示學(xué)生編號(hào)。編號(hào)身高(cm)請(qǐng)輸入插入的學(xué)生身高(現(xiàn)有延遲報(bào)到學(xué)生歸隊(duì),歸隊(duì)學(xué)生編號(hào)延續(xù)該班現(xiàn)有編號(hào)依次往后,編寫(xiě)程序完成下列任務(wù):輸入學(xué)生身高,輸出新的方陣布局圖。例如:輸入學(xué)生身高為168,新的方陣布局圖如圖3所示,學(xué)生在方陣的位置:3,4。(1)若插入學(xué)生身高為160cm,根據(jù)圖1及范例,該學(xué)生應(yīng)該在圖2方陣中的行列。
(2)為實(shí)現(xiàn)上述功能,請(qǐng)?zhí)顚?xiě)劃線處代碼。f=open("stu.txt","r")a=[]line=f.readline().split()i=1whileline!=[]:a.append([line[0],line[1],i])i+=1line=f.readline().split()n=len(a)-1a[n][2]=-1sg=input("請(qǐng)輸入插入的學(xué)生身高(cm):")xh=str(len(a))head=1p=head;q=headwhile①:
p=qq=a[q][2]ifq==head:②
head=len(a)-1else:a.append([xh,sg,a[p][2]])a[p][2]=len(a)-1p=headm=1whilep!=-1:ifm!=5:print(a[p][0],end="")m+=1else:print(a[p][0])m=1③
答案(1)1,5(2)①a[q][1]<sgandq!=-1或int(a[q][1])<int(sg)andq!=-1②a.append([xh,sg,head])或a.append([xh,sg,p])或a.append([xh,sg,q])或等價(jià)答案③p=a[p][2]17.(2022A9協(xié)作體返???15)學(xué)校舉辦了“語(yǔ)文作文現(xiàn)場(chǎng)賽”,參賽同學(xué)成績(jī)存儲(chǔ)在文本文件“gra.txt”中,如圖a所示(每一行記錄一位同學(xué)的姓名和成績(jī),以“:”分隔)。陳老師利用Python程序?qū)ψ魑某煽?jī)進(jìn)行處理,統(tǒng)計(jì)出各個(gè)分?jǐn)?shù)等級(jí)的人數(shù),并輸出結(jié)果。程序運(yùn)行界面如圖b所示。成績(jī)分布如下:實(shí)現(xiàn)上述功能的Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。defcla(x):#判斷成績(jī)等級(jí)ifx>=50:return"A"elifx>=40:return"B"elifx>=30:return"C"else:return"D"gra=[]#存儲(chǔ)各個(gè)整數(shù)型成績(jī)num=[0]*4f=open("gra.txt")lines=f.readlines()#將f對(duì)象的數(shù)據(jù)按行存入列表lines中f.close()#關(guān)閉文件forlineinlines:#循環(huán)讀取列表lines中的每個(gè)元素,并做相應(yīng)處理a=line.strip().split(":")#去除結(jié)尾的換行符并以冒號(hào)為分隔符進(jìn)行分隔gra.append(①)
foriinrange(len(gra)):#統(tǒng)計(jì)各等級(jí)人數(shù)t=②
num[ord(t)-65]+=1print("成績(jī)分布如下:")foriinrange(len(num)):#輸出統(tǒng)計(jì)結(jié)果print(chr(i+65)+"等級(jí)有"+③+"人")
答案①int(a[1])或int(a[-1])②cla(gra[i])③str(num[i])18.(2023七彩陽(yáng)光開(kāi)學(xué)考,15)食堂推出的三款特色菜,分別用A、B、C表示,想用投票方式統(tǒng)計(jì)出三款菜的受歡迎程度。每位投票者需要將三款菜按喜愛(ài)程度從高到低進(jìn)行排列,并投出一票。如圖a所示,小明負(fù)責(zé)將文件“投票.txt”中的選票進(jìn)行統(tǒng)計(jì)。第1張選票信息為“A,C,B”,表示投票者認(rèn)為A菜優(yōu)于C菜,C菜優(yōu)于B菜,即A菜也優(yōu)于B菜。他得到如圖b所示的投票情況。對(duì)選票進(jìn)行統(tǒng)計(jì),得到三款菜的偏好,如圖c所示,數(shù)據(jù)第一行中的“6”說(shuō)明有6張選票顯示A菜優(yōu)于B菜,“10”說(shuō)明有10張選票顯示A菜優(yōu)于C菜,以此類推……將所有投票進(jìn)行統(tǒng)計(jì),再將三款菜的得票數(shù)進(jìn)行求和,按得票數(shù)從高到低排列,分別為A菜16票,B菜11票,C菜12票,即可得到每款菜的受歡迎程度。請(qǐng)回答下列問(wèn)題:(1)若有四款菜,投票情況如圖d所示,則第2受歡迎的菜為(填字母)菜。
(2)加框處代碼有錯(cuò)誤,請(qǐng)改正。(3)實(shí)現(xiàn)上述功能的Python程序如下,請(qǐng)?jiān)趧澗€①②③處填入合適的代碼。f=open('投票.txt')a=[]r=f.readline().strip()#從文件中讀取一行,并把末尾的'\n'刪掉whiler:#當(dāng)r非空(從文件讀取到了數(shù)據(jù))a=r.split(',')r=f.readline().strip()f.close()n=len(a[0])p=[0]*n**2foriina:forjinrange(n-1):x1=ord(i[j])-65forkinrange(①):
x2=ord(i[k])-65②
b=[['',0]foriinrange(n)]foriinrange(n):b[i][0]=chr(i+65)forjinrange(n):b[i][1]+=p[i*n+j]i=1whilei<n:x=b[i]j=i-1while③:
b[j+1]=b[j]j-=1b[j+1]=xi+=1foriinrange(n):print('第',i+1,'受歡迎的菜為',b[i][0],',得票為',b[i][1],'票')答案(1)D(2)a.append(r.split(','))(3)①j+1,n②p[x1*n+x2]+=1③j>=0andx[1]>b[j][1]或j>=0andx[1]>=b[j][1]題組二1.(2024屆百校起點(diǎn)調(diào)研測(cè)試,8)某二叉樹(shù)的中序遍歷為ABCDEF,則下列不可能是此二叉樹(shù)的是()答案C2.(2024屆發(fā)展共同體聯(lián)考,8)某二叉樹(shù)的樹(shù)形結(jié)構(gòu)如圖所示,其前序遍歷結(jié)果為BADCFGE,則字符“G”所在的位置為()A.①B.②C.③D.④答案C3.(2024屆浙南名校聯(lián)盟聯(lián)考,8)有一棵二叉樹(shù)如圖所示,下列說(shuō)法正確的是()A.此二叉樹(shù)是完全二叉樹(shù)B.此二叉樹(shù)的葉子節(jié)點(diǎn)有3個(gè)C.此二叉樹(shù)的后序遍歷為FDBECAD.此二叉樹(shù)用一維數(shù)組表示為['A','B','C','D','E','F']答案C4.(2024屆名校協(xié)作體聯(lián)考,9)有一組數(shù)據(jù)4,2,6,3,1,5按序入棧,則出棧的順序可能是()A.4,2,5,3,1,6B.1,3,5,2,6,4C.6,4,2,3,5,1D.6,2,4,3,1,5答案D5.(2024屆強(qiáng)基聯(lián)盟聯(lián)考,11)執(zhí)行下列Python程序代碼,若輸入的數(shù)據(jù)為"ABCDE",則輸出的結(jié)果不可能是()fromrandomimportrandintst=['']*10;top=-1;out=''s=input('s=')whiles:flag=randint(0,1)ifflag==1:top+=1;st[top]=s[0]s=s[1:]eliftop!=-1:out+=st[top];top-=1whiletop!=-1:out+=st[top];top-=1print(out)A.CEDABB.BDECAC.ABCEDD.DCBEA答案A6.(2024屆百校起點(diǎn)調(diào)研測(cè)試,11)有如下Python程序:q=[0]*6q[0]=1head=0;tail=1whiletail<len(q)-1:x=q[head]ifx%2==0:q[tail]=x//2tail+=1else:q[tail]=x*2q[tail+1]=x*3tail+=2head+=1程序運(yùn)行后,tail-head的值為()A.3B.4C.5D.6答案A7.(2024屆浙南名校聯(lián)盟聯(lián)考,9)下列關(guān)于隊(duì)列和棧的說(shuō)法,不正確的是()A.隊(duì)列是一種先進(jìn)先出的線性表,可在隊(duì)尾進(jìn)行插入操作B.棧的特性是“先進(jìn)后出,后進(jìn)先出”C.某棧的入棧的順序?yàn)閍bc,出棧順序只有3種D.隊(duì)列和棧都是線性數(shù)據(jù)結(jié)構(gòu),都可以用數(shù)組來(lái)實(shí)現(xiàn)答案C8.(2024屆浙南名校聯(lián)盟聯(lián)考,11)已知字符"a"的ASCII碼值為97,有如下Python程序段:que=[""]*20head,tail=0,0foriinrange(3):que[tail]=chr(97+i)tail+=1st=["b","c","d","a"]top=3whilehead<tailandtop>-1:ifst[top]==que[head]:head+=1else:que[tail]=st[top]tail+=1top-=1print(que[head:tail])執(zhí)行該程序段,則輸出的結(jié)果是()A.['c','d','c']B.['c','c','d']C.['c','','d']D.['c','d']答案A9.(2024屆強(qiáng)基聯(lián)盟統(tǒng)測(cè),12)有如下Python程序段:a=[iforiinrange(1,7)]b=[0]*6head,tail=0,0foriinrange(1,7):cnt=1whilecnt<i:a[tail]=a[head]head=(head+1)%6tail=(tail+1)%6cnt+=1b[a[head]-1]=ihead=(head+1)%6執(zhí)行該程序段后,b[5]的值為()A.2B.3C.4D.5答案B10.(2024浙江1月選考,12,2分)使用列表d模擬鏈表結(jié)構(gòu)(節(jié)點(diǎn)數(shù)大于0),每個(gè)節(jié)點(diǎn)包含數(shù)據(jù)區(qū)域和指針區(qū)域,h為頭指針。鏈表中各節(jié)點(diǎn)已按數(shù)據(jù)區(qū)域中數(shù)值的絕對(duì)值由小到大排列,如圖a所示?,F(xiàn)要修改該鏈表各節(jié)點(diǎn)的鏈接關(guān)系,使鏈表各節(jié)點(diǎn)按數(shù)據(jù)區(qū)域中的數(shù)值由小到大排列,結(jié)果如圖b所示。實(shí)現(xiàn)該功能的程序段如下,方框中應(yīng)填入的正確代碼為()t=hp=d[h][1]whilep!=-1:q=d[p][1]p=qd[t][1]=-1A.ifd[p][0]>0:d[q][1]=pd[t][1]=qelse:d[h][1]=qh=pB.ifd[p][0]>0:d[t][1]=qt=qelse:h=pd[p][1]=tC.ifd[p][0]>0:d[t][1]=pt=pelse:d[p][1]=hh=pD.ifd[p][0]>0:d[t][1]=qd[q][1]=pelse:d[p][1]=hh=q答案C11.(2024屆嘉興基測(cè),15)最短路徑問(wèn)題。以m*n個(gè)邊長(zhǎng)為1的正方形組成的矩形,各頂點(diǎn)按行優(yōu)先從0開(kāi)始編號(hào),圖a所示為3*2的矩形及頂點(diǎn)編號(hào)。從頂點(diǎn)x(起點(diǎn))經(jīng)由各正方形的邊移動(dòng)到頂點(diǎn)y(終點(diǎn))有多種移動(dòng)路徑,編程求解所有的最短路徑。(1)分析問(wèn)題,將矩形轉(zhuǎn)換為計(jì)算機(jī)可處理的數(shù)據(jù)??刹捎昧斜泶鎯?chǔ)矩形中各頂點(diǎn)的相鄰關(guān)系,如圖b所示。頂點(diǎn)相鄰頂點(diǎn)0[4,1]1[5,0,2]2[6,1,3]3[7,2]4[0,8,5]...圖b編寫(xiě)函數(shù)init,根據(jù)橫向和縱向的正方形數(shù)量,返回所有頂點(diǎn)及其所有的相鄰頂點(diǎn)數(shù)據(jù)。完善程序,在劃線處填入合適的代碼。definit(m,n):tot=(m+1)*(n+1)#頂點(diǎn)總數(shù)lst=[[]foriinrange(tot)]foriinrange(tot):ifi>m:lst[i].append(i-m-1)ifi<(m+1)*n:lst[i].append(i+m+1)ifi%(m+1)!=0:lst[i].append(i-1)ifi%(m+1)!=m:
returnlst(2)分析問(wèn)題,查找所有從起點(diǎn)到終點(diǎn)的最短路徑。例如:查找從起點(diǎn)1到終點(diǎn)10的所有最短路徑,可先查找終點(diǎn)10的所有相鄰頂點(diǎn)(6,9,11),然后再逐個(gè)查找頂點(diǎn)6、9、11的相鄰頂點(diǎn),直到查找到起點(diǎn)1,獲得所有最短路徑,如圖c所示,共有3條長(zhǎng)度為3的最短路徑,分別為1→2→6→10,1→5→6→10,1→5→9→10。若從起點(diǎn)4到終點(diǎn)11,共有條最短路徑。
(3)分析問(wèn)題,存儲(chǔ)查詢到的路徑。可采用鏈表結(jié)構(gòu)保存路徑數(shù)據(jù),例如:查找從起點(diǎn)1到終點(diǎn)10的所有最短路徑,首先將終點(diǎn)10的數(shù)據(jù)[10,0,-1]保存在path[0]中,然后將其相鄰頂點(diǎn)6、9、11的數(shù)據(jù)保存到path中,path[i][0]保存頂點(diǎn)的編號(hào),path[i][1]保存當(dāng)前頂點(diǎn)到終點(diǎn)的距離,path[i][2]保存下一頂點(diǎn)在path中的位置,其值為-1表示當(dāng)前頂點(diǎn)為終點(diǎn)。編寫(xiě)函數(shù)print_path,輸出所有的最短路徑。完善程序,在劃線處填入合適的代碼。defprint_path(x,path,length):#為起點(diǎn)編號(hào),length為path中有效元素個(gè)數(shù)cnt=0foriinrange(length):ifpath[i][0]==x:cnt+=1s="最短路徑"+str(cnt)+":"v=path[i]while:
s=s+str(v[0])+","v=path[v[2]]s=s+str(v[0])+"。"print(s)(4)實(shí)現(xiàn)上述功能的Python程序如下,運(yùn)行結(jié)果如圖d所示。請(qǐng)?jiān)趧澗€處填入合適的代碼。請(qǐng)輸入起點(diǎn):0請(qǐng)輸入終點(diǎn):10最短路徑1:0,1,2,6,10。最短路徑2:0,1,5,6,10。最短路徑3:0,4,5,6,10。最短路徑4:0,1,5,9,10。最短路徑5:0,4,5,9,10。最短路徑6:0,4,8,9,10。圖dm=3#橫向正方形數(shù)量n=2#縱向正方形數(shù)量mtx=init(m,n)x=int(input("請(qǐng)輸入起點(diǎn):"))y=int(input("請(qǐng)輸入終點(diǎn):"))path=[[]foriinrange(999)]passed=[False]*len(mtx)#保存頂點(diǎn)是否已途經(jīng)①
dis=0;head=0;tail=0path[tail]=[y,0,-1]tail+=1passed[y]=Truewhilenotfound:dis+=1pass_dis=[False]*len(mtx)tmp=tailforiinrange(head,tail):v=path[i]fordinmtx[v[0]]:ifnotpassed[d]:path[tail]=②
tail+=1pass_dis[d]=Trueifd==x:found=Truehead=tmpforiinrange(len(mtx)):#標(biāo)記已途經(jīng)的頂點(diǎn)if③:
passed[i]=True#輸出結(jié)果print_path(x,path,tail)答案(1)lst[i].append(i+1)(2)4(3)v[2]!=-1或v[2]>=0(4)①found=False②[d,dis,i]③pass_dis[i]或pass_dis[i]==True12.(2022A9協(xié)作體返???16)字符串分段。輸入一串僅由小寫(xiě)字母組成的字符串s,將這個(gè)字符串劃分為盡可能多的小片段,要求同一個(gè)字母只出現(xiàn)在其中的一個(gè)片段中,并按照分段順序逐行輸出分段結(jié)果。程序運(yùn)行界面如下:請(qǐng)輸入一串僅包含小寫(xiě)字母的字符串:asdasmhjhhasdasmhjhh(1)實(shí)現(xiàn)上述功能的Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。s=input("請(qǐng)輸入一串僅包含小寫(xiě)字母的字符串:")c=0p=[-1]*52#數(shù)組p用來(lái)記錄各個(gè)小寫(xiě)字母出現(xiàn)的起始位置和結(jié)束位置#a[0]記錄a出現(xiàn)的起始位置,a[1]記錄a出現(xiàn)的結(jié)束位置,依此類推foriinrange(0,len(s)):#記錄各字符第一次和最后一次出現(xiàn)的位置a=①
ifp[2*a]==-1:p[2*a]=ielse:p[2*a+1]=iforiinrange(0,26):ifp[2*i]>p[2*i+1]:p[2*i+1]=p[2*i]#只出現(xiàn)一次的字符,起始位置就是結(jié)束位置ifp[2*i]!=-1:c+=1foriinrange(0,c):#將字符位置按照出現(xiàn)的起始位置升序排序forjinrange(25,i,-1):ifp[2*j]>-1:ifp[2*(j-1)]>p[2*j]or②:
p[2*(j-1)],p[2*j]=p[2*j],p[2*(j-1)]p[2*(j-1)+1],p[2*j+1]=p[2*j+1],p[2*(j-1)+1]t1,t2=p[0],p[1]#字符串分段foriinrange(1,c):ifp[2*i]<t2andp[2*i+1]>t2:③
elifp[2*i]>t2:print(s[t1:t2+1])t1,t2=p[2*i],p[2*i+1]print(s[t1:t2+1])(2)運(yùn)行程序后,若輸入的字符串s為"hshjhqueeqabaa",輸出的結(jié)果一共行,其中第二行顯示結(jié)果為。
答案(1)①ord(s[i])-97或ord(s[i])-ord("a")②p[2*(j-1)]==-1③t2=p[2*i+1](2)3;queeq13.(2022Z20名校聯(lián)盟聯(lián)考,15)校學(xué)生會(huì)要從兩個(gè)候選人A和B中選舉一個(gè)會(huì)長(zhǎng),每個(gè)候選人都有自己的支持方?,F(xiàn)在以輪為過(guò)程來(lái)進(jìn)行選舉,在每一輪選舉中,當(dāng)前成員可以禁止另一位成員的選舉權(quán),即讓另一位成員在這一輪和隨后的幾輪中都喪失選舉權(quán)。在選舉過(guò)程中,一旦有選舉權(quán)的成員都來(lái)自同一個(gè)陣營(yíng),則該陣營(yíng)勝利。字母A和B分別代表兩位候選人,輸入一個(gè)字符串代表每個(gè)成員的陣營(yíng),例如輸入“ABB”,則輸出結(jié)果為B,即候選人B為會(huì)長(zhǎng)。說(shuō)明:第一輪中,第一個(gè)成員(A)可以讓第二個(gè)成員(B)失去選舉權(quán),第二個(gè)成員(B)會(huì)被跳過(guò),因?yàn)樗倪x舉權(quán)被禁止,第三個(gè)成員(B)可以讓第一個(gè)成員(A)失去選舉權(quán),因此在第二輪只剩下第三個(gè)成員(B)擁有選舉權(quán),則輸出結(jié)果為B,即候選人B為會(huì)長(zhǎng)。(1)若輸入“ABABB”,則會(huì)長(zhǎng)為。
(2)實(shí)現(xiàn)上述功能的Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。s=input("請(qǐng)輸入投票字符串:")queA=[""]*100;queB=[""]*100headA=headB=0tailA=tailB=0n=len(s)foriinrange(n):if①:
queA[tailA]=itailA+=1else:queB[tailB]=itailB+=1while②:
ifqueA[headA]<queB[headB]:queA[tailA]=queA[headA]+ntailA+=1else:queB[tailB]=queB[headB]+ntailB+=1headA+=1;headB+=1if③:
print("B")else:print("A")答案(1)A(2)①s[i]=="A"②headA!=tailAandheadB!=tailB③headA==tailA14.(2022Z20名校聯(lián)盟聯(lián)考,16)“最小波動(dòng)值”是經(jīng)濟(jì)管理學(xué)上的一種衡量營(yíng)業(yè)情況是否穩(wěn)定的概念,當(dāng)“最小波動(dòng)值”越大時(shí),就說(shuō)明營(yíng)業(yè)情況越不穩(wěn)定。經(jīng)濟(jì)管理學(xué)上對(duì)“最小波動(dòng)值”的定義:某一天的“最小波動(dòng)值”=min{|該天以前某一天的營(yíng)業(yè)額-該天營(yíng)業(yè)額|},第一天的“最小波動(dòng)值”為第一天的營(yíng)業(yè)額。若要分析某個(gè)店鋪的營(yíng)業(yè)情況是否穩(wěn)定,只需要把一段時(shí)間內(nèi)每一天的“最小波動(dòng)值”加起來(lái)即可?,F(xiàn)根據(jù)某個(gè)店鋪一段時(shí)間內(nèi)每一天的營(yíng)業(yè)額(說(shuō)明:支出為0表示該天不營(yíng)業(yè)),設(shè)計(jì)程序計(jì)算該店鋪的“最小波動(dòng)值”之和。(1)若營(yíng)業(yè)額數(shù)據(jù)為“13,10,14,15,3,11”,則“最小波動(dòng)值”之和是。
(2)實(shí)現(xiàn)上述功能的Python程序如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。importpandasaspdnum=[]#數(shù)組num按經(jīng)營(yíng)時(shí)間順序存儲(chǔ)每天營(yíng)業(yè)額numy=[]#數(shù)組numy按營(yíng)業(yè)額降序存儲(chǔ)每天營(yíng)業(yè)額item=[]#根據(jù)數(shù)組numy構(gòu)造鏈表itemdf=pd.read_excel("yye.xlsx")df=①#篩選出營(yíng)業(yè)的記錄
df["營(yíng)業(yè)額"]=df.sum(axis=1)#在df對(duì)象最后一列插入“營(yíng)業(yè)額”列df1=df.sort_values("營(yíng)業(yè)額",ascending=False)foriindf.index:num.append(df["營(yíng)業(yè)額"][i])foriindf1.index:numy.append(df["營(yíng)業(yè)額"][i])n=1foriinnumy:item.append([i,n])n+=1item[n-2][1]=-1head=0k=0②
foriinnum[-1:-len(num):-1]:p=headwhileitem[p][0]!=i:k=pp=item[p][1]f=item[p][1]iff==-1:tot+=abs(item[k][0]-item[p][0])elifp==head:tot+=abs(item[f][0]-item[p][0])else:tot+=min(abs(item[k][0]-item[p][0]),abs(item[f][0]-item[p][0]))ifp==head:head
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026秋招:福建大數(shù)據(jù)集團(tuán)面試題及答案
- 2026秋招:大自然鋼業(yè)集團(tuán)試題及答案
- 大學(xué)的總法律顧問(wèn)制度
- 培訓(xùn)學(xué)校消防安全制度
- 團(tuán)支部團(tuán)員大會(huì)制度
- 病房心理關(guān)懷空間營(yíng)造方案
- 婦幼保健院節(jié)慶活動(dòng)策劃方案
- 小學(xué)職業(yè)生涯規(guī)劃教育空間方案
- 2025-2030中國(guó)薪柴行業(yè)營(yíng)銷策略與投資前景預(yù)測(cè)研究報(bào)告
- 病房患者家屬休息區(qū)方案
- 仁愛(ài)科普版(2024)八年級(jí)上冊(cè)英語(yǔ)Unit1~Unit6補(bǔ)全對(duì)話練習(xí)題(含答案)
- 腎寶膠囊產(chǎn)品課件
- 2026河南安陽(yáng)市兵役登記參考考試試題及答案解析
- Unit 1 Time to Relax Section B(1a-2c)教學(xué)課件 人教新教材2024版八年級(jí)英語(yǔ)下冊(cè)
- 買(mǎi)車背戶協(xié)議書(shū)
- 護(hù)理投訴糾紛防范及處理
- 煙囪技術(shù)在血管腔內(nèi)修復(fù)術(shù)中的應(yīng)用教案
- 檢驗(yàn)科甲流實(shí)驗(yàn)室檢測(cè)流程
- 紀(jì)檢監(jiān)察業(yè)務(wù)培訓(xùn)
- 急慢性失血性貧血課件
- 人教版七年級(jí)上冊(cè)歷史期末模擬試卷及答案
評(píng)論
0/150
提交評(píng)論