資源簡介 數據與數據結構 綜合檢測題一、選擇題1.下列python語句中,執行結果一定不是“10”的為( )A.x+10 B.x-10 C.x*10 D.x%102.下列Python表達式中,書寫錯誤的是( )A.x=!Y B.9//3 C.ac D.(x**2-6)**0.53.Python表達式10**2//6%8的值為( )A.0 B.3 C.4 D.14.語句print(2**4)的輸出結果是( )A.2**4 B.8 C.16 D.325.Python表達式int(-2**2-9/5)的值是( )A.2 B.3 C.-5 D.-66.在Python中,表達式100-25*4%3的值是( )A.1 B.99 C.25 D.07.有1個隊列,現有元素依次為1,2,3,4。約定:P操作是指1個入隊,T操作是指隊列中1個元素出隊后再入隊,Q操作是指隊列中1個元素出隊。則經過PPTQTPQ系列操作后,隊列中隊首到隊尾的元素依次為( )A.1 B.1,3 C.3,4 D.38.有以下Python程序段:import randomk=10;que=[0]*2*kque[0]=random.randint(1,20)head=0;tail=1;i=1while i a=random.randint(1,20) if a%2!=que[tail-1]%2: que[tail]=a tail=tail+1 elif a%2!=que[head]%2: que[tail]=que[head] que[tail+1]=a tail=tail+2 head=head+1 i=i+1print(que[head:tail])運行該程序段后,輸出結果不可能的是( )A.[20,1,10,5,4] B.[14,17,10,3,12]C.[5,16,5,4,13,20,11] D.[13,10,5,16,19,10,20]9.有一個棧s,經過一系列入棧、出棧操作,從棧頂到棧底的元素依次為e、f、g、h,并且已知元素i已入棧并出棧,則這五個元素的入棧順序可能為( )A.e,f,g,h,i B.f,i,g,h,e C.g,I,f,e,h D.h,i,g,f,e10.某二叉樹的后序遍歷為?-?-?-?-A-D,中序遍歷序列為F-B-D-A-C-E,則該二叉樹的前序遍歷不可能為( )A.D-B-F-A-E-C B.D-B-F-A-C-E C.D-F-B-C-A-E D.D-F-B-A-C-E11.有如下Python程序段:num="1433218";k=3n=len(num);ans=""s=[""]*n;top=-1;for i in num:while k>0 and top>-1 and s[top]>i:top-=1k-=1top+=1s[top]=iif k>0:top-=kwhile top > -1:ans=s[top]+anstop-=1print(ans)執行該程序段后,輸出的內容是( )A.1321 B.1322 C.3121 D.121812.有如下Python程序段:a="Python";q=[0]*6head,tail=0,0i=len(a)-1while i>=0:if i%3!=0:q[tail]=a[i]else:q[tail]=q[head]head+=1tail+=1i-=1print(q[head:tail])當執行該程序段后,輸出的結果是( )A.['n','t','y','o'] B.['n','t','y'] C.['n','o','n','t','y'] D.['n','o','n','t','y','o']13.某二叉樹如圖所示,下列說法正確的是( )A.該二叉樹是完全二叉樹 B.該二叉樹有4個葉子節點C.該二叉樹的中序遍歷結果為BDACFE D.該二叉樹用一維數組表示為['A','B','C','D','E','F']14.n為自然數,當n=1時,f(1)=2,否則f(n)=f(n-1)*3。求解當n=4時,f(4)的值是( )A.6 B.12 C.36 D.5415.有如下Python程序段:key=int(input())i=0;j=len(a)-1s=""while i<=j:m=(i+j+1)//2if key==a[m]:breakif keyj=m-1else:i=m+1s+=str(a[m])+","print(s[:-1])若數組元素a的值為[6,15,18,20,25,30,35,38,41,46],輸入正整數key值,執行該程序段,輸出的值可能是( )A.30,20 B.30,41,38 C.25,15,6 D.25,38,4116.若對變量r的值進行0和1之間的轉換運算,下列選項中無法實現此功能的是( )A.r=1-r B.r=abs(r-1)C.r=(r+1)%2 D.r=r%2+117.Python中,下列用于交換x,y 兩個變量的值的語句,不正確的是( )A.x=y;y=x B.t=x;x=y;y=tC.t=x+y;x=t-x;y=t-y D.x,y=y,x18.已知某二叉樹的后序遍歷為GDBEHFCA,中序遍歷為DGBAECHF,下列說法正確的是( )A.該二叉樹中葉子節點有3個 B.該二叉樹的前序遍歷為ABDGCEHFC.該二叉樹是一棵完全二叉樹,樹的高度為4 D.該二叉樹中度為1的節點有2個19.Python表達式3*4**2%10的值是()A.0 B.2 C.4 D.820.有一棵二叉樹,如圖所示,下列說法正確的是( )A.此二叉樹是完全二叉樹B.此二叉樹的葉子節點有3個C.此二叉樹的后序遍歷為F—D—B—E—C—AD.此二叉樹用一維數組表示為[‘A’‘B’,‘C’,‘D’,‘E’,‘F’]二、填空題21.下面程序運行結果是( )a=10s=0if a>5: s=s+aprint(s)22.使用( )關鍵字來創建python自定義函數。23.已知 a = 5,那么執行語句 a += 3 之后, a 的值為 。24.print(1, 2, 3, sep=',') 的輸出結果為( )25.用來接收鍵盤輸入的函數是( ),python輸出的函數是( )26.Python 標準庫 math 中用來計算平方根的函數是( ),取大于等于x的最小的整數值函數是( ),求絕對值的函數是( )。27.下面程序實現從100到1000以內的水仙花數,請補全空缺內容for i in range(100,1000): a= b= (i//10)%10 c=i%10 if i== print(i)28.以下程序引入Python的math模塊,使用math模塊下的floor函數對命令行輸入的實數進行取整n=input(“請輸入一個實數:”)n2= math. floor(float(n))print(n2)該程序段劃線處應填入的代碼為 。29.有如下程序段:score=int(input(“請輸入分數:”))if score>60:score+=20score+=10print(score)若程序運行后輸入20,打印出的 score的值為 。30.在Python程序設計語言中,運行以下程序,顯示的運行結果是( )a=3b=4if a+b>8: print(a)if a+b<=8: print(b)三、判斷題31.在Python中,s=s+5是錯誤的賦值語句。( )32.數據資源是指人類社會信息活動中積累起來的以信息為核心的各類信息活動要素,但是不包括人這類因素。( )33.Python語言的表達式中,“%”是取模算術運算符。( )34.在程序語言中都規定了運算符的優先級,通常是算術運算符高于關系運算符,關系運算符高于邏輯運算符,在一個表達式中無法通過其他手段改變運算順序。( )35.在 Python語言環境下,表達式13%2+7//2的值為4.5。 ( )四、操作題36.用Python編輯器打開“451”下的文件“計算.py”,進行以下操作并保存結果。(1)一個正整數的階乘是所有小于及等于該數的正整數的積,并且0的階乘為1,即n!=1×2×3×..×(n-1)×n。即,現計算,并輸出A的值。(3)編寫完成后原名保存并關閉應用軟件。def jc(n): #利用遞歸的方法求n! if n == 0 or : return else: return n=int(input('請輸入正整數n:'))if n>0: #如果n為正數,且為整數 A = #計算A的值 print('A=', A)else:print('輸入的數據有誤,無法計算')37.對數組a中的n個元素進行排序,生成左右交替上升的數據序列,結果如下表所示:a(1) a(2) a(3) …… a(n-2) a(n-1) a(n)27 35 39 …… 49 39 33小華由此設計一個VB程序,功能如下:單擊“排序”按鈕Command1,隨機生成10個兩位奇數,將隨機生成的數據序列顯示在文本框Text1中,在文本框Text2中顯示完成排序后的數據序列,運行結果如圖所示。Private Sub Command1_Click()Dim a(1 To 10) As IntegerRandomizeConst n = 10For i = 1 To n a(i) = ① Text1.Text = Text1.Text + Str(a(i))Next iFor i = 1 To n \ 2 For j = n - i + 1 To i + 1 Step -1 If a(j) < a(j - 1) Then t = a(j - 1) ② a(j) = t End If Next j For j = i + 1 To n - i If Then t = a(j): a(j) = a(j + 1): a(j + 1) = t End If Next jNext iFor i = 1 To n Text2.Text = Text2.Text + Str(a(i))Next iEnd Sub(1)代碼Command1_Click()中的Click屬于(單選,填字母:A.對象名/B.事件名/C.方法名/D.事件處理過程名)。(2)程序代碼中,劃線①處的代碼可能是 (單選,填字母)。A.Int(Rnd * 88) + 11 B.Int(Rnd * 89) + 11C.Int(Rnd * 44) * 2 + 11 D.Int(Rnd * 45) * 2 + 11程序代碼中,在劃線②處填入合適的代碼。(3)程序代碼中,加框處語句有錯,請改正。改正:38.AB兩個籃球隊進行了多場比賽,現在要統計比分并確定獲勝球隊。計分規則是勝場多的隊伍獲勝,若勝場相同,則計算累計小分(小分=本隊得分-對手得分),小分多獲勝,若還是相同,則算平局。小藍同學根據上述算法編寫了一個VB程序實現比賽結果統計。每場比分記錄在文本框Text1中,單擊“統計”按鈕command1,把兩隊每場按AB兩隊比分差降序顯示在列表框list1中,同時在文本框Text2輸出最終結果。部分程序界面如圖所示。Private sub command1_click() Dim a(1 to 20) as integer,b(1 to 20) as integer,i as integer Dim j as integer,t as integer,p as integer,k as integer,xiaofen as integer‘從文本框讀取AB兩隊各場的比分分別存數組a、b,場次k,代碼略 For i=1 to k-1For j= 1 to If then t=a(j):a(j)=a(j+1):a(j+1)=t t=b(j):b(j)=b(j+1):b(j+1)=t End ifNext jNext ip=0 : xiaofen=0For i=1 to k if a(i)>b(i) then xiaofen = xiaofen+a(i)-b(i) List1.Additem str(a(i)) + “:”+ str(b(i))Next iIf p*2>k or k=p*2 and xiaofen>0 thenText2.text = “A隊獲勝”Elseif then Text2.text = “B隊獲勝”ElseText2.text = “兩隊平局”End ifEnd sub(1)在程序劃線處填入合適代碼,使程序完整(2)加框處代碼有錯誤,請改正。(3)若希望程序在運行時列表框list1內容清空,則應該在代碼中添加語句 (單選,填字母:A.list1.additem B.list1.clear C.list1.caption )39.查找最短26個字母字符串:在文本框Text1中輸入任意一串包含小寫字母的字符串(長度n>=26),要求找到長度最小的一段區間,能夠包含全部26個小寫英文字母。小王設計了VB程序用于搜索最短字符串,單擊“查找”按鈕command1,若無解,則在標簽Label1中輸出“無解!”,反之程序在標簽Label1中輸出該最小區間的長度以及字符的開始位置,并在文本框Text2中輸出相應的最短字符串,程序界面如圖所示:(1)確定初始右邊界:從第1個字符開始,向右搜索到包含全部26個字母的子串,并因此而確定右邊界,同時記錄每個字母在子串中出現過的次數。(2)調整子串左邊界:若左邊界有重復的字母則表明該子串可縮短,故左邊可右移1位……直到找到一個符合條件的子串并記錄,然后子串左邊界再右移1位。(3)調整子串右邊界:子串右邊界繼續右移,在新子串符合條件后,記錄并進行比較。重復(2)各調整步驟,直至遍歷完整個字符串,獲得并輸出滿足條件的最小長度字符串。實現上述功能的VB程序如下,請回答下列問題。(1)對于字符串“qbwcadsgeqbdatcy”,包括字母“abcde”的最短字符串長度為 (填數字)。(2)請在畫線處填入合適的代碼。Const n = 300Dim i As Integer, k As Integer, length As Integer, L As IntegerDim pos As Integer, s1 As String, res As StringDim f(1 To 26)As Integer '數組f記錄每個小寫英文字母的出現次數Dim s(1 To n)As Integer '數組s記錄每個輸入字符在字母表中的位置Private Sub Command1_Click() res = "" s1 = Text1.Text For i = 1 To Len(s1) s(i)=① Next i k = 0: pos = 1: length = n For i = 1 To 26 f(i)= 0 Next i For i = 1 To Len(s1) If f(s(i))= 0 Then k = k + 1 f(s(i))= f(s(i))+ 1 '調整右邊界,直到達到26個字母 Do While② f(s(pos))= f(s(pos))- 1 If③ Then k = k - 1 If i - pos + 1 < length Then length = i - pos + 1 res = Mid(s1, pos, length) L = pos End If End If pos = pos + 1 Loop Next i If res <> "" Then Text2.Text = res Label1.Caption = "最短長度:" + Str(length)+ "開始位置:" + Str(L) Else Label1.Caption = "無解!" End If End Sub40.某著名景點在七月份收到若干旅游公司的通告,通告中包括該公司旅游的起始時間和終止時間, 如[6,10]表示該旅行團 6 號早上到,10 號早上回。疫情期間為避免人員扎堆,公司在時間段[start, ending]進行限流操作,要求在該時間段內景點每天都接待游客,且接待的旅行團越少越好。若景點收到的旅行團的數據是[3,8]、[3,6]、[8,15]、[18,25]、[14,20]、[5,10],[10,18]、[13,18]限流時間是[4,19]。工作人員對旅行團的數據做了如下處理:①將旅行團的旅行時間按照“到達時間”為主要關鍵字,“返回時間”為次要關鍵字升序排序。排好序的時間段是[3,6]、[3,8]、[5,10]、[8,15]、[10,18]、[13,18],[14,20]、[18,25].②從前往后遍歷時間段,選擇“到達時間”不大于“限流開始時間”的時間段,若有多個時間段滿足條件,且時間段未超出限流時間,應選擇“返回時間”最大的時間段,選擇的時間段是[3,8]。③縮小限流時間[8,19],重復步驟 2,選擇滿足條件的時間段是[8,15],縮小限流時間[15,19],重復步驟 2,選擇滿足條件的時間段是[14,20],結束時間已超過限流終止時間,結束。④若在遍歷時間過程中出現“到達時間”大于“限流開始時間”,景點不能每天接待旅客,則沒有滿足條件的旅行社。小王編寫 VB 程序,程序界面如下所示,單擊“排序”按鈕,將旅行團的時間按照“到達時間”為主要關鍵字,“返回時間”為次要關鍵字升序排序,在 Text1 和 Text2 中輸入限流的起始時間和終止時間,單擊“滿足條件的旅行團”按鈕,在列表框輸出滿足條件的旅行團的時間,若沒有滿足條件的旅行社,則在列表框輸出“沒有滿足條件的旅行團!”回答下列問題:(1)若景點接收到的旅行社的起始時間和終止時間分別為[5,17]、[7,18]、[4,12]、[3,8]、[2,10], 限流時間是[3,15],篩選出的旅行團的時間是(2)請在橫線處填入合適的代碼Dim i As Integer, j As Integer, n As Integer, t As Integer Dim a(100) As Integer, b(100) As IntegerPrivate Sub Command1_Click()' 將旅行團個數存入 n,加載 n 個旅行團的起始時間、終止時間并分別放在數組 a 和數組 b 中,代碼略For i = n to 2 step -1 j=1 Do while ① If a(j) > a(j + 1) Or a(j) = a(j + 1) And b(j) > b(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t t = b(j): b(j) = b(j + 1): b(j + 1) = t End If j=j+1LoopNext i' 輸出排好序的時間段,代碼略End SubPrivate Sub Command2_Click() Dim arrivetime As Integer, leavetime As Integer start = Val(Text1.Text): ending = Val(Text2.Text) For i = 1 To n arrivetime = start If a(i) <= arrivetime Then If b(i) > leavetime Then leavetime = b(i):t=i If② Then List2.AddItem Str(a(t)) & "---" & Str(b(t)) Exit For End If Else If start < arrivetime or i = 1 Then List2.Clear List2.AddItem "沒有滿足條件的旅行團!" Exit For End If List2.AddItem Str(a(t)) & "---" & Str(b(t))③i = i – 1 End If Next iEnd Sub參考答案:1.D2.A3.A4.C5.C6.B7.D8.D9.D10.C11.D12.A13.C14.D15.B16.D17.A18.A19.D20.C21.1022.def23.824.1,2,325. input() print()26. sqrt() ceil() fabs()27. i//100 a*a*a+b*b*b+c*c*c:或a**3+b**3+c**3:28.import math29.3030.431.錯誤32.錯誤33.正確34.錯誤35.錯誤36. n==1 1 n*jc(n-1) 3**n/jc(n)37. B D a(j - 1)=a(j) a(j) < a(j + 1)38. k-i a(j)-b(j)>a(j+1)-b(j+1) p=p+1 p*239. 7 Asc(Mid(s1, i, 1))-96或Asc(Mid(s1, i, 1))-Asc("a")+1 k = 26 f(s(pos))= 040. [2, 10], [5, 17] j=ending start= leavetime 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫