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

   2012年春江苏省高校计算机等级考试

      二级Visual Basic上机试卷1

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

  考试说明:

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

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

予评分。

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

  一、改错题(14)

  【题目】

  本程序的功能是在六位正整数中查找超级自恋数。如果将一个六位正整数从高位到低

,每两位分为一组,共分为三组,三组数据的立方的和正好等于其本身,则称该六位正整数为

超级自恋数。

 

1   Option Explicit

2   Private Sub CmdFind_Click()

3      Dim k As Long,num()As Integer,fg As Boolean

4      Dim i As Integer,st As String

5      st=""

6      For k=100000 To 999999

7        fg=False

j        Call judge(k,num,fg)

9        If fg Then

10          For i=UBound(num) To 1 Step -1

11             st=st & num(i) & "^3+"

12          Next i   

13          List1.Additem Left(st,Len(st)-1) & "=" & k

14       End If

15     Next k

16  End Sub

17  Private Sub judge(n As Long,a()As Integer,fg As Boolean)

18     Dim k As Integer,nt As Long,sum As Long

19     nt=n

20     Do

21       k=k+1

22       ReDim a(k)

23       a(k)=n Mod 100

24       n=n\100

25     Loop Until n=0

26     For k=1 To UBound(a)

27        sum=sum+a(k)^3

28     Next k

29     If sum=nt Then fg=True

30  End Sub

 

【要求】

 1.新建工程,按参考界面形式创建窗体,再从T盘根目录下的err.txt文件中将有错误的程序代码复制到代码编辑器窗口中或自行输入上述代码,改正程序中的错误。

 2.改错时,不得增加或删除语句,但可适当调整语句的位置。

 3.将窗体文件和工程文件分别命名为F1P1,并保存到T盘的根目录下。

  二、编程题(26)

  【题目】

  编写程序,找出给定范围内所有满足以下条件的整数:该整数的平方数的各位数字之和为素数。

   【编程要求】

    1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见。

    2.运行程序,在文本框"A:"中输入查找整数范围的起始值,在文本框"B:"中输入终止值后按"查找"按钮,则将符合要求的整数按参考界面的格式输出到列表框中;"清除"按钮,将两个文本框与列表框清空,焦点置于文本框"A:"上。

  3.程序中至少应定义一个通用过程,用于求一个整数各位数字之和或判断一个整数是否是素数(注意:1不是素数)

    【要求】

    将窗体文件和工程文件分别命名为F2P2,并保存到T盘的根目录下。

    参考答案

  一、改错题

  5  st=""    改为挪动至 For循环内 ,如fg=False之后

  17Private Sub judge(n As Long,a()As Integer,fg As Boolean)  改为ByVal n

  22  ReDim a(k)    改为Redim Preserve a(k)

二、编程题

    Option Explicit

    Private Sub CmdFind_Click()

      Dim a As Integer,b As Integer,ss As Long

      Dim n As Integer,st As String,k As Integer

      a=Text1: b=Text2

      For n=a To b

        ss=n*n

        st=""

        k=nsum(ss,st)

        If prime(k) Then  

         List1.AddItem n & "^2=" & ss & ":" & st & "=" & k   

        End If

      Next n

    End Sub  

    Private Function nsum(n As Long,st As String)  As Integer

      Dim p As String,q As String,i As Integer

      p=CStr(n)

      For i=1 To Len(P)

        q=Mid(p,i,1)

        nsum=nsum+Val(q)

        st=st & q & "+"

      Next i

      st=Left(st,Len(st)-1)

    End Function

    Private Function prime(n As Integer)As Boolean

      Dim i As Integer

      If n=1 Then Exit Function

      For i=2 To Sqr(n)

        If n Mod i=0 Then Exit Function

      Next i

      prime=True

    End Function

    Private Sub CmdClear_Click()

      Text1="" :  Text2=""

      List1.Clear

      Text1.SetFocus

    End Sub