![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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) 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.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。 二、编程题(26分) 【题目】 编写程序,找出给定范围内所有满足以下条件的整数:该整数的平方数的各位数字之和为素数。 【编程要求】 1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见。 2.运行程序,在文本框"A:"中输入查找整数范围的起始值,在文本框"B:"中输入终止值后按"查找"按钮,则将符合要求的整数按参考界面的格式输出到列表框中;按"清除"按钮,将两个文本框与列表框清空,焦点置于文本框"A:"上。 3.程序中至少应定义一个通用过程,用于求一个整数各位数字之和或判断一个整数是否是素数(注意:1不是素数)。 【要求】 将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。 参考答案 一、改错题 第5行 st="" 改为挪动至 For循环内 ,如fg=False之后 第17行Private 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 |