2011春江蘇省二級VB上機1真題 |
||
江蘇省二級Visual Basic上機試卷1 (本試卷完成時間為70分鐘) 考試說明: 1.改錯題的界面不作要求,主要用來調試程序,若題目中有參考界面,則僅作參考。 2.考試結束后,文件必須存放在指定位置,否則適當扣分;考試盤中若無指定文件,則不予評分。 3.程序代碼書寫應呈鋸齒形。 一、改錯題(14分) 【題目】 本程序的功能是:找出100~999之間的十進制數為升序數,且其對應的八進制數也是升序數的整數。所謂升序數,是指該數的十位數字值大于個位數字值,百位數字值大于十位數字值。 Option Explicit Private Sub CmdFind_Click() Dim n As Integer,s8 As String For n=100 To 999 s8=d2Q(n)
If sx(n) And sx(Val(s8)) Then List1.AddItem n & "D==>" & s8 & "Q" End If Next n End Sub Private Function d2Q(n As Integer) As String Dim p As Integer Do p=n Mod 8 d2Q=d2Q & CStr(P) n=n\8 Loop Until n=0 End Function Private Function sx(ByVal n As Integer)As Boolean Dim num() As Integer,k As Integer,t As Integer Dim i As Integer t=Len(CStr(n)) ReDim num(t) For k=1 To t num(k)=Val(Mid(CStr(n),k,1)) next k For i=1 To UBound(num)-1 If num(i)>=num(i+1) Then Exit For Next i sx=True End Function 【要求】 1.新建工程,輸入上述代碼,改正程序中的錯誤。 2.改錯時,不得增加或刪除語句,但可適當調整語句的位置。 3.將窗體文件和工程文件分別命名為F1和P1,并保存到T盤根目錄下。 二、編程題(26分) 【題目】 編寫程序,對實驗數據進行分組均化處理。處理的方法是:先將實驗數據從小到大排序,然后按排序后的順序每3個數作為一組,再用每組3個數的平均值作為這3個數的表現值。 【編程要求】 1.程序參考界面如圖所示,編程時不得增加或減少界面對象或改變對象的種類,窗體及 界面元素大小適中,且均可見。 2.運行程序,單擊"處理"按鈕,出現如圖所示的InputBox函數窗口,輸入數據個數(或使用缺省值)后單擊"確定"按鈕,則生成10-40之間的隨機整數數組并顯示在實驗數據文本框中,然后對實驗數據進行排序并顯示在排序結果文本框中,再進行分組均化并在文本框中輸出數據均化結果;單擊“清除"按鈕,將3個文本框清空,焦點置于"處理"按鈕上;單擊"結束"按鈕,結束程序運行。 3.程序中應定義一個名為sort的通用過程,用于對一維數組按從小到大排序。
【要求】 將窗體文件和工程文件分別命名為F2和P2,并保存到T盤根目錄下。 參考答案 一、改錯題 Private Function d2Q(n As Integer) As String 改為ByVal n As Integer d2Q=a2Q & cstr(p) 改為cstr(p) & d2Q If num(i)>=num(i+1) Then Exit For 改為Exit Function 二、編程題 Option Explicit Option Base 1 Private Sub CmdRun_Click() Dim a() As Integer,n As Integer,i As Integer Dim sum As Integer,av As Integer,k As Integer n=InputBox("輸入數據個數:", ,12) ReDim a(n) For i=1 To n a(i)=Int(Rnd*41)+10 Text1=Text1 & Str(a(i)) Next i Call sort(a) For i=1 To UBound(a) Step 3 sum=0 For k=i To i+2 sum=sum+a(k) Next k av=sum/3 For k=1 To 3 Text3=Text3 & Str(av) Next k Next i End Sub Private Sub sort(a()As Integer) Dim i As Integer,j As Integer,t As Integer For i=1 To UBound(a)-1 Forj=1 To UBound(a)-i If a(j)>a(j+1)Then t=a(j) a(j)=a(j+1) a(j+1)=t End If Next j Next i For i=1 To UBound(a) Text2=Text2 & Str(a(i)) Next i End SUb Private Sub CmdClear_click() Text1="" Text2="" Text3="" CmdRun.SetFocus End Sub Private Sub CmdExit_click() End End Sub
|
||