2013秋江苏省二级VB上机真题第1套 |
江苏高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2013秋) 二级 Visual Basic语言(试卷代号VB01) (本试卷完成时间 70分钟) 【考试须知】 1. 改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考; 2. 考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分; 3. 程序代码书写应呈锯齿形。 一、改错题(14分) 【题目】 本程序的功能是生成由n(n通过InputBox函数输入)个3位升序数构成的随机数组,所谓升序数是指从高位到低位数字值依次增加的整数 (本程序界面由1个TextBox和1个CommandButton组成,所有对象均采用缺省名) Option Explicit Option Base 1 Private Sub Command1_Click() Dim n as long, a() As Integer, k as Integer, p as Integer n=InputBox(“输入数据个数;”,”升序数数组”,10) Redim a(n) Do p= Int(Rnd*900)+101 If judge(p) Then k=k+1 a(k)=p Text1.text=Text1.text & Str(a(k)) If K Mod 5=0 Then Text1.text = Text1.text & vbcrlf End If Loop Until k>n End Sub public Function judge(n as integer) As Boolean Dim i as integer, a(3) as integer For i=3 To 1 Step -1 a(i)= n Mod 10 n=n\10 Next i For i=1 to 2 If a(i)>=a(i+1) Then Exit For Next i judge=True End Function 1.新建工程,按参考界面形式创建窗体,再从T盘根目录下的err.txt文件中将有错误的程序代码复制到代码编辑器窗口中或自行输入上述代码,改正程序中的错误。 2.改错时,不得增加或删除语句,但可适当调整语句的位置。 3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。 二、编程题(26分) 【题目】 编写程序,找出给定范围内所有不是素数的亏数。所谓亏数是指除本身外其所有因子之和小于自身的正整数。例如,106的因子为1、2、53,和为56,故106是亏数。(注意:凡因子和为1的即为素数) 【编程要求】 1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见。 2.运行程序,在”a:”文本框中输入数据范围的起始值,在”b:”文本框中输入数据范围的终止值后,单击”查找”按钮,若数据范围内存在”亏数”,则将它们按附图参考界面所示的格式输出到列表框中,否则在列表框中输出”指定范围内无亏数”的信息,单击”清除”按钮,将文本框与列表框清空,焦点置于”a:”文本框上 3.程序中至少应定义一个通用过程,用于求一个整数的因子和或判断其是否为”亏数” 【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下 一、改错题 第15行 Loop Until k>n 改为 k=n 第17行 Private Function judge(n as integer) As Boolean 改为 Byval n 第24行 If a(i)>=a(i+1) Then Exit Function 改为Exit Function 二、编程题 Option Explicit Option Base 1 Private Sub CmdClear_Click() Text1.Text = "": Text2.Text = "" List1.Clear Text1.SetFocus End Sub Private Sub CmdFind_Click() Dim a As Integer, b As Integer, i As Integer Dim st As String, flg As Boolean, sum As Integer a = Val(Text1.Text) b = Val(Text2.Text) For i = a To b flg = False: st = "": sum = 0 Call judge(i, flg, st, sum) If flg Then List1.AddItem i & ":" & st & "=" & sum End If Next i If List1.ListCount = 9 Then List1.AddItem "指定范围内无亏数" End Sub Private Sub judge(n As Integer, fg As Boolean, st As String, sum As Integer) Dim i As Integer For i = 1 To n - 1 If n Mod i = 0 Then sum = sum + i st = st & i & "+" End If Next i If sum < n And sum <> 1 Then fg = True st = Left(st, Len(st) - 1) End If End Sub |