資源簡介 選修一第四章VB程序設計初級章末習題(一般難度) 一、選擇題(本大題共4小題) 有如下VB程序段: a(1) = 6 : a(2) = 9 : a(3) = 3 : a(4) =7 : a(5) = 8 : a(6) = 1 t = 2 * Int(Rnd * 3) + 1 ?For i = t To 5 k = i For j = i + 1 To 6 If a(j) < a(k) Then k = j Next j If k <> i Then temp = a(i) : a(i) = a(k) : a(k) = temp ?End If Next i 執行該程序段后,a(1)?a(6)各元素的值不可能的是(??? ) A. 6,1,3,7,8,9 B. 6,9,1,3,7,8 C. 6,9,3,7,1,8 D. 1,3,6,7,8,9 以下有關軟件用途歸類不全正確的是()。 A. 聲音的編輯處理可以使用Cool edit、Wave edit等 B. 文本的處理可以使用記事本、WPS、PowerPoint等 C. 程序設計可以使用vb、Pascal、C語言等 D. 動畫設計可以使用3d max、Flashget等 有如下 VB 程序段: Dim p As Integer,q As Integer,s As Integer,t As Integer p=Val(Text1.Text):t=0 For q=p+1To 2*p s=(p*q) Mod (q-p) If s=0Then t=t+1 End If Next q Label1.Caption=Str(t) 該程序段運行時,在文本框Textl中輸入8,則在標簽Labell中顯示的內容是( ?。? A. 3 B. 4 C. 5 D. 6 Private Sub Command1_Click( ?。? n=100:Sum=0:k=1 Do while k<=n j=1 Do while j<=k sum=sum+1:j=j+1 Loop k=k*2 Loop End sub 該字段運行后,變量sum的值是( ) A. 256 B. 255 C. 128 D. 127 二、非選擇題(本大題共11小題) 編寫一個VB程序,實現如下功能,在文本框Text1中輸入一串小寫的英文字母,單擊“統計”按鈕Command1,在文本框Text2中輸出字母升序段個數,要求每個升序段中字母個數必須超過3個(例如,輸入abctefefghkad,則滿足條件的升序段為abct和efghk,個數為2),程序運行界面如下圖所示: 請回答下列問題: (1)程序界面中共有______(單選,填字母:A. 3 / B. 4 / C. 5 / D. 6)類控件。 (2)若在文本框Text1中輸入“abgcdefkuvghl”,單擊“統計”按鈕Command1后,文本框Text2中顯示的內容為______。(單選,填字母:A. 1 / B. 2 / C. 3) (3)實現上述功能的程序代碼如下,請在劃線處填入合適的代碼。 Private Sub Command1_Click() ??? Dim s As String, n As Integer ??? Dim m As Integer, f As Boolean, k As Integer, i As Integer ??? s = Text1.Text: n = Len(s) ??? m = 0: f = True: k = 1 ??? For i = 2 To n ??????? If ______________①____________?Then ??????????? k = k + 1 ??????????? f = True ??????? Else ??????????? f = False ??????? End If ??????? If k > 3 And (__________②__________) Then ??????????? m = m + 1 ??????????? k = 1 ??????? End If ??? Next i ??? Text2.Text = Str(m) End Sub 小馬正在看一本偵探小說,想了解其中一段案情的解析,卻發現了一串字符“#2017-2018go:)”,并附有文字提示:①答案所在的頁碼是這串字符中最大數字字串(若值相同則取后面的數字字串)的起始位置*10+結束位置②答案所在行號是最大數值除以100的余數。例如:“#17a18#”字符串中,最大數字字串“18”,起始位置是5,結束位置是6,其頁碼是56,行號是18。小馬編寫了一個VB程序幫他尋找答案,程序運行界面如圖所示。在文本框Text1中輸入這段字符串s1,單擊“揭秘”按鈕Command1,在文本框Text2中輸出頁碼,在Text3中輸出行號。實現上述功能的VB程序代碼如下,但加框處代碼有錯,請改正。 Private Sub Command1_Click() ? Dim s1 As String, s2 As String ? Dim ch As String, ch2 As String ? Dim max As Double ? Dim n As Integer, page As Integer ? Dim i As Integer, j As Integer ? s1 = Text1.Text: s2 = "" ? n = Len(s1) ? i = 1: max = 0 ? Do While i <= n ????? ch = Mid(s1, i, 1) ????? If ch >= "0" And ch <= "9" Then ????????? j = i ? ? ? ? ? ch2 = Mid(s1, j, 1) ????????? Do While ch2 >= "0" And ch2 <= "9" ????????????? j = j + 1 ????????????? ch2 = Mid(s1, j, 1) ????????? Loop ????????? s2 = ?Mid(s1, 1, j - i) ???????????'(1) ????????? If ?Val(s2) < max ?Then??????????? '(2) ????????????? max = Val(s2) ????????? ????page = i * 10 + j - 1 ????????????? Text2.Text = Str(page) ????????????? Text3.Text = Str(max Mod 100) ????????? End If ????????? i = j ????? End If ????? i = i + 1 ? Loop End Sub 使用VB編寫一個數字逆序功能的程序,在文本框Text1中輸入若干整數,相互之間用逗號隔開,單擊逆序按鈕,在文本框Text2中輸出逆序后的數字序列。程序運行界面如圖所示: (1)實現上述功能的VB程序如下,請在劃線處填入合適的代碼。 Private Sub nixu_Click( ) Dim s1 As String , s2 As String , t As String , ch As String Dim i As Integer s1= Text1.text ______①__________ t =”” : s2 = ”” Do While i>0 ch=Mid ( s1 , i , 1 ) If ch >=”0” And ch<=”9” Then t=ch+t Else __②_ t = ”” End if i=i-1 Loop s2=s2+t Text2.Text=s2 End Sub (2) 由程序可知,逆序按鈕的名稱是_______________________。 (3) 如果把程序中加框的語句刪除,運各程序時,輸入數據為“3,1,4,15”,則輸出結果是_______________________________________________。 使用擂臺法找最值,首先將數據存放在數組變量中,再進行最值查找。以下找出籃球比賽中7名球員得分最高的球員。其中,上場比賽的籃球隊員得分情況(見下表)。 a[1] a[2] a[3] a[4] a[5] a[6] a[7] 5 23 9 12 20 38 19 (1)實現數據存儲到數組a中的流程圖如圖(1)所示,請填寫空格__________。 (2)擂臺法找出得分最高球員的 VB代碼如圖( 2)所示,請填寫空格___________。(提示:將多個語句書寫在一行時,兩個語句之間使用“:”連接) 設計一個算法,計算導彈射程之間的最大距離差。具體程序功能如下:在文本框中輸入各枚導彈的射程(單位:千公里),數據之間用逗號分割,以-1結尾。單擊按鈕,在標簽框輸出結果。例如在Text1中輸入“15,9,1,2,3,8,7,-1”,單擊“計算”按鈕,輸出結果為“14”。實現該算法的VB程序如下,界面如圖所示,回答下列問題: (1)為實現該程序,在窗體中至少需要使用_______類不同的控件對象(填數字)。 (2)算法具體代碼對應如下,請在橫線處填入合適的語句代碼,使程序完整。 Private Sub Command1_Click() Dim a(100) As Integer Dim max As Integer: Dim min As Integer Dim c As Integer: Dim i As Integer: Dim j As Integer: Dim Total As Integer Dim s As String s = Text1.Text i = 1 : begin = 1 : c = 0 Do While i <= Len(s) k = Mid(s, i, 1) If k = "," Then t = ________①_________ ??? ?????? c = c + 1 ??? ?????? a(c) = Val(t) ??? ?????? begin =_________②__________ ?? ?End If i = i + 1 Loop max = 0 ????????????' 加框語句 min = a(1) For i = 1 To c ? If a(i) > max Then max = a(i) ? If a(i) < min Then min = a(i) Next i Text2.Text = max - min End Sub (3)若刪除程序中加框處語句,還是相同的輸入數據,則計算出的最大差值為:_____。 編寫一個“計算平均身高”的VB程序,功能如下:在文本框Text1中輸入若干男女學生的身高和性別(以”,”為分割符和結束符),如 1.65,F,1.75,M,1.84,M,1.69,F,1.72,M, 1.58,F,F表示女生,M表示男生,單擊“計算”按鈕Command1后,在Label2上顯示男生的平均身高,在Label3上顯示女生的平均身高。程序設計界面和運行界面分別如圖所示 (1)要使程序運行時,清空Label2上的內容,可在Form_Load事件處理過程中添加語句______?(單選,填字母:A. Label2.text=""? / B.Label2.Caption = ""? / C. Label2.Clear )。 (2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。 Private Sub Command 1_Click() Dim i As Integer, s As String, ch As String, temp As String Dim k As Integer, n As Integer, c1 As Integer, c2 As Integer Dim h As Single, sum1 As Single, sum2 As Single s = Text1.Text i=1 : k = 0 : n = 0 sum1 = 0 : sum2 = 0 : c1 = 0 : c2 = 0 Do While ____① ?????? ch = Mid(s, i, 1) If ch <> "," Then ?k = k+1 Else n = n + 1 temp = Mid(s, i - k, k) If n Mod 2 = 1 Then ? ______②_____ Else If temp = "M" Then sum1= sum1+ h : c1= c1 + 1 Else sum2 = sum2 + h : c2 = c2 + 1 ?End If ?k = 0 End If i = i + 1 Loop If c1<> 0 Then Label2.Caption = Str(Int((sum1 / c1) * 100 + 0.5) /100) + "m" If c2<> 0 Then Label3.Caption = Str(Int((sum2 / c2) * 100 + 0.5) /100) + "m" End Sub (3)若文本框Text1中輸入內容的結束符缺失,即輸入內容為1.65,F,1.75,M,1.84,M,1.69,F,1.72,M,1.58,F 則程序運行結束時,變量temp的值為_________ 。 下列關于某紙牌游戲的算法是:隨機產生兩組牌,每組17張,牌從小到大分別為“3~10、J、Q、K、A、2”,每種牌最多4張,四張相同的牌如3333稱為炸彈牌型,炸彈不能拆成其他牌型。按照如下規則出牌: ①先出順子牌型(順子指連續的5張及以上的牌,如345678,順子最小從3開始,最大到A),若有多個順子,先長后短,長度相同按從小到大順序出; ②再按三帶一牌型(3張相同的牌帶一張單牌)、對子牌型(2張相同)、單張牌型的順序出牌,同一牌型從小到大出; ③最后出炸彈,若有多個炸彈,從小到大出。 設計以下VB程序,牌“10”用0代替,比較兩組出牌次數,界面如圖所示,請回答下列問題。 (1)若A組初始牌為:4567880JQQQQKAAA2,B組初始牌為:56778888JQQKKKA22,則A組出牌次數_________B組。(填:大于/等于/小于) (2)請在劃線處填入合適代碼。 Consts="34567890JQKA2"??????? ?用0代替牌10 Dims1 As String,s2 AsString????? ?s1存儲A組牌,s2存儲B組牌Dimb (1To18)As String ?數組b存儲各類牌型,其中b(1)到b(4)可存儲炸彈牌型,b(5)到b(18)存儲其他牌型 Private Sub Command1 _Click() ?隨機產生A組和B組牌分別在文本框Text1、Text2中顯示,代碼略 End Sub Sub arrange(st As String)?整理牌型的過程 Dim a (3 To 15)As Integer,i As Integer Dim j As Integer,t As Integer,n As Integer Dim k As Integer,max As Integer,last As Integer Dim sa As String,stem As String,flag As Boolean ?數組元素a(3)到a(15)分別存儲牌3~JQKA2的張數 ?代碼略 t=17 For i=1 To 18 ??? b(i)="" Next i Do While t>0 ??? n=0 ?? For i=3 To 15?尋找炸彈牌型,若有則存儲到數組b中 ????? If a(i)=4 Then ________①________ n=n+1 b(n)=stem+stem+stem+stem ?? a(i)=0:t=t-4 ? End If Nexti ________②________ flag=True Do While flag ?尋找順子牌型,若有則存儲到數組b中 ??? flag=False:max=0:k=1 ??? For i=4 To 14 ?????? If a(i-1)>=1 And a(i)>=1 Then ??????? k=k+1 ?????? If k>max Then ?????? max=k ?????? last=i+1 ???? End If ? Else ???? k=1 ? End If ??? Next i ??? If max>=5 Then ???? flag=True: sa="" ???? For j=last-max+1 To last ???? stem=Mid(s,j-3,1) ???? sa=sa+stem+"" ??? ________③________ Nextj ??? n=n+1:b(n)=sa ??? t=t-max ? End If Loop ?? ?尋找并存儲三帶一、對子、單張牌型,代碼略 Loop End Sub Private Sub Command2_ Click() Dim count1 As Integer? count1統計A組出牌次數 Dim count2 AsInteger ?count2統計B組出牌次數 Call arrange(s1) ?在List1中顯示A組出的牌型,統計出牌次數,代碼略 Call arrange (s2) ?在List 2中顯示B組出的牌型,統計出牌次數,代碼略 If count2>count1Then ?? Label3.Caption="A組出牌次數小于B組" ElseIf count2=count1 Then ??? Label3. Caption="A組出牌次數等于B組" Else Label3. Caption="A組出牌次數大于B組" End If End Sub 約瑟夫問題是個有名的問題:N個人圍成一圈,順序為0,1,2,3,4,5,從0號這個人開始報數,報到2的將被殺掉,接下去重新開始報數,報到3的將被殺掉...以此類推,最后剩下一個,其余人都將被殺掉。例如N=6,被殺掉的順序是:1,4,3,0,5;最后只剩下2這個人。 llist= n=int(input(“請輸入參與人數:”)) for i in range(0,n-1): llist.append([i,i+1]) ______ ______ long=n k=head i=1 p=2 while( ______ ): if i==p-1: t=llist[k][1] print(llist[t][0])#索引為t的刪除 ______ if t==head: ______ i=1 p+=1 long=long-1 k=llist[k][1] ______ i+=1 print(llist[head][0]) 現今信息化時代,信息的傳輸十分迅速,足不出戶便知天下事。許多社交平臺都有設置本平臺的熱點排行榜,方便用戶了解正在發生的熱門事件。但社交平臺數量眾多,平臺用戶種類和數量也大不相同,導致不同平臺熱點的實際熱度大小也不同。小鐘為了確保自己知道的熱點是真正的熱點,于是打算用功能強大的python把各個平臺的熱點排行榜進行合并,形成自己的熱點排行榜。 為了熱點之間比較方便,小鐘設置了一個熱度值來衡量一個熱點的熱度大小,熱度值越大說明這個熱點的熱度越高。現在小鐘已經獲得了如下兩個平臺的熱度值從小到大的排行榜,正當他打算將之合并為一個從小到大的排行榜時,卻被老師叫走了。于是他決定把這個小功能交給他的好朋友——你來實現,你想到2種算法,請把下列程序填寫完整。 A P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 11 66 116 329 438 582 652 714 756 925 B E10 E9 E8 E7 E6 E5 E4 E3 E2 E1 35 116 215 271 309 428 576 772 806 950 Python程序如下: A=[11,66,116,329,438,582,652,714,756,925] B=[35,116,215,271, ______ ,428,576,772,806,950] 算法一: myRank= i=0 j=0 while (i<len(A)and j<len(B)): if (A[i]<B[j]): ______ i+=1 else: myRank.append(B[j]) j+=1 while (i<len(A)): myRank.append(A[i]) i+=1 else: while ( ______ ): myRank.append(B[j]) j+=1 print(myRank) 算法二: myRank=[0]*(len(A)+len(B)) i=0 j=0 k=0 while ( ______ ): k=i+j if (i>=len(A)): myRank[k]=B[j] j+=1 elif (j>=len(B)): myRank[k]=A[i] i+=1 elif ( ______ ): myRank[k]=A[i] i+=1 else: myRank[k]=B[j] j+=1 print(myRank) 一張骨牌由上下兩行共四個格子構成,每個格子有一個1到6之間的數字?,F在一共有5張骨牌,從左到右排成一排,定義每張骨牌的差值為:骨牌第一行的數字和減去第二行的數字和;5張骨牌的差值為:每張骨牌的差值和的絕對值。 如圖a中,5張骨牌的差值為: |(3+3-4-4)+(6+3-2-5)+(2+3-4-5)+(1+5-3-3)+(1+1-1-1)|=4。 每張骨牌都可以順時針旋轉90度,效果如圖b所示?,F在最多可以選擇其中一張骨牌進行旋轉,使得旋轉后的骨牌差值變小。求一種旋轉方案,并輸出骨牌差值的最小值。 編寫VB程序,實現上述功能。運行程序,在文本框Text1中依次輸入5張骨牌上的數字,單擊“計算”按鈕Command1,在文本框Text2、Text3、Text4中輸出結果。程序運行界面如圖b所示。 若圖a中第1張骨牌的數字修改為,1、2、6、6,則骨牌差值的最小值為 ______ 。 實現上述功能的VB程序如下,請在劃線處填入合適的代碼。 Dim a(1 To 20)As Integer‘依次存儲5張骨牌上的數字 Dim d(1 To 5)As Integer’依次存儲5張骨牌,上下兩行的差值 Const n=5 Private Sub Form_Load ( ) '從文本框Text1讀取5張骨牌上的數字,依次存入數組a 'a(1)~a(4)依次存儲第一張骨牌從左到右從上到下四個數字 'a(5)到a(20)依次類推 '代碼略 End Sub Private Sub Command1_Click ( ?。? Dim i As Integer,up As Integer,down As Integer,t As Integer,k As Integer Dim id As Integer,times As Integer,x As Integer,ans As Integer For i=1 To n up=a(4*i-3)+a(4*i-2) down=a(4*i-1)+a(4*i) d(i)=up-down t=t+d(i) Next i id=0:times=0 ans=① ______ If ans<>0 Then k=1 Do While k<=n For x=1 To 3 temp=② ______ If temp<ans Then ans=temp id=k ③ ______ End If If temp=0 Then Exit Do Next x k=k+1 Loop End If Text2.Text=CStr(id) Text3.Text=CStr(times) Text4.Text=CStr(ans) End Sub Function turn(ByVal k As Integer,ByVal x As Integer)As Integer ‘求將第k張骨牌,順時針旋轉x次后,上下兩行的差值,代碼略 End Function 在Text1中輸入一個1-26之間的數字n,點擊“產生”按鈕,在Text2中產生n個不重復的大寫字母,中間用逗號隔開(圖a),點擊一次“最小值”按鈕,Text2中最小的字母會掉落到List1中,并將Text2中對應的字母和后面的逗號刪除(圖b),再點擊一次“最小值”按鈕,剩余字母中的最小值繼續掉落(圖c)。(ASC(“A”)=65,CHR(65)=“A”) center0 根據描述,如產生的字母為“H,K,C,B,N,”,第三次點擊“最小值”按鈕后Text2中顯示內容為 ______ 請在劃線處填入合適的代碼。 Private Sub Command1_Click ______ Dim i As Integer,j As Integer,n As Integer Dim zm As Integer,flag As Boolean,zf As string Randomize'重置rnd函數,確保每次產生的隨機數不一致 zf=““ n=Val(Text1.Text) For i=1 To n ______ zm=Int(Rnd*26+65) For j=1 To Len(zf) Step 2 If Asc(Mid(zf,j,1))=zm Then ______ flag=True Exit For End If Next j If flag=False Then zf=zf+Chr(zm)+“,“ Next i Text2.Text=zf End Sub Private Sub Command2_Click ______ Dim i As Integer,zf As string zf=Text2.Text k=1 For i=3 To Len(zf)-1 Step 2 If Mid(zf,k,1)>Mid(zf,i,1)Then k=i Next i List1.AddItem Mid(zf,k,1) Text2.Text= ______ End Sub 答案和解析 1.【答案】A 本題考查的是VB程序的應用,稍有難度。 【解答】 執行該程序段后,a(1)?a(6)各元素的值不可能的是6,1,3,7,8,9。 ?故選A。 2.【答案】D 本題主要考查對文件格式的了解,難度一般。 【解答】 根據題意,分析可知,ABC說法都正確,D選項中,動畫設計可以使用3d max,而Flashget是下載工具,故D說法錯誤,符合題意。 ?故選D。 3.【答案】B 【解析】初始值p=8,For?q=p+1To?2*p? 即:q=9? To? 16,那么q的取值范圍從9到16 當q=9時,s=(p*q)?Mod?(q-p)=(8*9)Mod?(9-8)=0 那么t=t+1=1; 當q=10時,s=(p*q)?Mod?(q-p)=(8*10)Mod?(10-8)=0,那么t=t+1=2 當q=11時,s=(p*q)?Mod?(q-p)=(8*11)Mod?(11-8)<>0,所以不執行t; 當q=12時,s=(p*q)?Mod?(q-p)=(8*12)Mod?(12-8))=0,那么t=t+1=3; 當q=13,14,15時,s=(p*q)?Mod?(q-p<>0,所以不執行t; 當q=12時,s=(p*q)?Mod?(q-p)=(8*16)Mod?(16-8))=0,那么t=t+1=4; 故選:B。 本題考查的知識點是VB應用程序的調試及運行;VB各類基本運算、表達式與常用的標準函數。 解題的關鍵就是s=(p*q)?Mod?(q-p)=0時,才執行t的語句。 4.【答案】D 【解析】大循環Do?while?k<=n???時,執行k=k*2,得到k的取值為 1,2,4,8,16,32,64.當k=64時滿足k<=n?執行k=k*2=128>100循環停止。 當k=1時,j=1?? Do?while?j<=k做循環1次; 當k=2時,j=1?? Do?while?j<=k做循環2次; 當k=4時,j=1?? Do?while?j<=k做循環4次; 當k=8時,j=1?? Do?while?j<=k做循環8次; 當k=16時,j=1?? Do?while?j<=k做循環16次; 當k=32時,j=1?? Do?while?j<=k做循環32次; 當k=64時,j=1?? Do?while?j<=k做循環64次; 那么sum=1+2+4+8+16+32+64=127 故選:D。 本題考查的知識點是VB應用程序的調試及運行;VB各類基本運算、表達式與常用的標準函數。 嵌套循環,sum就是累加的次數之和。 5.【答案】(1)A;(2)?A;(3)①Mid(s, i, 1) > Mid(s, i - 1, 1);②f = False Or i = n 【分析】本題主要考查的是VB程序的相關知識,熟悉VB程序的代碼是解題的關鍵。 【解答】(1)該程序界面上有3個類,故選A; (2)若在文本框Text1中輸入“abgcdefkuvghl”,單擊“統計”按鈕Command1后,文本框Text2中顯示的內容為1,故選A; (3)分析題意可得,第一空填Mid(s, i, 1) > Mid(s, i - 1, 1);第二空填f = False Or i = n。 故答案為:(1)A;(2)?A;(3)①Mid(s, i, 1) > Mid(s, i - 1, 1);②f = False Or i = n。 6.【答案】(1)Mid(s1,i,j-i);(2)Val(s2)>=max 本題考查VB代碼的閱讀與改錯,是對該軟件的一個綜合運用,難度較大。 【解答】 閱讀程序,根據該程序段實現的功能,分析得出,(1)處應改為:Mid(s1,i,j-i);(2)處應改為:Val(s2)>=max。 故答案為:?(1)Mid(s1,i,j-i);(2)Val(s2)>=max。 7.【答案】(1)① i=len(s1);② s2=s2+t+","; (2) nixu; (3) 15,4,1 本題考查VB代碼的閱讀與填空,是對該軟件的一個綜合運用,難度較大。 【解答】 (1)閱讀程序,該程序實現了數字逆序功能,s1為從文本框Text1中輸入的若干整數,故①處將s1的字符長度賦值給i,即i=len(s1);②當ch不滿足條件ch >=”0” And ch<=”9”時,執行?s2=s2+t+","; (2)由Private Sub nixu_Click( ) ,分析得出,逆序按鈕的名稱是nixu; (3)如果把程序中加框的語句刪除,運各程序時,輸入數據為“3,1,4,15”,則第一個字符不輸出,其余逆序輸出,故輸出結果是15,4,1。 故答案為:?(1)① i=len(s1);② s2=s2+t+","; (2) nixu; (3) 15,4,1。 8.【答案】(1)i<=6(或i<7); (2)x=i:end if:i=i+1. 本題主要考查VB程序的相關知識。 【解答】 (1)由題意分析可知,找出籃球比賽中7名球員得分最高的球員,實現數據存儲到數組a中,空格填入i<=6(或i<7); (2)由題意分析可知,找出籃球比賽中7名球員得分最高的球員,當i>7時跳出循環,每進行比較一次,計數+1,故填x=i?:end if:i=i+1. 故答案為:(1)i<=6(或i<7);(2)x=i:end if:i=i+1. 9.【答案】(1)3; (2)①?Mid(s,begin,i-begin);②i+1; (3)14 本題考查VB代碼的閱讀與填空,是對該軟件的一個綜合運用,難度較大。 【解答】 (1)為實現該程序,在窗體中至少需要使用3類不同的控件對象,分別為:Caption控件、Command控件、Text控件,故答案為3; (2)分析程序,該程序實現功能為:在文本框中輸入各枚導彈的射程(單位:千公里),數據之間用逗號分割,以-1結尾。單擊按鈕,在標簽框輸出結果;故空格處應依次填入:①?Mid(s,begin,i-begin);②i+1; (3)若刪除程序中加框處語句,還是相同的輸入數據,則計算出的最大差值為:14。 故答案為:(1)3;(2)①?Mid(s,begin,i-begin);②i+1;(3)14。 10.【答案】(1)B; (2)①i<=Len(s);②h=Val(temp); ?(3)“1.58” 本題考查的是VB程序的應用,稍有難度。 【解答】 ?(1)要使程序運行時,清空Label2上的內容,可在Form_Load事件處理過程中添加語句Label2.Caption="",故選B; (2)①分析前后語句,此處應填:i<=Len(s); ②此處應填:h=Val(temp); (3)若文本框Text1中輸入內容的結束符缺失(即輸入內容為1.65,F,1.75,M,1.84,M,1.69,F,1.72,M,1.58,F),則程序運行結束時,變量temp的值為“1.58”。 故答案為:?(1)B;(2)①i<=Len(s);②h=Val(temp);(3)“1.58”。 11.【答案】(1)小于; (2)① stem =Mid(s, i - 2, 1); ②n=4; ③a(j-1)=a(j-1) -1 . 本題主要考查的是VB程序的相關知識,熟悉VB程序的代碼是解題的關鍵。 【解答】 ?(1)若A組初始牌為:4567880JQQQQKAAA2,B組初始牌為:56778888JQQKKKA22,則A組出牌次數小于B組。 (2)b(1)到b(4)可存儲炸彈牌型,①需要尋找炸彈牌型,故填 stem =Mid(s, i - 2, 1); ②以下是尋找順子牌型,以上是尋找炸彈牌型,若有則存儲到數組b中,故填n=4; ③若有多個順子,先長后短,長度相同按從小到大順序出,故填a(j-1)=a(j-1) -1; 故答案為:?(1)小于;(2)① stem =Mid(s, i - 2, 1);②n=4;③a(j-1)=a(j-1) -1 . 12.【答案】llist.append([n-1,0]),head=0,long>1,head=llist[k][1],llist[k][1]=llist[t][1],k=llist[k][1] 【解析】解析:①for循環體是將索引0-n?追加到llist中,此處是循環體執行完,將末元素與首元素的索引加入到llist中,故填llist.append([n-1,0])。②head是列表頭,初始化為0,故填head=0。③最后剩下一個,其余人都將被殺掉,故循環條件是long>1,變量long控制元素個數,故填long>1。④索引為t的刪除后,此處是更新head值,故填head=llist[k][1]。⑤刪完后,如果t等于head,需要更新索引k,將索引t的值賦給變量k,故填llist[k][1]=llist[t][1]。⑥如果t不等于head,也需要更新索引k,故填k=llist[k][1] 本題主要考查Python程序執行與調試。 熟練掌握程序的調試與運行 13.【答案】309,myRank.append(A[i]),j<len(B),k<len(A)+len(B)-1,A[i]<B[j] 【解析】解析:根據表格所示,列表B中第5個元素為309,因此①處為309;A[i]<B[j]時,將列表末尾添加A[i],因此②處為myRank.append(A[i]);當列表未結束時,列表末尾添加相應元素,因此③處為j<len(B);算法二中引入變量k,用以記錄i與j的和,當k小于len(A)+len(B)-1說明兩列表未結束,因此④處為k<len(A)+len(B)-1;若A[i]<B[j],則先將A[i]添加至列表末尾,因此⑤處為A[i]<B[j]。 本題主要考查python編程。 知識點考查清晰準確 14.【答案】【小題1】1 【小題2】Abs(t),Abs(t+turn(k,x)-d(k)),times=x 【解析】(1)根據圖中后四張骨牌可知,上行數值和為22,下午和為24,差值為2,第1張骨牌的數字修改為1、2、6、6后,可以轉為2、6、1、6,即可得差值最小值為1;(2)由題意知d(1?To?5)數組依次存儲5張骨牌上下兩行的差值,變量t為各骨牌上下排差值和的累加,①處為存儲最小值的變量ans賦初值,應為t的絕對值,即abs(t);?②處位于對一張骨牌進行旋轉的雙重循環中,變量x為旋轉次數,temp變量應為旋轉后的臨時最小值,函數turn返回旋轉x次后的差值,所以每次旋轉后的差值變化應為turn(k,x)-d(k),所以旋轉后的臨時最小值應為Abs(t+turn(k,x)-d(k));③處是在判斷temp<ans時即旋轉后差值小于原差值,此時旋轉次數變量應記錄為x的值。 Do while 條件表達式?? ?語句塊? ????Loop? ??Do語句的執行過程是:先計算條件表達式的值,如果值為True,則執行一次循環體中的語句塊,遇到Loop語句后,再次計算條件表達式的值,若仍為True,繼續執行循環體中的語句塊,如此不斷重復,直到條件表達式的值為False時,才終止Do語句的執行。 本題考查算法的VB程序實現,重點是對數組變量、循環嵌套的理解和運用。 15.【答案】【小題1】K,N, 【小題2】( ?。?flag=False,i=i-1,( ?。?mid(zf,1,k-1)+mid(zf,k+2)或mid(zf,1,k-1)+mid(zf,k+2,len(zf)-k-1) 【解析】(1)第一次掉落“B,”,第二次掉落“C,”,第三次掉落“H,”,故第三次點擊“最小值”按鈕后Text2中顯示內容為K,N,。(2)空1:flag用來判斷是否有字母有重復,循環每次flag的初值為False,故填flag=False。空2:內層for循環判斷i處生成的字母與已經生成的字母是否重復,如果重復,則i遞減需要重新生成,flag賦值為True,故此處填i=i-1。空3:通過for循環找到最小字母的位置k,將k處的字母及之后的逗號刪除,即將位置k-1之前的字符以及位置k+2之后的字符顯示到文本框2中,故填mid(zf,1,k-1)+mid(zf,k+2)或mid(zf,1,k-1)+mid(zf,k+2,len(zf)-k-1)。 故答案為:(1)K,N,(2)flag=False????(3)i=i-1????(4)mid(zf,1,k-1)+mid(zf,k+2)或?mid(zf,1,k-1)+mid(zf,k+2,len(zf)-k-1) Mid( ?。┦且粋€字符串函數,作用是從一個字符串中截取出指定數量的字符。函數用法,Mid(string,start,[length])其中參數string為字符串表達式,參數start為string中被取出部分的字符位置,參數length為截取的長度。程序中第一個循環隨機生成字母,flag初值為false,如果和已經生成的字符有重復則flag為true,并i減1以便重新生成。不重復,則把該字母和一個逗號加入zf。用選擇排序的思想標記最小值,然后用mid函數取出最小字母放入list1,并在Text2中減去這個字母和逗號。 本題主要考查VB程序的執行與調試。 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫