浙教版(2019)選擇性必修1《第五章 數據結構與算法》2022年單元測試卷(6)
發(fā)布:2024/12/14 8:0:22
一.選擇題(共30小題)
-
1.8位同學的語文數學成績總分從高到低為“178,176,173,172,170,168,163,160”。用二分查找法178的過程中,依次被訪問到的成績數據是( ?。?/h2>
組卷:1引用:2難度:0.6 -
2.有如圖 python 程序段,該程序段運行后,變量 k1,k2 的值分別為( )
組卷:2引用:3難度:0.5 -
3.有Python程序段,功能如下:運行程序后輸入要查找的key值,要求在一個由n個數組成的降序排序隊列的數組中,查找第一個小于等于key的元素下標并輸出。
key=int(input( ?。?br />L,R=0,n
while L<R:
m=
if :
L=m
else:
R=m-1
if L=n:
print(“數據不存在“)
else:
print(str(L+1))
要使程序實現(xiàn)上述功能,畫線處填入的代碼是( )組卷:1難度:0.5 -
4.有如下Python程序段:
s=input(“請輸入一串字符串:”)
m=cnt=1
for i in range(1,len(s)):
if s[i]>s[i-1]:
cnt+=1
if cnt>m:
m=cnt
else:
cnt=1
print(m)
該程序段的功能是( ?。?/h2>組卷:14引用:5難度:0.5 -
5.峰值元素指數組中其值大于左右相鄰值的元素,如序列3,8,4,1中8為峰值元素。一個數組中可能包含多個峰值元素,現(xiàn)需要找出其中一個峰值元素所在的位置(默認第一個數的左側和最后一個數的右側值為0,即序列1、2、3中3也為峰值元素)。現(xiàn)有實現(xiàn)該功能的Python程序如下:
數組a=[10,2,25,17,20,21,9],執(zhí)行該程序后,輸出的值為( )組卷:5引用:3難度:0.4 -
6.某程序段如下:
執(zhí)行該程序后,當輸入的key值為15時,輸出的結果是( ?。?/h2>組卷:5引用:3難度:0.4 -
7.某Python程序如下:
數組a中的元素為“58,69,78,80,83,84,90,90,95“,則執(zhí)行該程序段后,數組 s中的元素不可能為( ?。?/h2>組卷:3引用:3難度:0.4 -
8.某二分查找算法的Python程序段如下:
執(zhí)行該程序段后,ans 的值不可能是( ?。?/h2>組卷:4引用:3難度:0.4 -
9.有如下Python程序段:
a=[99,85,74,68,53,42,34,27,20,13]
key=int(input(“請輸入一個整數:”))
i,j,k,c,flag=0,9,0,“N”,F(xiàn)alse
while i<=j and flag==False:
m=(i+j+1)//2
k=k+1
if key==a[m]:
c=“Y“
flag=True
if key>a[m]:
j=m-1
else:
i=m+1
print(c,k)
執(zhí)行該程序段后,下列說法正確的是( )組卷:9引用:4難度:0.4 -
10.有如下Python程序段:
執(zhí)行該程序段后,輸出的結果不可能出現(xiàn)的是( ?。?/h2>組卷:4引用:4難度:0.4 -
11.部分算法流程圖,如圖所示,當12+22+……+i2>=1500時,求i的最小值,以下選項中,圖中①、②和③處填入不正確的是( )
組卷:8引用:5難度:0.4
二.操作題(共4小題)
-
33.(一)順序查找數據:我們假定被查找的數據存儲在有n個元素的數組變量d中,要尋找的一個特定的數據(這個數據稱為查找鍵)已經存儲在變量key中.
下面是順序查找算法的輸入輸出說明.
輸入:查找鍵(設在變量key中). 被查找的數據(設在數組變量d中).
輸出:若找到,輸出值為key的數據所在的數組元素的下標,記為i;
若未找到,輸出結果為提示字符串:“找不到“.
當在n=8個元素的數組里順序查找數據的示意圖如下:
總結順序查找數據結果判斷條件:
(1)當找到時,肯定i<=8,n個數據時,肯定i<=n,i即為找到的數組元素下標,d(i)=key;
(2)當“找不到“時,i=9>8了;n個數據時,當i=n+1時,表示“找不到“.
順序查找的主程序段如下:
Private Sub 順序查找_Click( )
n個數據放入d(1)到d(n)中
Key=Val(Text1.Text):i=1‘變量Key從文本框Text1取的數要查找的數;
Do While ①
i=i+1
Loop
If i<=n Then
Text2.Text=“在d(“+Str(i)+“)中“‘例如在文本框Text2顯示:“在d(6)中”
Else
Text2.Text=“找不到“
End If
End Sub
以上程序Do While的條件 ①是
(A)Key<>d(i) (B)i<=n
(C))Key<>d(i) And i<=n (D)Key<>d(i) or i<=n.組卷:19引用:3難度:0.5 -
34.某校成績查詢系統(tǒng)界面如圖所示,學生輸入自己的身份證號碼,可以查詢自己的總分及排名。以下為此軟件的VB程序,請在橫線處填上正確的代碼使程序完整。
(1)
(2)
(3)command1_click過程用于查詢學生的總分成績及排名,這一查找方法為:
Dim a(1to 500)as string‘用于存放參加考試學生的身份證號碼
Dim s(1to 500)as single‘用于存入參加考試學生的總分成績
‘form_load 過程用于進行一些初如化準備工作
Private Sub form_load ( )
‘將參加此次考試學生的身份證號碼存放在數組a中
‘將參加此次考試學生的總分成績存放在數組s中
For i=1to 499‘利用排序法將學生成績進行降序排序
For j=500to i+1step-1
If ① then
t=s(j):s(j)=s(j-1):s(j-1)=t
t=a(j):a(j)=a(j-1):a(j-1)=t
End If
Next j
②
End sub
‘command1_click過程用于查詢學生的總分成績及排名
Private sub command_click ( ?。?br />Dim,bank as integer‘bank為排名
Dim index as Boolean‘index為查詢憑證
Dim hm as string’hm為身份證號碼
hm=text1.text
index=false
For i=1to 500
If hm=a(i) then index=true:bank=i:exit for‘代碼exit for的作用為退出for循環(huán)
Next i
If index=true then
Text2.text=str(s(bank))
Text3.text=str(bank)
Else
Msgbox (“無此身份號碼”)
End if。組卷:12引用:2難度:0.5