中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

第五章 數據結構與算法 復習練習(Word版,含答案)2022—2023學年浙教版(2019)高中信息技術選修1

資源下載
  1. 二一教育資源

第五章 數據結構與算法 復習練習(Word版,含答案)2022—2023學年浙教版(2019)高中信息技術選修1

資源簡介

一.選擇題(共30小題)
1.采用冒泡排序算法,對某數組數據進行排序,經過一輪后的結果是“2,3,9,5,6,7”,那么下列說法不正確的是(  )
A.這輪排序,有可能沒發生數據交換
B.這輪排序,有可能只發生了1次數據交換
C.排序結束后,數據是升序的
D.完成全部排序后,數據交換的次數和冒泡的方向無關
2.有如下python程序:
def count(a,i):
for j in range(i+1,len(a)):
if a[j]<a[j﹣1]:
return j﹣i
else:
return len(a)﹣i
a=list(map(int,input(  ).split(  )))#將輸入的字符串按照空格符進行分割后轉換為整型列表
b=[1]*len(a)
for i in range(len(a)﹣1):
b[i]=count(a,i)
運行該程序,若輸入數據為‘1 2 2 4 7 6’,則b[1]的值為(  )
A.1 B.5 C.3 D.2.
3.數組a中的元素依次為[56,23,78,11,8]
for i in range(0,2):
for j in range(0,4﹣i):
if a[j+1]<a[j]:
a[j],a[j+1]=a[j+1],a[j]
執行上述Python程序段后,數組a中的元素依次為(  )
A.8,11,23,56,78 B.23,11,8,56,78
C.11,8,23,56,78 D.8,11,56,23,78
4.某數組d中的數據依次是[8,12,15,28,28,32,36,39],要查找某個元素是否在數組中,下列說法正確的是(  )
A.數組中有相同數據28,所以只能使用順序查找
B.使用二分查找數據時,第1次查找的數據是d[3]
C.使用二分查找任何查找鍵時,查找的次數最少3次
D.使用二分查找數據時,第2次查找的數據可能是d[1]或d[6]
5.有100個有序數據,使用二分查找查找鍵key,最多查找(  )次后查找結束。
A.4 B.5 C.6 D.7
6.有如下程序段:
n=int(input(“請輸入0﹣10范圍內的整數“))
a=[56,45,43,34,26,76,90,13,15,21]
ans=0
for i in range(n﹣1):
for j in range(n﹣1,i,﹣1):
if a[j]>a[j﹣1]:
a[j],a[j﹣1]=a[j﹣1],a[j]
ans+=1
print(ans)
若輸入n的值為8,那么輸出的值為(  )
A.2 B.11 C.4 D.﹣77
7.某二分查找算法的Python程序段如下:
a=[8,17,24,30,36,40,55,58,61,66]
key=int(input(  ))
i,j=0,9
res=(  )
while i<=j:
m=(i+j+1)//2
if key==a[m]:
break
elif key<a[m]:
j=m﹣1
else:
i=m+1
res.append(a[m])
print(res)
執行該程序段,當輸入的值為30時,程序輸出結果為(  )
A.[40,24] B.[40,24,36] C.[24,36] D.[36,17,24]
8.已知字符串數組a的原始數據為['128','26','9','61','15','2','318'],為了對該數組進行排序操作,小美編寫了如下Python程序:
for i in range(3):
for j in range(6,i+1,﹣1):
if a[j]<a[j﹣1]:
a[j],a[j﹣1]=a[j﹣1],a[j]
則程序運行之后,數組a的值為(  )
A.['128','15','2','26','318','61','9']
B.['128','15','26','9','61','2','318']
C.['128','15','2','26','9','61','318']
D.['128','15','2','26','318','9','61']
9.使用冒泡排序算法對數組排序,要求奇數和偶數各自按升序排序,其中奇數在前,偶數在后。例如,將數組a=[4,5,2,9,6,7,10,3,8,1],排序后a=[1,3,5,7,9,2,4,6,8,10]。如下Python程序能實現相關功能,則橫線處應填入的代碼為(  )
a=[4,5,2,9,6,7,10,3,8,1]
for i in range(len(a)):
for j in range(len(a)﹣1,i,﹣1):
if:
a[j],a[j﹣1]=a[j﹣1],a[j]
A.a[j]%2==a[j﹣1]%2 and a[j]<a[j﹣1]or a[j]%2<a[j﹣1]%2
B.a[j]%2==a[j﹣1]%2 and a[j]<a[j﹣1]or a[j]%2>a[j﹣1]%2
C.a[j]%2==a[j﹣1]%2 or a[j]<a[j﹣1]and a[j]%2<a[j﹣1]%2
D.a[j]%2==a[j﹣1]%2 or a[j]<a[j﹣1]and a[j]%2>a[j﹣1]%2
10.某冒泡排序算法的Python程序段如下:
import random
a=[0]*6;i=0
while i<6:
a[i]=random.randint(1,10)
if a[i]%2!=i%2:
continue
i+=1
for i in range(0,4):
for j in range(5,i+1,﹣1):
if a[j]<a[j﹣2]:
a[j],a[j﹣2]=a[j﹣2],a[j]
執行該程序后,a數組中的元素可能是(  )
A.3,4,5,8,9,10 B.0,1,8,3,10,7
C.2,1,6,1,10,3 D.10,1,8,3,4,7
11.有1個升序排序的數組a,a[1]﹣a[n],n>=3,從左到右相鄰兩個元素的差值(后一個元素值減去前一個元素值)先由小到大、再由大到小,且相鄰兩個差值不相等,為了查找相鄰兩個元素的最大差值,小李編寫的Python程序段如下:
i,j=1,n
while i+1<j:
m=(i+j)//2
if a[m+1]﹣a[m]>a[m]﹣a[m﹣1]:
else:
print(“最大差值為:“,a[j]﹣a[i])
上述程序段兩個橫線處的語句分別為(  )
A.i=m j=m B.i=m j=m﹣1
C.i=m+1 j=m﹣1 D.i=m+1 j=m
12.有序數組a中有n元素,用二分查找算法在數組a中查找key值所在的位置,如果有重復元素,則顯示最早出現該key值最早出現的位置。相應的Python程序如下:
a=[1,2,3,3,3,4,5,6]
i,j=0,len(a)﹣1
key=3
while i<=j:
m=(i+j)//2
if :
j=m﹣1
else:
i=m+1
print( )
要使程序實現上述算法,橫線處應填入的語句是(  )
A.key<=a[m]j B.key<a[m]j C.key<=a[m]I D.key<a[m]i
13.某二分查找算法的Python程序段如下:
import random
a=[3,8,12,14,15,26,27,28]
key=random.randint(1,30)+0.5
i,j=0,len(a)﹣1
c=0
while i<=j:
m=(i+j)//2
if key<a[m]:
j=m﹣1
c﹣=1
else:
i=m+1
c+=1
print(c)
執行該程序后,c的值不可能是(  )
A.﹣3 B.0 C.1 D.4
14.某二分查找算法的程序段如下:
import random
d=[1,3,4,5,7,8,11,13,15,18]
key=random.randint(1,10);i=0;j=9;n=0
if key>5:
key=key+5
while i<=j:
m=(i+j)//2
if key<=d[m]:
j=m﹣1;n=n﹣1
else:
i=m+1;n=n+1
執行該程序段后,變量n的值不可能為(  )
A.﹣2 B.﹣1 C.1 D.2
15.某二分查找算法的Python程序段如下:
d=[11,19,25,33,47,58]
i,j=0,5
f=False
key=int(input(  ))
while i<=j and f==False:
m=(i+j)//2
if key==d[m]:
f=True
if key<d[m]:
j=m﹣1
else:
i=m+1
運行該程序后輸入key值為“33”,運行程序結束后下列說法不正確的是(  )
A.變量f的值為True B.變量i的值為4
C.變量j的值為4 D.變量m的值為3
16.某算法的python程序段如下:
from random import randint
a=[23,21,19,18,16,15,14,11]
key=randint(0,3)*2+13
i,j,c=0,len(a)﹣1,0
while i<=j:
m=(i+j+1)//2
if a[m]>=key:
i=m+1
else:
j=m﹣1
c+=1
該程序段執行后,下列說法不正確的是(  )
A.i的值為j+1 B.i的值可能是8
C.j的值可能是5 D.c的值一定是3
17.有如下 Python 程序段:
a=[10,15,32,32,45,53,53,65,77,98]
k=int(input(  ));s=“”;left,right=0,len(a)﹣1
while left<=right:
m=(left+right)//2
if a[m]<k:
left=m+1;s=s+“R“
else:
right=m﹣1;s=s+“L“
該程序運行后,變量s的值可能是(  )
A.“LR“ B.“LRL“ C.“LRR“ D.“RLR“
18.某二分查找算法的python程序段如下:
key=int(input(  ));s=““;i=0;j=9
while i<=j:
m=(i+j)//2
if a[m]==key:break
if key<a[m]:
j=m﹣1;s=s+“L“
else:
i=m+1;s=s+“R“
按非降序排序的整型數組a的值依次為“11,23,31,39,44,52,60,x,69,89”。輸入66,執行該程序段后s值為“RRL”,則x的可能值的個數為(  )
A.3 B.4 C.5 D.6
19.有如下程序段:
import random
a=[]
for i in range(6):
a.append(random.randint(10,99))
for i in range(1,3):
for j in range(0,6﹣i):
if a[j]%10>a[j+1]%10:
a[j],a[j+1]=a[j+1],a[j]
執行該段程序后,數組a中的元素不可能為(  )
A.[73,85,55,55,86,16] B.[81,32,64,98,59,59]
C.[10,68,89,27,82,96] D.[10,71,46,64,27,38]
20.有如下Python程序段:
import random
a=[4,2,6,5,4,2,9,7]
k=random.randint(1,10)
i,j=0,len(a)﹣1
x=““
while i<=j:
m=(i+j)//2
if k<=a[m]:
j=m﹣1;x=x+“L“
else:
i=m+1;x=x+“R“
print(x)
執行該程序后,輸出結果不可能是(  )
A.LLL B.LRL C.RLR D.RRRR
21.某算法的VB程序段如下:
key=randint(0,3)*2+13
i,j,c=0,len(a)–1,0
while i<=j:
m=(i+j+1)//2
if a[m]>=key:
i=m+1
else:
j=m﹣1
c+=1
列表a=[23,21,19,18,16,15,14,11],該程序段執行后,下列說法不正確的是(  )
A.i的值為j+1 B.i的值可能是8
C.j的值可能是5 D.c的值一定是3
22.某手機APP程序為了增加程序熱度,采用“簽到換積分”的形式來吸引用戶,用戶的簽到記錄由“0”和“1”的字符串組成,其中字符“0”表示未簽到,字符“1”表示簽到,積分計算規則如下:簽到 1 天 得 1 分,若連續簽到 k 天,則 k 天所得分數為 1+2+…+k﹣1+k分;未簽到得0分。例如:
某用戶的簽到記錄為“1011000111100111111”,執行上述流程后,輸出結果為(  )
A.10 B.13 C.35 D.47
23.小明想要在數字串 s 中尋找連續數字之和為 k 的子串,若有多個子串符合,則輸出第一個子串。
例如,s=“20220520“,k=7,則符合要求的子串為“205“。實現該功能的部分 python 代碼如下:
i=0;j=0;sum=0
for j in range(len(s)):
sum+=int(s[j])
while sum>k:
c=s[i]
①______
i+=1
if sum==k:
print(“符合要求的子串為:“,②______)
break
劃線①②處的語句是(  )
A.①sum=sum+int(c) ②s[i:j+1]
B.①sum=sum﹣int(c) ②s[i﹣1:j+1]
C.①sum=sum+int(c) ②s[i:j]
D.①sum=sum﹣int(c) ②s[i:j+1]
24.有如下 python 程序段:
from random import randint
list=[0]*6
for i in range(6):
list[i]=randint(10,99)
for i in range(2):
for j in range(5﹣i):
if list[j]//10+list[j]%10>list[j+1]//10+list[j+1]%10:
list[j],list[j+1]=list[j+1],list[j]
print(list)
該程序段運行后,列表list的值不可能為(  )
A.[54,17,26,40,73,85] B.[10,36,81,60,84,69]
C.[33,81,15,46,19,69] D.[10,22,31,67,72,99]
25.某手機APP程序為了增加程序熱度,采用“簽到換積分”的形式來吸引用戶,用戶的簽到記錄由“0”和“1”的字符串組成,其中字符“0”表示未簽到,字符“1”表示簽到,積分計算規則如下:簽到1天得1分,若連續簽到k天,則k天所得分數為1+2+…+k﹣1+k分;未簽到得0分。例如:
實現上述功能的流程圖如圖所示,則圖中①、②標記處應填入的內容分別是(  )
A.t←1 sum←t B.t←0 sum←t
C.t←1 sum←sum+t D.t←0 sum←sum+t
26.某 Python程序如下:
import random
n=random.randint(1,4);a=[7,2,7,3,9,4]
for i in range(1,n):
for j in range(0,6﹣i):
if a[j]<a[j+1]:a[j],a[j+1]=a[j+1],a[j]
執行該程序段后,數組a中的元素不可能為(  )
A.9,7,7,4,3,2 B.7,7,3,9,4,2
C.7,9,7,4,3,2 D.7,2,7,3,9,4
27.現有n個學生的 7 門學科成績已存入一維數組 cj 中。某 python 程序代碼段如下:
cj=[96,83,91,85,86,77,88,98,93,94,82,96,87,99]
def f(x):
p=x*7;k=0
for j in range(7):
if cj[p+j]>cj[p+k]:
k=j
return(k)
km=“物化生政史地技“;n=2;s=““
for i in range(n):
s+=km[f(i)]
print(s)
運行后,輸出的結果為(  )
A.物技 B.地政 C.物生 D.技物
28.有如下python程序段:
n=0;i=1;f=True;c=0;a=[10,16,82,36,51,87]
while i<=5 and f:
n=n+1;f=False
for j in range(5,i﹣1,﹣1):
c+=1
if a[j]<a[j﹣1]:
a[j],a[j﹣1]=a[j﹣1],a[j]
last=j;f=True
i=last+1
經過該程序段“加工”后,下列說法不正確的是(  )
A.變量n的值為5
B.此過程中數據共需比較8次
C.此過程中數據共需交換2次
D.數組元素a(1)到a(6)的值為升序
29.有如下python程序段:
a=[195,170,65,99,98];f=True;i=5;k=0
while i>1 and f:
f=False
for j in range(0,i﹣1):
if a[j]<a[j+1]:
t=a[j];a[j]=a[j+1];a[j+1]=t
k=k+1;f=True
i=i﹣1
該程序執行后,下列說法正確的是(  )
A.數組a各元素的值是:65,98,99,170,195
B.變量k的值為3
C.數組元素65在此過程中交換了3次
D.變量i的值為3
30.有如下python程序段:
import random
a=random.sample(range(1,100),6)
for i in range(0,1):
for j in range(5,i,﹣1):
if a[j]%3>a[j﹣1]%3:
t=a[j];a[j]=a[j﹣1];a[j﹣1]=t
執行上述程序段后,下列選項中,數組元素a的值不可能的是(  )
A.2,1,4,3,6,7 B.5,2,1,7,8,3
C.7,7,6,3,3,2 D.8,7,4,3,3,2
參考答案與試題解析
一.選擇題(共30小題)
1.【解答】解:冒泡排序,它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來,走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。由于題目沒有說明排序是升序還是降序,所以經過一輪排序,有可能沒發生數據交換,如果為升序,因為最小值2在最前面,所以選項A符合題意。
故選:A。
2.【解答】解:當i=1時,b[1]=count(a,1),在函數count(a,1)中j的取值為range(i+1,len(a)),即range(2,6),當j取2時,a[2]<a[1]的條件不滿足,則返回len(a)﹣i,即6﹣1=5,此時循環結束,count(a,1)=5,即b[1]=5。故選B。
3.【解答】解:當i=0時,j值范圍為range(0,4),冒泡排序后a=[23,56,11,8,78],78排到了最后面;當i=1時,j值范圍為range(0,3),冒泡排序后a=[23,11,8,56,78],56排到了倒數第2位;此時循環結束故選B。
4.【解答】解:數組d中的數據是有序的,可以用二分查找法進行查找,故選項A是錯誤的;第一次查找時,m=3,即定位到的數據是d[3],故B選項是正確的。如果第一次查找時的數據恰好是要查找的數據,那么查找次數最少是1次,故選項C是錯誤的;第二次查找時,d[3]左邊是3個元素,定位到d[1],右邊是4個元素,定位到d[5],故選項D是錯的。故選B。
5.【解答】解:根據公式,當n=100時,得出a=6,b=7,二分查找法最多查找7次。故選D。
6.【解答】解:n的值為8,外循環i的取值范圍為[0,6],內循環中range的范圍為range(7,i,﹣1),冒泡排序從a[7]=90開始往前比較排序。當外循環i=0時,內循環j值范圍為[7,1],因90是最大數,所以往前比較6次都進行數值交換,此時ans的值為6;當外循環i=1時,內循環j值范圍為[7,2],此時a[7]=76是第二大的數,所以往前比較5次都進行數值交換,此時ans的值增加5為11;當外循環i=2時,內循環j值范圍為[7,3],此時a[7]=26,從26往前的數值恰好都是按照降序排列的,所以往前比較時都不進行數值交換,ans值不變為11;當外循環i取其它值時,列表a的元素不再發生位置變化,ans值不變為11。故選B。
7.【解答】解:key=30;第一次循環:m=5,a[m]=40,而key<40,剩余查找范圍為列表中40之前的元素,此時i=0,j=m﹣1=4,res=[40];第二次循環:m=2,a[m]=24,而key>24,剩余查找范圍為列表中30和36,此時i=m+1=3,j=4,res=[40,24];第三次循環:m=4,a[m]=36,而key<36,剩余查找范圍為列表中30,此時i=3,j=m﹣1=3,res=[40,24,36];第四次循環:m=3,a[m]=30,而key=30,循環因break中斷,a[m]不再追加到列表res中,此時res=[40,24,36]故選B。
8.【解答】解:當i=0時,j值范圍為range(6,1,﹣1),冒泡排序后a=['128','15','26','9','61','2','318'],字符串15排到了第2位;當i=1時,j值范圍為range(6,2,﹣1),冒泡排序后a=['128','15','2','26','9','61','318'],字符串2排到了第3位;當i=2時,j值范圍為range(6,3,﹣1),冒泡排序后a=['128','15','2','26','318','9','61'],字符串318排到了第5位;此時程序循環結束。故選D。
9.【解答】解:從程序中可以看出,利用冒泡排序法從列表a最后面的元素往前進行排序。當比較這2個元素的時候,存在2種情況要把這2個數的位置對調:(1)這2個元素同是奇數或者偶數且后面的數小于前面的數,即a[j]%2==a[j﹣1]%2 and a[j]<a[j﹣1];(2)這2個元素分別是偶數和奇數,即a[j]%2>a[j﹣1]%2。
故選B。
10.【解答】解:初始值a=[0,0,0,0,0,0];第一步:在while循環中對于a[i]%2!=i%2的都進行continue跳過,即a[i]%2=i%2的才符合,最終a[0]a[2]a[4]的數一定是偶數,a[1]a[3]a[5]一定是奇數。第二步:雙重for循環是對偶數和奇數按照升序進行冒泡排序。答案A選項中第1位應是偶數,故排除掉;答案B選項中0不在[1,10]這個范圍中,故排除掉;答案D選項中偶數位排序是倒序的,不符合,故排除掉。
故選C。
11.【解答】解:采用二分查找法,第一次查找時,定位到m位置,若a[m+1]﹣a[m]>a[m]﹣a[m﹣1],說明價差是增大的,那么要找的那個數一定在從m開始往右這個范圍區間當中,因為m位置的數有可能是要找的數,所以不能排除掉,故第1個空要填i=m。同樣的道理,如果a[m+1]﹣a[m]<a[m]﹣a[m﹣1],說明價差是減小的,那么要找的那個數一定在從m開始往左這個范圍區間當中,因為m位置的數有可能是要找的數,所以不能排除掉,故第2個空要填j=m。這樣經過多次二分查找后,最終找到m位置的數就是a[j],則最大數就是a[j]﹣a[i]。故選:A。
12.【解答】解:程序中j=m﹣1,說明key值在左邊的范圍之中,則第一個空要填寫的條件就是key<=a[m],因為要查找的是重復元素第一次出現的位置,則條件中必須要有key=a[m],這里有2種情況可能出現:第一種情況是往左查找時存在key值的元素,則最終查找到該元素時,j值減1后小于i結束循環,i值就是key值在數組中出現的位置;第二種情況是往左查找時不存在key值,則循環后最終查找到key值在數組中左邊的那個元素,此時i值增加1后大于j值結束循環,i值就是key值在數組中出現的位置。所以第二個空要填寫i。故選C。
13.【解答】解:把key值分為2種情況,第一種情況是當key<27時,循環3次就結束了,則c值的范圍為[﹣3,3],只有當key<3的時候,c值才會連續減1到循環結束,此時c值為﹣3,其它key值時,c值不會連續減1或者加1到循環結束,故c值只能取到﹣3、﹣1、1這幾個數。第二種情況是當key>27時,key值為27.5時,循環到第四次時與列表中28比較,c值減1變為2就結束了,而key值大于列表中28的數時c值連續加1到循環結束,此時c值為4,故c值只能取到2、4這幾個數。所以c值只能取﹣3、﹣1、1、2、4這幾個數。故選B。
14.【解答】解:第一次循環:二分查找0到9這10個數,對半定位到m=4,則d[4]=7,key值為1比d[4}小,n值減1后為﹣1;key值為10的數增加5,變為15,大于d[4],n值加1后為1;第二次循環:按照二分查找分別定位在d[1]=3和d[7]=13位置,key值為1小于d[1],n值減1變為﹣2;key值為15大于d[7],n值加1變為2;第三次循環:key值為1只剩下跟d[0]比較了,因等于d[0],則n值加1,變為﹣1,循環結束;key值為15與定位在d[8]的數15相等,n值加1變為3;第四次循環:key值為15與d[9]比較,小于d[9],n值減1變為2.所以key值為1時n值為﹣1,key值為10時n的值為2,n的取值范圍為【﹣1,2】。故選:A。
15.【解答】解:初始值i=0,j=5,f=False,key=33。第一次循環:m=2,d[2]=25,key>25,則i=m+1=3,j值不變為5第二次循環:m=4,d[4]=47,key<47,則i值不變為3,j=m﹣1=3第三次循環:m=3,d[3]=33,key=33,則f=True,i=m+1=4,j值不變為3,循環結束。故選:C。
16.【解答】key=randint(0,3)*2+13,可知key依次取的值是0、15、17、19,第一次查找,m=4,a(4)=16,如果向右查找,則i=m+1=5,進行第二次查找m=6,a(6)=14,若key=0,則i=7,此時進行第三次查找,m=8,a(8)=11,11仍然大于0,更新i=m+1=9,故i的值不可能是8。
故選:B。
17.【解答】該查找過程用二叉樹表示如下,分析程序可知,當遍歷左子樹時,執行 s=s+“R“;當遍歷右子樹時,執行 s=s+“L“。結合二叉樹以及選項可知,程序運行后,變量s的值可能是“LRL“,。
故選:B。
18.【解答】x的取值范圍應該為60到69,再考慮到要查找的key的值為66,執行該程序段后s的值為“RRL”,因此由此可以判斷出查找的中值m的順序分別為5,8,9,而x的位置是8,也就是說,以key=66為關鍵字進行第二次查找后繼續右偏,這說明x的值肯定比66小(不可能等于66,若等于66則退出查找),因此可以將x的取值范圍縮小為60到65之間的整數,即60、61、62、63、64、65這6個整數。
故選:D。
19.【解答】分析程序可以看到最后的兩個循環語句是進行降序排序算法。外循環進行了兩次循環,a數組中的最后兩個元素是個位數最大的兩個數值。四個選項中不滿足這個條件的是C選項。故選C。
20.【解答】輸入的內容可分為四種情況,(﹣∞,2],[3,5],[6,9][10,∞),故可能產生四種不同的 s 的值['LLL','LRL','RRL','RRRR'],則輸出的結果不可能出現的是RLR。
故選:C。
21.【解答】key=randint(0,3)*2+13,可知key依次取的值是0、15、17、19,第一次查找,m=4,a(4)=16,如果向右查找,則i=m+1=5,進行第二次查找m=6,a(6)=14,若key=0,則i=7,此時進行第三次查找,m=8,a(8)=11,11仍然大于0,更新i=m+1=9,故i的值不可能是8。
故選:B。
22.【解答】由圖可知,只要中斷簽到,再簽就從1開始,某用戶的簽到記錄為“1011000111100111111”,所以該用戶得分為1+3+10+21=35分。
故選:C。
23.【解答】本題是尋找字符串中連續數字(全部都是1位數)之和為k的子串,s=“20220520“,k=7,則符合要求的子串為“205“。第一空結合語句sum=sum+int (ch1)需要將s[j]轉化為字符,故填寫為chl=s[j];當sum>k時,ch2=s[i],此時需要計算sum的值,故寫sum=sum﹣int (ch2);第三空打印的是符合要求的字符串,故寫print(s[i:j+1])。
故選:D。
24.【解答】分析程序可知,該程序實現比較相鄰的兩個數,若j的個位數與十位數的和大于j+1的個位數與十位數的和,則交換j與j+1,外循環2次,即a(6)是6個兩位正整數中個位數與十位數和最大的數,a(5)其次,結合選項,不可能的是10,22,31,67,72,99。
故選:D。
25.【解答】如果堅持去簽那么進行累加,否則簽到積分為0,故①處輸入t=0。簽到1天得1分,若連續簽到k天,則k天所得分數為1+2+…+k﹣1+k分,執行累加的積分為sum=sum+t,D選項符合題意。
故選:D。
26.【解答】n=random.randint(1,4),1<=n<=4,外循環for i in range(1,n),從i=1開始循環,內循環for j in range(0,6﹣i):從a[0]開始遍歷數組比較和交換,if a[j]<a[j+1]:a[j],a[j+1]=a[j+1],元素值小的交換到數組下標大的位置,即最小的值排在數組的最后面,數組最小值是2,從A,B,C,D四個選項看D選項數組的值是4所以數組中的元素不可能為D選項。故選:D。
27.【解答】通過分析題干和代碼,可以知道程序的作用是找出每個學生7門功課中,分數最高的科目。前7個數據中最高為96,后7個數據最高分是99。對應的科目分別是物和技。故選A。
28.【解答】f是每趟排序是否交換的標志,如果沒有交換,則提前退出循環。變量n是排序的趟數。Last是記錄每趟最后一次交換的位置。當i=2時,比較5次,交換1次,Last=4。接下來i=5,比較2次,交換1次,Last=5。接下來i=6,比較1次,但未交換,退出循環。排了3趟。
故選:A。
29.【解答】閱讀程序可知,本程序實現的是數組的降序排序,變量k的值為2,數組元素65在此過程中交換了2次,變量i的值為3。
故選:D。
30.【解答】閱讀程序可知,外循環i只執行一次,所以一次循環后,數組中a[j]%3余數最大的值,應該在列表的最前端,閱讀選項可知,選項C最為不可能,因為余數最大的是2,卻在末尾。
故選:C

展開更多......

收起↑

資源預覽

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 江门市| 章丘市| 门源| 侯马市| 高青县| 苍梧县| 长葛市| 苍山县| 长宁区| 巴彦县| 将乐县| 明光市| 陇川县| 体育| 会同县| 会东县| 盐源县| 大同市| 香港 | 永州市| 安国市| 博客| 永德县| 沙河市| 台州市| 瓦房店市| 柳江县| 建平县| 长岛县| 余干县| 墨江| 安西县| 响水县| 井陉县| 来宾市| 夹江县| 福安市| 威远县| 东光县| 兴业县| 民乐县|