江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2011春江苏省二级VB上机1真题

    江苏省二级Visual Basic上机试卷1

    (本试卷完成时间为70分钟)

    考试说明:

    1.改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考。

    2.考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分。

    3.程序代码书写应呈锯齿形。

  一、改错题(14)

  【题目】

  本程序的功能是:找出100999之间的十进制数为升序数,且其对应的八进制数也是升序数的整数。所谓升序数,是指该数的十位数字值大于个位数字值,百位数字值大于十位数字值。

 

 

  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.将窗体文件和工程文件分别命名为F1P1,并保存到T盘根目录下。

二、编程题(26)

    【题目】

    编写程序,对实验数据进行分组均化处理。处理的方法是:先将实验数据从小到大排序,然后按排序后的顺序每3个数作为一组,再用每组3个数的平均值作为这3个数的表现值。

  【编程要求】

  1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及

界面元素大小适中,且均可见。

  2.运行程序,单击"处理"按钮,出现如图所示的InputBox函数窗口,输入数据个数(或使用缺省值)后单击"确定"按钮,则生成10-40之间的随机整数数组并显示在实验数据文本框中,然后对实验数据进行排序并显示在排序结果文本框中,再进行分组均化并在文本框中输出数据均化结果;单击“清除"按钮,3个文本框清空,焦点置于"处理"按钮上;单击"结束"按钮,结束程序运行。

  3.程序中应定义一个名为sort的通用过程,用于对一维数组按从小到大排序。

 

 

  【要求】

  将窗体文件和工程文件分别命名为F2P2,并保存到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