2013秋江蘇省二級VB上機真題第1套 |
江蘇高等學校非計算機專業學生 計算機基礎知識和應用能力等級考試上機試卷(2013秋) 二級 Visual Basic語言(試卷代號VB01) (本試卷完成時間 70分鐘) 【考試須知】 1. 改錯題的界面不作要求,主要用來調試程序,若題目中有參考界面,則僅作參考; 2. 考試結束后,文件必須存放在指定位置,否則適當扣分;考試盤中若無指定文件,則不予評分; 3. 程序代碼書寫應呈鋸齒形。 一、改錯題(14分) 【題目】 本程序的功能是生成由n(n通過InputBox函數輸入)個3位升序數構成的隨機數組,所謂升序數是指從高位到低位數字值依次增加的整數 (本程序界面由1個TextBox和1個CommandButton組成,所有對象均采用缺省名) Option Explicit Option Base 1 Private Sub Command1_Click() Dim n as long, a() As Integer, k as Integer, p as Integer n=InputBox(“輸入數據個數;”,”升序數數組”,10) Redim a(n) Do p= Int(Rnd*900)+101 If judge(p) Then k=k+1 a(k)=p Text1.text=Text1.text & Str(a(k)) If K Mod 5=0 Then Text1.text = Text1.text & vbcrlf End If Loop Until k>n End Sub public Function judge(n as integer) As Boolean Dim i as integer, a(3) as integer For i=3 To 1 Step -1 a(i)= n Mod 10 n=n\10 Next i For i=1 to 2 If a(i)>=a(i+1) Then Exit For Next i judge=True End Function 1.新建工程,按參考界面形式創建窗體,再從T盤根目錄下的err.txt文件中將有錯誤的程序代碼復制到代碼編輯器窗口中或自行輸入上述代碼,改正程序中的錯誤。 2.改錯時,不得增加或刪除語句,但可適當調整語句的位置。 3.將窗體文件和工程文件分別命名為F1和P1,并保存到T盤的根目錄下。 二、編程題(26分) 【題目】 編寫程序,找出給定范圍內所有不是素數的虧數。所謂虧數是指除本身外其所有因子之和小于自身的正整數。例如,106的因子為1、2、53,和為56,故106是虧數。(注意:凡因子和為1的即為素數) 【編程要求】 1.程序參考界面如圖所示,編程時不得增加或減少界面對象或改變對象的種類,窗體及界面元素大小適中,且均可見。 2.運行程序,在”a:”文本框中輸入數據范圍的起始值,在”b:”文本框中輸入數據范圍的終止值后,單擊”查找”按鈕,若數據范圍內存在”虧數”,則將它們按附圖參考界面所示的格式輸出到列表框中,否則在列表框中輸出”指定范圍內無虧數”的信息,單擊”清除”按鈕,將文本框與列表框清空,焦點置于”a:”文本框上 3.程序中至少應定義一個通用過程,用于求一個整數的因子和或判斷其是否為”虧數” 【要求】將窗體文件和工程文件分別命名為F2和P2,并保存到T盤的根目錄下 一、改錯題 第15行 Loop Until k>n 改為 k=n 第17行 Private Function judge(n as integer) As Boolean 改為 Byval n 第24行 If a(i)>=a(i+1) Then Exit Function 改為Exit Function 二、編程題 Option Explicit Option Base 1 Private Sub CmdClear_Click() Text1.Text = "": Text2.Text = "" List1.Clear Text1.SetFocus End Sub Private Sub CmdFind_Click() Dim a As Integer, b As Integer, i As Integer Dim st As String, flg As Boolean, sum As Integer a = Val(Text1.Text) b = Val(Text2.Text) For i = a To b flg = False: st = "": sum = 0 Call judge(i, flg, st, sum) If flg Then List1.AddItem i & ":" & st & "=" & sum End If Next i If List1.ListCount = 9 Then List1.AddItem "指定范圍內無虧數" End Sub Private Sub judge(n As Integer, fg As Boolean, st As String, sum As Integer) Dim i As Integer For i = 1 To n - 1 If n Mod i = 0 Then sum = sum + i st = st & i & "+" End If Next i If sum < n And sum <> 1 Then fg = True st = Left(st, Len(st) - 1) End If End Sub |