浙教版(2019)選擇性必修1《第五章 數(shù)據(jù)結(jié)構(gòu)與算法》2022年單元測試卷(6)
發(fā)布:2024/12/14 8:0:22
一.選擇題(共30小題)
-
1.8位同學(xué)的語文數(shù)學(xué)成績總分從高到低為“178,176,173,172,170,168,163,160”。用二分查找法178的過程中,依次被訪問到的成績數(shù)據(jù)是( ?。?/h2>
組卷:1引用:2難度:0.6 -
2.有如圖 python 程序段,該程序段運(yùn)行后,變量 k1,k2 的值分別為( ?。?/h2>
組卷:2引用:3難度:0.5 -
3.有Python程序段,功能如下:運(yùn)行程序后輸入要查找的key值,要求在一個由n個數(shù)組成的降序排序隊列的數(shù)組中,查找第一個小于等于key的元素下標(biāo)并輸出。
key=int(input( ))
L,R=0,n
while L<R:
m=
if :
L=m
else:
R=m-1
if L=n:
print(“數(shù)據(jù)不存在“)
else:
print(str(L+1))
要使程序?qū)崿F(xiàn)上述功能,畫線處填入的代碼是( ?。?/h2>組卷:1引用:2難度: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.峰值元素指數(shù)組中其值大于左右相鄰值的元素,如序列3,8,4,1中8為峰值元素。一個數(shù)組中可能包含多個峰值元素,現(xiàn)需要找出其中一個峰值元素所在的位置(默認(rèn)第一個數(shù)的左側(cè)和最后一個數(shù)的右側(cè)值為0,即序列1、2、3中3也為峰值元素)?,F(xiàn)有實現(xiàn)該功能的Python程序如下:
數(shù)組a=[10,2,25,17,20,21,9],執(zhí)行該程序后,輸出的值為( ?。?/h2>組卷:5引用:3難度:0.4 -
6.某程序段如下:
執(zhí)行該程序后,當(dāng)輸入的key值為15時,輸出的結(jié)果是( ?。?/h2>組卷:5引用:3難度:0.4 -
7.某Python程序如下:
數(shù)組a中的元素為“58,69,78,80,83,84,90,90,95“,則執(zhí)行該程序段后,數(shù)組 s中的元素不可能為( ?。?/h2>組卷:3引用:3難度:0.4 -
8.某二分查找算法的Python程序段如下:
執(zhí)行該程序段后,ans 的值不可能是( )組卷:4引用:3難度:0.4 -
9.有如下Python程序段:
a=[99,85,74,68,53,42,34,27,20,13]
key=int(input(“請輸入一個整數(shù):”))
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í)行該程序段后,下列說法正確的是( ?。?/h2>組卷:9引用:4難度:0.4 -
10.有如下Python程序段:
執(zhí)行該程序段后,輸出的結(jié)果不可能出現(xiàn)的是( ?。?/h2>組卷:4引用:4難度:0.4 -
11.部分算法流程圖,如圖所示,當(dāng)12+22+……+i2>=1500時,求i的最小值,以下選項中,圖中①、②和③處填入不正確的是( ?。?/h2>
組卷:8引用:5難度:0.4
二.操作題(共4小題)
-
33.(一)順序查找數(shù)據(jù):我們假定被查找的數(shù)據(jù)存儲在有n個元素的數(shù)組變量d中,要尋找的一個特定的數(shù)據(jù)(這個數(shù)據(jù)稱為查找鍵)已經(jīng)存儲在變量key中.
下面是順序查找算法的輸入輸出說明.
輸入:查找鍵(設(shè)在變量key中). 被查找的數(shù)據(jù)(設(shè)在數(shù)組變量d中).
輸出:若找到,輸出值為key的數(shù)據(jù)所在的數(shù)組元素的下標(biāo),記為i;
若未找到,輸出結(jié)果為提示字符串:“找不到“.
當(dāng)在n=8個元素的數(shù)組里順序查找數(shù)據(jù)的示意圖如下:
總結(jié)順序查找數(shù)據(jù)結(jié)果判斷條件:
(1)當(dāng)找到時,肯定i<=8,n個數(shù)據(jù)時,肯定i<=n,i即為找到的數(shù)組元素下標(biāo),d(i)=key;
(2)當(dāng)“找不到“時,i=9>8了;n個數(shù)據(jù)時,當(dāng)i=n+1時,表示“找不到“.
順序查找的主程序段如下:
Private Sub 順序查找_Click( )
n個數(shù)據(jù)放入d(1)到d(n)中
Key=Val(Text1.Text):i=1‘變量Key從文本框Text1取的數(shù)要查找的數(shù);
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)界面如圖所示,學(xué)生輸入自己的身份證號碼,可以查詢自己的總分及排名。以下為此軟件的VB程序,請在橫線處填上正確的代碼使程序完整。
(1)
(2)
(3)command1_click過程用于查詢學(xué)生的總分成績及排名,這一查找方法為:
Dim a(1to 500)as string‘用于存放參加考試學(xué)生的身份證號碼
Dim s(1to 500)as single‘用于存入?yún)⒓涌荚噷W(xué)生的總分成績
‘form_load 過程用于進(jìn)行一些初如化準(zhǔn)備工作
Private Sub form_load ( ?。?br />‘將參加此次考試學(xué)生的身份證號碼存放在數(shù)組a中
‘將參加此次考試學(xué)生的總分成績存放在數(shù)組s中
For i=1to 499‘利用排序法將學(xué)生成績進(jìn)行降序排序
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過程用于查詢學(xué)生的總分成績及排名
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