資源簡介 第八單元 算法及VB語言基礎單元小結知識系統構建/第八單元 算法及VB語言基礎單元檢測題組/時間:40分鐘 /分值:65分一、選擇題(每題3分,共42分)1.(2019浙江十二校高三第一次聯考,5,3分)某流程圖如圖所示:/若輸入k的值為9,最終i、s的值分別為( )A.11 0 B. 11 -11 C. 9 0 D. 9 -9答案 B 本題考查循環結構流程圖。各變量在執行過程中變化如下:變量kis進循環前910第一次循環后930+3第二次循環后950+3-5第三次循環后970+3-5-7第四次循環后990+3-5-7+9第五次循環后9110+3-5-7+9-11退出循環2.(2019浙江名校新高考研究聯盟第一次聯考,6,3分)某算法的部分流程圖如圖所示。執行這部分流程后,輸出m的值是( )/ A.0 B. 1 C.2 D.9答案 D 本題考查循環結構流程圖。各變量變化如下:變量xym進循環前19200第一次循環后1922第二次循環后199第三次循環后019退出循環本程序本質上是找出數值x的各位數中值最大的那位數。3.在Visual Basic中,能表示整數x是完全平方數(如9=3*3,9是完全平方數)的表達式是( )A.x^2=x*x B.sqr(x)=x2C.int(sqr(x))^2=x D.(x2)^2=x答案 C 本題考查VB基本函數的應用。Sqr(x)是開平方函數,Int(x)是取不大于x的最大整數。根據題意可知選C。4.有如下程序:Private Sub Command1_Click() Dim a(5) as Integer Dim n as Integer, i as Integer n = Val(Text1.Text) i = 0 a(1) = 1 a(2) = 1 For i = 3 To n a(i) = a(i-1) + a(i-2) Next i Label1.Caption = a(i)End Sub若在Text1中輸入5,則點擊按鈕后的運行結果為( )A.Label1中輸出5 B.Label1中輸出10C.報“下標越界”錯誤 D.Label1中無內容答案 C 本題考查對VB循環語句和數組的掌握。當輸入5時,首先初始化數組元素a(1)為1,a(2)為1,進入For循環,第一次循環i為3,計算出a(3)的值為a(1)+a(2)=2,i的值加1,第二次循環計算出a(4)的值為3,i的值加1,第三次循環計算出a(5)的值為5,i的值加1,最后跳出循環,i的值為6,a(5)的值為5。而程序要求輸出a(6),但是由定義語句Dim a(5) as Integer可知a數組的范圍是0~ 5,所以不存在下標為6的數組元素a(6),屬于數組下標越界錯誤。5.用VB模擬設計某軟件的登錄界面,如圖所示,當鼠標單擊“<請輸入賬號>”所在的文本框Text1時,文字內容消失。則此事件處理的過程名應該是( )/A.登錄窗口_Click B.Text1_KeyPressC.Command1_Click D.Text1_Click答案 D 本題考查對VB事件的掌握。點擊文本框Text1的事件名為Text1_Click,其中Text1為文本框的名稱,Click代表是點擊事件。6.(2019浙江十二校高三第一次聯考,11,3分)有如下VB程序段:Dim i As Integer, Sum As IntegerDim a(l To 6) As Integer, b(l To 6) As IntegerSum = 0a(6) = 18: a(5) = 7: b(6) = 14: b(5) = 16For i = 4 To 1 Step -1 a(i) = a(i + 2)-a(i + 1) b(i) = b(i + 2)-a(i) If b(i) Mod 3 = 0 Then Sum = Sum + b(i)Next iTextl .Text = Str(Sum)該程序段運行后,文本框text1中顯示的內容是( )A.39 B. 30 C. -9 D. 12答案 B 本題考查數組的運算。當i=4時,計算得到a(4)=a(6)-a(5)=18-7=11,b(4)=b(6)-a(4)=14-11=3,得到sum=3;當i=3時,計算得到a(3)=a(5)-a(4)=7-11=-4,b(3)=b(5)-a(3)=16-(-4)=20,sum仍然是3;當i=2時,計算得到b(2)=b(4)-a(2)=3-15=-12,得到sum=3-12=-9;當i=1時,計算得到a(1)=a(3)-a(2)=-4-15=-19,b(1)=b(3)-a(1)=20-(-19)=39,得到sum=-9+39=30。7.在Visual Basic中,有如下程序:Private Sub Command1_Click() Dim a As Integer,b As Integer,c As Integer Dim d As Integer a=Val(Text1.Text):b=Val(Text2.Text):c=Val(Text3.Text) d=min(a,b)+min(b,c) Text4.Text=Str(d)End SubFunction min(x As Integer,y As Integer)As Integer If xEnd Function運行該程序,在文本框Text1、文本框Text2、文本框Text3中分別輸入2、-5、6后,單擊命令按鈕Command1,文本框Text4中顯示的是( )A.-10 B.-5 C.2 D.6答案 A 本題考查自定義函數。自定義函數min的功能是比較兩個參數的大小,返回小的值。輸入后a=2,b=-5,c=6,d=min(a,b)+min(b,c)=-5+(-5)=-10。8.模擬剪刀石頭布的游戲,用1~3這3個數分別代表剪刀、石頭、布這三種情況,使用Rnd隨機函數可以表示為( )A.Int(Rnd(3)+1) B.Int(Rnd*2+1)C.Int(Rnd(2)+1) D.Int(Rnd*3+1)答案 D 本題考查隨機函數Rnd的使用。Rnd能產生一個大于或等于0且小于1的單精度隨機數。產生[a,b]區間的隨機整數,公式應該是:Int(Rnd*(b-a+1)+a)。9.在Visual Basic程序中,設x=389,能得到其百位數字“3”的表達式是( )A.Int(x/10)*10 B.Int(x/100)*100C.x-Int(x/10)*10 D.Int(x/100)答案 D 本題考查基本的算術運算表達式。Int(x/10)*10表達式的值是380,Int(x/100)*100表達式的值是300,x-Int(x/10)*10表達式的值為9,Int(x/100)表達式的值是3。10.已知字符串變量x的值是“H”,則VB表達式Chr(Asc(x)+1)的值是(已知字符“A”的ASCII碼是65)( )A.“I” B.“G” C.72 D. 74答案 A 本題考查兩個字符轉換函數Chr(x) 及Asc(x)的功能。Chr(Asc(“H”)+1)可以理解為比“H”的ASCII值大1的字符。11.以下程序運行后,s的值為( )Dim i As Integer, s As Stringi = 0Do While i < 5 s = Str(i) + s i = i + 1LoopA.“01234” B.“12345” C.“54321” D.“43210”答案 D 本題考查對VB循環結構和字符串操作的掌握。i的初值為0,s為空字符串,進入循環體,首先s和i連接,s的值為“0”,i的值加1,第二次進入循環,s的值為“01”(注意程序中連接的順序),i的值加1,最后當i等于5時跳出循環,字符串s連接到4為止,所以為“43210”。12.數組元素值a(1)=2 : a(2)=8 : a(3)=3 : a(4)=4 : a(5)=5 :a(6)=6 : a(7)=1 : a(8)=7 : a(9)=9。m = 1: k = 1For i = 2 To 9 If a(i) > a(i-1) Then k = k + 1 If k > m Then m = k Else k = 1 End IfNext iText1.Text = Str(m)該程序段運行后,文本框Text1中顯示的內容是( )A.4 B.6 C.8 D.9答案 A 該程序實現的功能是求最大連續遞增序列的個數。a(3)=3 : a(4)=4 : a(5)=5 :a(6)=6,這四個元素為最大連續遞增序列。也可采用代入法進行逐步計算。變量k的值在不斷變化,變量m用于記錄k的最大值。13.如下VB程序段:x=Text1.Textp=0For i=1 to Len(x) If Mid(x,i,1)=“a” Then p=p+1Next iPrint p若程序運行時,在文本框Text1中鍵入“Are you happy”,則運行結果是( )A.0 B.1 C.2 D.11答案 B 本題主要考查For語句和字符串處理函數。Len()函數是求字符串的長度,Mid()函數是求字符串的子串。變量x=Text1.Text=“Are you happy”,For語句的作用是統計字符串x中字母“a”的個數,用變量p計數,最后輸出p。注意“A”不等于“a”。14.有10個數據23、15、51、36、78、47、39、9、88、96依次存放在數組a(1 To 10)中,使用如下程序段找出最大值: max=a(1) For i=2 To 10 If a(i) > max Then max=a(i) Next i當虛線框內的語句剛好執行完第6次后(此時循環變量i的值為7),變量max的值是( )A.23 B.39 C.78 D.96答案 C 本題中代碼用于尋找數組中的最大值。它的思想方法是先假設數組的第一項是最大的,并賦值給變量max,然后把從第二項開始的所有數組元素跟變量max進行比較,如果比max大,則把該元素賦值給max。這樣循環結束后,變量max中存儲的就是該數組中的最大值。而本題不是循環結束后,而是循環6次以后,也就是比較了6次,max中存儲的應該是前7個數中的最大值,即為78。二、非選擇題(共23分)15.(2016浙江高中聯盟第二學期開學考試,16,4分)任意一個大于或等于4的偶數,都可以用兩個素數之和表示,這就是哥德巴赫猜想。如:4=2+2,6=3+3,8=3+5, 10=5+5,12=5+7,98=19+79。編寫一個驗證哥德巴赫猜想的VB程序:程序運行時,在文本框Text1中輸入一個大于或等于4的偶數,單擊“驗證”按鈕Command1后,如果哥德巴赫猜想驗證成功,則在文本框Text2中顯示“Yes”,并在列表框List1中顯示用兩個素數表示該偶數的等式,否則顯示“No”。程序運行效果如圖所示。/實現上述功能的VB代碼如下,但加框處代碼有錯,請改正。Function judge(x As Integer)As Boolean’函數judge的功能是判斷整數x是不是素數,若是素數則返回True,否則返回False Dim j As Integer judge=True j=2 Do While j<=x-1 And judge=TrueIf x Mod j=0 Thenjudge=FalseElsej=j+1End If LoopEnd FunctionPrivate Sub Command1_Click() Dim n As Integer,p As Integer,q As Integer,flag As Boolean n=Val(Text1.Text) p=1 flag=False Do While flag=True And pp=p+1q=q+1 ’②If judge(p)And judge(q)ThenText2.Text=“Yes”flag=TrueList1.AddItem Str(n)+“=”+Str(p)+“+”+Str(q) End If Loop If flag=False Then Text2.Text=“No”End Sub答案 ①flag=False 或not flag 或flag<>True ②q=n-p解析 本題驗證哥德巴赫猜想:在文本框Text1中輸入任意一個大于或等于4的偶數,輸出以兩個素數和的形式顯示在列表框List1中,并在文本框Text2中顯示驗證結果。變量flag用于標識是否找到方案,初始值為false,表示未找到,枚舉過程中若找到則變為True,故Do while語句的條件是:方案未找到(flag=False)且(And)仍在查找范圍內(p16.有一個數組data存放了n個數據,現從中刪除了一個元素,其余的元素依次向前遞補(假設刪除的是第3個元素,則要將第4個元素移到第3個元素處,第5個元素移到第4個元素處,以此類推),然后輸出數組內容。程序輸入要刪除數的位置,點擊“刪除”按鈕后刪除指定數,并把剩余的數字依次輸出到List2中,程序如圖所示。/Dim data(10) As Integer ’①Dim n As Integer ’n表示總元素個數Private Sub Command1_Click() Dim t As Integer t = Val(Text1.Text) For i = t To n-1?、?br/> Next i n = n - 1 For i = 1 To n?、?br/> Next iEnd SubPrivate Sub Form_Load()Dim i As Integern = 10For i = 1 To n data(i) = i * 2 List1.AddItem Str(data(i))Next iEnd Sub(1)與①處語句功能一樣的是(填字母) (A.Dim data(0 To 10) As Integer/B.Dim data(1 To 10) As Integer)。?(2)為實現程序功能,請在劃線處填入合適的代碼。②處的代碼為 ?! ?③處的代碼為 。 ?答案 (1)A(2)data(i) = data(i + 1);List2.AddItem Str(data(i))解析 (1)本題考查數組元素的定義方法。(2)②將當前數data(i)填充為后面的數data(i+1),相當于后面的數往前移動一位,數字總數n=n-1,指定位置的數已刪除。③利用Listbox的AddItem方法添加數據。17.(2016浙江高中聯盟第二學期開學考試,17,5分)競選班長。編號分別為1、2、3、4、5的五位候選人參加班長競選,現要設計一個計票程序,根據回收的選票信息統計各位候選人的得票數,得票數最多的被選為班長,并輸出班長的編號。選票信息為一個數字序列,由每張選票的投票結果構成,如某選票序列為101233303,其含義見如下表所示。選票序列101233303含義第1張選票投給1號第2張選票棄權第3張選票投給1號第4張選票投給2號第5張選票投給3號第6張選票投給3號第7張選票投給3號第8張選票棄權第9張選票投給3號備注:選票序列101233303,序列中的數字i,表示投票給編號為i的人,即編號為i的人得1票,其中數字0表示不投給任何人,即為棄權。表中選票序列的投票結果為:1號得2票,2號得1票,3號4得票,4號、5號均為0票(沒人投),所以3號得票數最高,被選為班長。程序運行時,在文本框Text1中輸入選票信息,單擊“計算”按鈕Command1后,被選為班長的編號顯示在文本框Text2中。程序運行效果如圖所示。/實現上述功能的VB程序如下,請在劃線處填入合適的代碼。Private Sub Command1_Click()Dim a(1 To 5)As Integer’數組元素a(1)~a(5)依次存放編號為1~5的五位候選人的得票數Dim st As String,i As Integer,j As Integer,n As IntegerDim ans As Integer ’變量ans存放被選為班長的人的編號Dim max As Integer ’變量max存放最多的得票數st=Text1.Text ?、佟 ?For i=1 To 5a(i)=0Next iFor i=1 To 5For j=1 To nIf ?、凇 hen ?a(i)=a(i)+1Next jNext imax=0For i=1 To 5If a(i)>max Then max=a(i):ans=iNext i ?、邸 ?End Sub答案?、賜=Len(st)?、赩al(Mid(st,j,1))=i③Text2.Text=Str(ans)解析 算法主要思想:將輸入的字符串,利用Mid函數逐位提取,并將判斷結果存入到相應數組變量中,然后通過比較求出數組元素的最大值及對應編號。代碼實現:將Text1中的選票序列讀入字符串變量st,使用Len函數計算字符串長度存入變量n,使用For j=1 To n依次提取每一位,通過Val函數轉換為數值類型,并與編號進行比較,統計到相應候選人對應的數組元素中。變量max用于存儲最大票數,變量ans用于存儲最大票數的候選人編號。題目要求在Text2中輸出最大票數候選人的編號,故輸出值為ans。18.小明編寫了一個數據插入程序。程序輸入一個數字,將該數字插入一列有序數據:-5,3,4,12,20,45,70,并使數據序列保持有序。設計的算法是從前往后找位置插入。/Private Sub Command1_Click() Dim a(1 To 8) As Integer Dim n, i, j, x As Integer List1.Clear List2.Clear a(1) = -5: a(2) = 3: a(3) = 4: a(4) = 12: a(5) = 20: a(6) = 45: a(7) = 70 For j = 1 To 7 List1.AddItem Str(a(j)) Next j x = Val(Text1.Text) i = 1 Do While x > a(i) And i < 8 ’找x的插入位置① Loop For j = 8 To i + 1 Step -1 ’移動數據② Next j a(i) = x For j = 1 To 8 List2.AddItem Str(a(j)) Next j Label1.Caption = “插入的位置是” &Str(i)End Sub(1)代碼“List1.Clear”中的Clear是 。(單選,填字母:A.屬性名/B.事件名/C.方法名)?(2)為實現程序功能,請在劃線處填入合適的代碼。①處填入的代碼為 ?! ?②處填入的代碼為 。 ?答案 (1)C(2)i = i + 1;a(j) = a(j - 1)解析 (1)略。(2)本題在一個遞增序列中插入一個新數。①i表示新數的位置,新數若比當前數大,則位置往后移動。②從后往前依次將元素后移一位。 展開更多...... 收起↑ 資源列表 單元小結.docx 單元檢測題組.docx 縮略圖、資源來源于二一教育資源庫