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
|
||