資源簡介 一.選擇題(共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﹣ielse:return len(a)﹣ia=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,78C.11,8,23,56,78 D.8,11,56,23,784.某數組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.76.有如下程序段:n=int(input(“請輸入0﹣10范圍內的整數“))a=[56,45,43,34,26,76,90,13,15,21]ans=0for 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+=1print(ans)若輸入n的值為8,那么輸出的值為( )A.2 B.11 C.4 D.﹣777.某二分查找算法的Python程序段如下:a=[8,17,24,30,36,40,55,58,61,66]key=int(input( ))i,j=0,9res=( )while i<=j:m=(i+j+1)//2if key==a[m]:breakelif key<a[m]:j=m﹣1else:i=m+1res.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]%2B.a[j]%2==a[j﹣1]%2 and a[j]<a[j﹣1]or a[j]%2>a[j﹣1]%2C.a[j]%2==a[j﹣1]%2 or a[j]<a[j﹣1]and a[j]%2<a[j﹣1]%2D.a[j]%2==a[j﹣1]%2 or a[j]<a[j﹣1]and a[j]%2>a[j﹣1]%210.某冒泡排序算法的Python程序段如下:import randoma=[0]*6;i=0while i<6:a[i]=random.randint(1,10)if a[i]%2!=i%2:continuei+=1for 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,7C.2,1,6,1,10,3 D.10,1,8,3,4,711.有1個升序排序的數組a,a[1]﹣a[n],n>=3,從左到右相鄰兩個元素的差值(后一個元素值減去前一個元素值)先由小到大、再由大到小,且相鄰兩個差值不相等,為了查找相鄰兩個元素的最大差值,小李編寫的Python程序段如下:i,j=1,nwhile i+1<j:m=(i+j)//2if 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﹣1C.i=m+1 j=m﹣1 D.i=m+1 j=m12.有序數組a中有n元素,用二分查找算法在數組a中查找key值所在的位置,如果有重復元素,則顯示最早出現該key值最早出現的位置。相應的Python程序如下:a=[1,2,3,3,3,4,5,6]i,j=0,len(a)﹣1key=3while i<=j:m=(i+j)//2if :j=m﹣1else:i=m+1print( )要使程序實現上述算法,橫線處應填入的語句是( )A.key<=a[m]j B.key<a[m]j C.key<=a[m]I D.key<a[m]i13.某二分查找算法的Python程序段如下:import randoma=[3,8,12,14,15,26,27,28]key=random.randint(1,30)+0.5i,j=0,len(a)﹣1c=0while i<=j:m=(i+j)//2if key<a[m]:j=m﹣1c﹣=1else:i=m+1c+=1print(c)執行該程序后,c的值不可能是( )A.﹣3 B.0 C.1 D.414.某二分查找算法的程序段如下:import randomd=[1,3,4,5,7,8,11,13,15,18]key=random.randint(1,10);i=0;j=9;n=0if key>5:key=key+5while i<=j:m=(i+j)//2if key<=d[m]:j=m﹣1;n=n﹣1else:i=m+1;n=n+1執行該程序段后,變量n的值不可能為( )A.﹣2 B.﹣1 C.1 D.215.某二分查找算法的Python程序段如下:d=[11,19,25,33,47,58]i,j=0,5f=Falsekey=int(input( ))while i<=j and f==False:m=(i+j)//2if key==d[m]:f=Trueif key<d[m]:j=m﹣1else:i=m+1運行該程序后輸入key值為“33”,運行程序結束后下列說法不正確的是( )A.變量f的值為True B.變量i的值為4C.變量j的值為4 D.變量m的值為316.某算法的python程序段如下:from random import randinta=[23,21,19,18,16,15,14,11]key=randint(0,3)*2+13i,j,c=0,len(a)﹣1,0while i<=j:m=(i+j+1)//2if a[m]>=key:i=m+1else:j=m﹣1c+=1該程序段執行后,下列說法不正確的是( )A.i的值為j+1 B.i的值可能是8C.j的值可能是5 D.c的值一定是317.有如下 Python 程序段:a=[10,15,32,32,45,53,53,65,77,98]k=int(input( ));s=“”;left,right=0,len(a)﹣1while left<=right:m=(left+right)//2if 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=9while i<=j:m=(i+j)//2if a[m]==key:breakif 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.619.有如下程序段:import randoma=[]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 randoma=[4,2,6,5,4,2,9,7]k=random.randint(1,10)i,j=0,len(a)﹣1x=““while i<=j:m=(i+j)//2if 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.RRRR21.某算法的VB程序段如下:key=randint(0,3)*2+13i,j,c=0,len(a)–1,0while i<=j:m=(i+j+1)//2if a[m]>=key:i=m+1else:j=m﹣1c+=1列表a=[23,21,19,18,16,15,14,11],該程序段執行后,下列說法不正確的是( )A.i的值為j+1 B.i的值可能是8C.j的值可能是5 D.c的值一定是322.某手機APP程序為了增加程序熱度,采用“簽到換積分”的形式來吸引用戶,用戶的簽到記錄由“0”和“1”的字符串組成,其中字符“0”表示未簽到,字符“1”表示簽到,積分計算規則如下:簽到 1 天 得 1 分,若連續簽到 k 天,則 k 天所得分數為 1+2+…+k﹣1+k分;未簽到得0分。例如:某用戶的簽到記錄為“1011000111100111111”,執行上述流程后,輸出結果為( )A.10 B.13 C.35 D.4723.小明想要在數字串 s 中尋找連續數字之和為 k 的子串,若有多個子串符合,則輸出第一個子串。例如,s=“20220520“,k=7,則符合要求的子串為“205“。實現該功能的部分 python 代碼如下:i=0;j=0;sum=0for j in range(len(s)):sum+=int(s[j])while sum>k:c=s[i]①______i+=1if 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 randintlist=[0]*6for 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←tC.t←1 sum←sum+t D.t←0 sum←sum+t26.某 Python程序如下:import randomn=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,2C.7,9,7,4,3,2 D.7,2,7,3,9,427.現有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=0for j in range(7):if cj[p+j]>cj[p+k]:k=jreturn(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=Falsefor j in range(5,i﹣1,﹣1):c+=1if a[j]<a[j﹣1]:a[j],a[j﹣1]=a[j﹣1],a[j]last=j;f=Truei=last+1經過該程序段“加工”后,下列說法不正確的是( )A.變量n的值為5B.此過程中數據共需比較8次C.此過程中數據共需交換2次D.數組元素a(1)到a(6)的值為升序29.有如下python程序段:a=[195,170,65,99,98];f=True;i=5;k=0while i>1 and f:f=Falsefor j in range(0,i﹣1):if a[j]<a[j+1]:t=a[j];a[j]=a[j+1];a[j+1]=tk=k+1;f=Truei=i﹣1該程序執行后,下列說法正確的是( )A.數組a各元素的值是:65,98,99,170,195B.變量k的值為3C.數組元素65在此過程中交換了3次D.變量i的值為330.有如下python程序段:import randoma=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,3C.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 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫