資源簡介 1120140011163300選修一第四章VB程序設計初級章末習題(簡單程度) 一、選擇題(本大題共7小題) 程序設計語言的發展經歷 ( ) 、匯編語言及高級語言。 A. 機器語言 B. pascal語言 C. vb語言 D. 自然語言 下列VB程序段的功能為:生成n個不重復的隨機整數,保存在數組a中,并升序排序。 Const n = 6 Dim a(i To n) As Integer,f(1 To 10) As Boolean Dim tmp As Integer,i As Integer,j As Integer,t As Integer ’f數組各元素的初值置為False,代碼略 For i=1 To ? ?t = Int(1+Rnd*10) ? ?If Not f(t) Then ??? a(i)=t︰f(t)= True ??? For j= ??? ??If a(j)< a(j-1) Then ?? ?????tmp = a(j)︰a(j)= a(j-1)︰a(j-1)= tmp ?? ???End If ??? Next j Else ?End If Next i 上述程序段3個方框處的表達式分別為 A. (1) n-1? ??(2) 2 to i ????????(3) i = i-1 B. (1) n?? ???(2) i to 2 Step-1?? (3) i= i-1 C. (1) n-1? ??(2) 2 to i? ???????(3) t= Int(1+Rnd*10) D. (1) n ?????(2) i to 2 Step-1 ??(3) t= Int(1+Rnd*10) 有如下VB程序段: For i=1 To 8 ? a(i)=Int(Rnd*2) Next i sum=0 For i=1 To 8 Step 3 ? For j=i To 8 ??? a(j)=1- a(j) ? Next j ? sum = sum + a(i) Next i Text1.Text= Str(sum) 執行程序段后,文本框Text1中顯示的內容不可能是 A. 0 B. 2 C. 3 D. 4 尋找數組元素a(1)到a(10)中最大值的VB程序段如下: ____①??????? For i = 2 To 10 If a(i) > Max Then_____②???? Next i 劃線處最合適的語句是() A. ①Max=1?? ②Max=i B. ①Max=a(1)?? ②Max=a(i) C. ①Max=1?? ②Max=a(i) D. ①Max=a(1)? ?②Max=i 有如下VB程序: Dim i As Integer, j As Integer, k As String, n As Integer n = 3 List1.Clear For i = 1 To n ??? k = "" ??? For j = 1 To i ????? k = k + "*" ??? Next j ??? List1.AddItem k Next i 該程序運行后,列表框List1中顯示的是(???? ) A. B. C. D. 下列VB表達式的值等于6的是() A. Int(Rnd*5+1) B. Len(Mid(“45678”,3,1)) C. 16 mod 10 D. Abs(-6.3) 為了計算s的結果,設計了如下VB程序段: s = 0 For i = 1 To 10 ??? If i = 1 Then ??? ????__①?? ? ??? ElseIf i Mod 2 = 1 Then ??? ????__②???? ??? Else ??? ????__③???? ??? End If Next i Text1.Text = Str(s) 上述程序中劃線處可選語句為 ①s=s+i/(i+1)??? ?②s=s-i/(i+1)??? ?③s=s+i A. ①②③ B. ③①② C. ③②① D. ①③② 二、非選擇題(本大題共9小題) 若某類矩陣的大部分數據是相同值(如0),我們可以采用僅記錄不相同值(如非0數據)的方式進行壓縮.甲同學對m行n列的該類矩陣進行以下處理: ●利用一維數組x存儲矩陣:把矩陣第1行到第m行數據逐行依次保存在數組x中, x(1)到x(n)分別存放第1行各個數據,x(n+1)到x(2*n)分別存放第2行各個數據,依次類推. ●? 對數組x中的數據進行壓縮:a(1)~a(3)依次存放矩陣的行數、列數及數值0.從數組x的第1個位置開始往后掃描,僅把非0數據所在矩陣中的行號、列號及值保存到a(4)開始的數組元素中.數組a各元素含義如圖a所示: 乙同學對數組a中的數據進行轉置處理: ●行列轉置生成轉置矩陣:從第1行到第n行逐行生成轉置矩陣,在第i行處理時,掃描數組a,若轉置矩陣當前的行號i等于原矩陣元素的列號a(j)(j=5,8,11,……), 則把 a(j)、a(j-1)及a(j+1)依次保存到數組b相應位置,即可把原矩陣第a(j-1)行a(j)列的數據轉置為矩陣第a(j)行a(j-1)列的數據.如有3行4列矩陣的轉置過程如圖b所示. (1)若m=4,n=3,矩陣數據如下圖所示,則數組元素a(7)到a(9)的值依次為:________(填數據,用逗號分隔) (2)甲、乙同學分別編寫程序實現矩陣數據壓縮和行列轉置.VB代碼如下,請在劃線處入合適的代碼. Dim a(1 To 10000)As Integer '數組a存放原矩陣壓縮后的數據 Dim b(1To10000)As Integer '數組b存放行列轉置后的壓縮數據 Dim p As Integer Private Sub Command1_Click( ?) Dim m As Integer, n As Integer 'm、n存放原矩陣的行數和列數 Dim x(1 To 10000)As Integer '數組x存放原矩陣各個數據 Dim i As Integer, j As Integer, num As Integer '讀取矩陣行數和列數分別存m和n,各個數據存數組x,代碼略. '下面代碼實現數據壓縮,結果保存到數組a中 a(1)=m: a(2)=n: a(3)=0 p=__ ?① ? ? ? For i = 1 Tom For j = 1 Ton ___②?? ? ? If num <> 0 Then a(p)=i: a(p+1)=j: a(p + 2) = num p=p + 3 End If Next j Next i p=p - 1 '輸出壓縮后的數據,代碼略. End Sub Private Sub Command2_Click() Dim i As Integer, j As Integer, pos As Integer '下面進行行列轉置,結果保存到數組b中 b(1) = a(2): b(2)=a(1): b(3) = a(3) pos = 4 For i = 1 To b(1) For j = 5 To p – 1 Step 3 If___③??????Then b(pos) = a(j): b(pos+1) = a(j-1):b(pos+2) = a(j+1) pos = pos + 3 End If Next j Next i '輸出行列轉置后的數據,代碼略. End Sub 有一組正整數,要求僅對其中的偶數進行降序排序。排序后偶數在前,奇數在后。排序示例如下。 排序前 75 78 60 86 61 75 36 88 排序后 88 86 78 60 36 75 61 75 程序運行界面如下圖所示。 實現上述功能的VB程序如下,但加框處代碼有錯,請改正。 Const n = 8 Dim a(1 To n) As Integer Private Sub Form_Load() ?'排序前數據存儲在數組a中,并在文本框Text1中顯示代碼略 End Sub Private Sub Command1_Click() Dim k As Integer, i As Integer, j As Integer, t As Integer i = 1 Do While i <= n - 1 ?? k = i ?? For j = i + 1 To n ????? If a(i) Mod 2 = 1 And a(k) Mod 2 = 0 Then??? '① ????????? k = j ????? ElseIf a(k) Mod 2 = 0 And a(j) Mod 2 = 0 And a(j) > a(k) Then ????????? k = j ????? End If ?? Next j ?? If k <> i Then ????? t = a(k): a(k) = a(i): a(i) = t ?? End If ? ?i = i + k ???????????????'② Loop '依次輸出排序后的數據。代碼略 End Sub 古羅馬有兩種簡單的加密算法,第一種按順序替換,例如把a-y分別替換成b-z,把z替換成a,這樣可以把persistence替換成qfstjtufodf。第二種是打亂信息的順序,例<11,1,3,6,10,4,5,2,8,9,7>的含義是把第11個字符放在第一位,而把第一個字符放在第二位,然后是第3個字符,第6個字符……,這樣可以把persistence替換成eprscsieent。后來發現同時使用兩種算法,加密效果更好。可以把 persistence替換成fqstdtjffou。 下面,我們將采用vb編程實現persistence替換成fqstdtjffou的加密過程。 規則如下:1.原文只含小寫字母,且最大加密字符數為10000。 2.替換順序:a-y分別替換成b-z,把z替換成a。 3.加密方式(第二種加密方法)隨機產生并記錄(方便解密)。 VB代碼如下,請回答下面的問題: (1)如果原文為abcz,加密方式為4,1,2,3,則密文為________。 (2)請在劃線處填入合適代碼。 Dima(1To10000)AsInteger ′a()數組記錄 加密方式 DimnAsInteger′n記錄原文字符數目 PrivateSubCommand1_Click() DimsAsString Dimi,jAsInteger,b(1To10000)AsString′b()數組記錄原文 s=Text1.Text n=Len(s) Callsc ′調用過程 Text2.Text=“” Label3.Caption=“” Forj=1Ton Label3.Caption=Label3.Caption+ Str(a(j))+“” Nextj Fori=1Ton b(i)=_①_′完成字符轉換 Nexti Fori=1Ton Text2.Text=_②_ Nexti EndSub Subsc()′sc過程生成加密方式 Dim m,k As Integer,judge As Boolean m=1 Do Whilem<n+1 _③_′生成1到n之間的任意整數 judge=True Fork=1Tom-1 If a(m)=a(k)Then judge=False Next k If judge=True Thenm=m+1 Loop End Sub PublicFunctionzh(sAsString)AsString ′zh函數實現字符轉換 Ifs=“z”Thenzh=“a”Elsezh=Chr(Asc(s)+1) EndFunction 一個三位正整數能被3余數為2,且個位數等于1,例如:101、131等。判斷一個三位數正整數X滿足上述條件,其VB的關系表達式是? ? ? ? ?? 設計一個將十進制數轉換成N進制數的程序。在文本框Text1輸入十進制正整數x,在文本框Text2輸入進制n(2≤n≤26的整數),單擊“轉換”按鈕Command1,在文本框Text3中輸出轉換結果,程序運行結果如圖所示(注意當n>9時,數位上用“A-Z”代表數值“10-25”)。 ? (1)設計程序界面時,修改窗體標題為“十進制數轉換為N進制數”,應該修改該窗體的________屬性。 (2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。 Private Sub Command1_Click() ? Dim s As String ? Dim n As Integer, ?x As Integer, ?r As Integer ? x = Val(Text1.Text) ??___① ??? ? s = "" ? Do While x > 0 ??? r = x Mod n ??? If 0 <= r And r < 10 Then ????? s = Cstr(r) + s? ??? Else ? ????____②___?? ??? End If ??? x = x \ n ? Loop ? Text3.Text = s End Sub 小王編寫了一個VB 程序,其功能為:在文本框Text1 中輸入一個正整數n(n≤100),單擊“確定”按鈕Command1,則在列表框List1 中輸出一個由數字1~n 組成的圖形。程序運行界面如圖所示。 實現上述功能的 VB程序如下: 請回答下列問題: (1)小王在輸入代碼時,誤將“List1.AddItem s”寫成了“List1.AddItem=s”(其他代碼均正確),則調試程序時出現的錯誤為_________?。(單選,填字母:A.溢出/ B.必選參數 / C.下標越界 / D.要求對象)? ? ?? (2)請在程序劃線處填入合適的代碼。?? 下列是關于某數字的加密解密算法。其加密規則如下:計算某位數字與其位置相加得到的結果除以11的余數即為編號(其中若余數為0,編號為11),編號與字符對照表如下: 編號 1 2 3 4 5 6 7 8 9 10 11 字符 V i s u a l B A S I C 從對照表中找出與編號對應的字符完成加密,如下表顯示了數字“2018”的加密過程: 數字 2 0 1 8 位置 1 2 3 4 編號 3 2 4 1 加密字符 s i u V 小張按照上述原理,設計了一個解密的VB程序,功能如下:單擊“解密”按鈕Command1,將文本框Text1中的密文(字符數不超過11個)進行解密,并將解密后的明文在文本框Text2中輸出。程序運行效果如第圖a所示。 (1)在設計程序界面時,應使用第圖b所示“控件工具箱”中的(填寫相應編號)添加“解密”按鈕Command1。 (2)實現上述功能的VB程序如下,請在劃線處填入合適代碼。 Private Sub Command1_ Click() Dim s As String,s1 As String,s2 As String,ch As String,num As Integer s="Visual BASIC" s1=Text1. Text s2="":ch="" i=1 ??? Do While_________①_________ ???? ch=Mid(s1,i,1) ??? For j=1 To Len(s) ??? If ch=Mid(s,j,1)Then Exit For? Exit For退出For循環 Next j _________②_________ ??? s2=s2+CStr (num)?????? ?Cstr(x)在返回的字串前不加空格 ??? i=i+1 ??? Loop ??? Text2. Text=s2 ??? EndSub (3)若密文是“Bus”,則明文是__________________。 小王設計“模擬撤銷”程序,需要用一個“歷史記錄”,“歷史記錄”是在對字符串 s 進行插入或刪除時,將每步操作信息依次存儲得到的,操作信息由操作符(“+”表示插入,“-”表示刪除)、操作位置和操作字符串(只包含英文字母)構成,例如,“+23abc”表示在字符串 s 第 23 個位插入了“abc”,“模擬撤銷”過程按照“歷史記錄”的逆序進行,將字符串 s 的內容恢復到初始狀態。對字符串“Book”的操作與撤銷過程,如圖 a 所示。 ? ? ? 小王編寫的“模擬撤銷”VB 程序如下,文本框 Text1 中的內容是撤銷前字符串,文本框 Text2 中的內容是歷史記錄,單擊“撤銷”按鈕 Command1 后,在標簽 Label1 中顯示撤銷過程,程序運行界面如圖b 所示。 (1)實觀上述功能的 VB 程序如下,在程序中出現的對象沒有 Caption 屬性的是_____。(單選,填字母:A.Label1 / B.Command1 / C.Text1 和 Text2) (2)請在劃線處填入合適代碼。 Private Sub Command1_Click() Dim s As String, t As String, ch As String Dim c As String, num As String, ss As String Dim n As Integer, i As Integer s = Text1.Text: t = Text2.Text c = "": num = "": ss = s For i = Len(t) To 1 Step -1 ________①________ If ch >= "a" And ch <= "z" Or ch >= "A" And ch = "Z" Then c = ch + c ElseIf ch >= "0" And ch <= "9" Then num = ch + num Else n = Val(num) If ch = "-" Then s = Mid(s, 1, n - 1) + c + ________②________ Else s = Mid(s, 1, n - 1) + Mid(s, n + Len(c), Len(s) - n - Len(c) + 1) End If ss= ss + "→" + s c = "": num = "" End If Next i Label1.Caption = ss End Sub (3)運行該程序,若文本框 Text1 中的內容是"April",文本框 Text2 中的內容是”-3p+3ri-6e”,單擊撤銷按鈕,For 循環語句執行完成后,字符串 s 的值是_____________________。 閱讀VB程序代碼,如果執行時依次輸入8和15,則輸出m的結果是__________。 center0 答案和解析 1.【答案】A 本題主要考察了程序設計語言的發展經歷:機器語言、匯編語言及高級語言。 【解答】 ?根據分析可知是機器語言,故選A。 2.【答案】B 本題主要考查的是VB程序的相關知識,熟悉VB程序的代碼是解題的關鍵。 【解答】 根據題意,分析可知,(1)處生成n個不重復的隨機整數,故應填n;(2)處應填入?i to 2 Step-1 ;(3)處應填入i= i-1,故B正確。 故選B。 3.【答案】D 本題主要考查的是VB程序的相關知識,熟悉VB程序的代碼是解題的關鍵。 【解答】 根據題意,分析可知,a(i)=Int(Rnd*2),故?a(i)為0或1,文本框Text1中顯示的內容是sum; 再由sum = sum + a(i),可分析得知,sum的值為0或,或3,故ABC正確,D選項錯誤,符合題意。 ?故選D。 4.【答案】B 本題考查VB基本運算與表達式,難度較易。 【解答】 根據題意,分析得出:尋找數組元素 a(1)到a(10)中最大值,①處應填Max=a(1)?? ②處應填Max=a(i) ,故B正確。 ?故選B。 5.【答案】A 考查VB中循環語句嵌套的使用方法。 這是VB中循環語句嵌套的使用方法,在循環語句中套用另一個循環語句,稱為循環的嵌套。 【解答】 程序運行過程為:外循環i=1,k='““,內循環j=1,k=*,內循環結束,list1里列出“*”;進入第2次外循環i=2,k=““,內循環j=1,k=*,j=2,k=**,內循環結束,list1里第2行列出“**”;進入第3次外循環i=3,k=““,內循環j=1,k=*,j=2,k=**,j=3,k=***,內循環結束,list1第3行里列出“***”,外循環結束,程序結束。 故選A。 6.【答案】C 本題考查VB程序基本運算與表達,難度較易。 【解答】 A.Int(Rnd*5+1)=5,故A不符合題意; B.Len(Mid(“45678”,3,1))=1,故B不符合題意; C.16 mod 10=6,故C符合題意; D.Abs(-6.3) =6.3,故D不符合題意。 ?故選C。 7.【答案】B 【解析】略. 8.【答案】(1)2,3,2; (2)①4; ②num=x((i-1)*n+j); ③a(j)=i或i=a(j) 【解析】 【分析】 本題主要考查VB程序的基本運算與表達式,以及其數組特性,屬于一般題. 【解析】 (1)根據題中所給矩陣,即可推出相應數組元素為2,3,2, (2)據題中所給條件,結合數組的讀入與取出,代碼分別為①4;②num=x((i-1)*n+j);③a(j)=i或i=a(j)。 故答案為:(1)2,3,2;(2)①4;②num=x((i-1)*n+j);③a(j)=i或i=a(j)。 9.【答案】①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1 本題主要考查學生對于VB程序的閱讀能力,掌握數組的使用方法和排序算法。理解奇數和偶數的判斷。 【解答】 根據題意,按照程序的功能:有一組正整數,要求僅對其中的偶數進行降序排序,排序后偶數在前,奇數在后;閱讀程序,分析得出,將錯誤的代碼修改為:①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1。 故答案為:①a(k) Mod 2=1 And a(j) Mod 2=0;②i=i+1。 10.【答案】(1)abcd (1)①zh(Mid(s,i,1))? ? ②Text2.Text+b(a(i))? ? ③a(m)=Int(Rnd*n)+1 本題主要考查加密算法,旨在考查學生的分析應用能力,理解加密算法的產生規則是解題關鍵。 ???????【解答】 (1)依題意,abcz轉換成bcda,然后根據加密方式4,1,2,3加密為abcd。 (2)①由注釋“b()數組記錄原文”以及“完成字符轉換”可知,應該填與自定義函數zh有關代碼。由i=1 to n可知,應該填zh(Mid(s,i,1))。②Text2.Text+b(a(i))。由于文本框Text2輸出結果,肯定要把隨機加密方式的結合起來。③由注釋可知,填a(m)=Int(Rnd*n)+1。 11.【答案】(X mod 3=2)? and? (X mod 10=1) 本題主要考查了VB表達式,難度一般。 【解答】 根據題意,分析得出,判斷一個三位數正整數X滿足上述條件,其VB的關系表達式是(X mod 3=2)? and? (X mod 10=1)。 故答案為:?(X mod 3=2)? and? (X mod 10=1)。 12.【答案】(1)Caption; (2)①n=val(text2.text);②s=chr(r+55) 或 s=chr(r+asc(“A”)-10) 本題考查VB代碼的閱讀與填空,是對該軟件的一個綜合運用,難度較大。 【解答】 (1)設計程序界面時,修改窗體標題為“十進制數轉換為N進制數”,應該修改該窗體的Caption屬性; (2)分析該程序,其功能為:一個將十進制數轉換成N進制數,①處為在文本框Text2輸入進制n ,故代碼填入n=val(text2.text);②處應為s=chr(r+55)?或 s=chr(r+asc(“A”)-10)。 故答案為:(1)Caption;(2)①n=val(text2.text);②s=chr(r+55) 或 s=chr(r+asc(“A”)-10)。 13.【答案】(1)B; (2)2*n-i 本題考查VB代碼的閱讀與填空,是對該軟件的一個綜合運用,難度一般。 【解答】 (1)小王在輸入代碼時,誤將“List1.AddItem s”寫成了“List1.AddItem=s”(其他代碼均正確),則調試程序時出現的錯誤為必選參數; (2)通過觀察可以看出本程序出現了For語句,For語句語句應先判斷循環條件,再執行循環體,控制循環變量s,分析該段程序得出,空格處應填2*n-i。 故答案為:(1)B;(2)2*n-i。 14.【答案】?(1)③; (2)①處代碼為:i<=Len(s1)或i<=Len(Text1.Text); ②處代碼為:num=(j-i+11) mod 11; (3)“620”或620 本題考查的是VB語言的應用。 【解答】 (1)在設計程序界面時,應使用第圖b所示“控件工具箱”中的③添加“解密”按鈕Command1; (2)①處變量s1存放明文,即從文本框Text1中獲取的數字,然后通過循環對明文中的數字逐個加密,當i<=Len(Text1.Text)進入循環,即此處為i<=Len(Text1.Text); ②處是對編號進行除11取余計算,即num=(j-i+11) mod 11; (3)根據加密算法,若密文是“Bus”,則明文是620。 故答案為:?(1)③;(2)①處代碼為:i<=Len(s1)或i<=Len(Text1.Text);②處代碼為:num=(j-i+11) mod 11;(3)“620”或620。 15.【答案】(1)C; (2)①ch=mid(t,i,1); ②mid(s,n,len(s)-n+1); (3)Apple 本題考查的是VB編程的應用,難度不大。 【解答】 (1)實觀上述功能的 VB 程序如下,在程序中出現的對象沒有 Caption 屬性的是Text1 和 Text2,故選C; (2)分析前后語句①處應填:ch=mid(t,i,1); ②處應填mid(s,n,len(s)-n+1); (3)運行該程序,若文本框 Text1 中的內容是"April",文本框 Text2 中的內容是”-3p+3ri-6e”,單擊撤銷按鈕,For 循環語句執行完成后,字符串 s 的值是Apple。 故答案為:(1)C;(2)①ch=mid(t,i,1);②mid(s,n,len(s)-n+1);(3)Apple。 16.【答案】23 本題主要考查的是VB程序的相關知識,熟悉VB程序的代碼是解題的關鍵。 【解答】 分析程序,m=8,n=15, 因為8 mod 5 =Int(15/5)=3, 故執行m=m+n=8+15=23, 故答案為23. 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫