2013 年 3 月全国计算机等级考试二级 VB 笔试试卷及答案一 选择题 ( 每题 2 分, 共 70 分 ) (1) 下列叙述中正确的是 ( ) A) 对长度为 n 的有序链表进行查找, 最坏情况下需要比较次数为 n B) 对长度为 n 的有序链表进行对分查找, 最坏情况下需要比较次数为 (n/2) C) 对长度为 n 的有序链表进行对分查找, 最坏情况下需要的比较次数 (log2n) D) 对长度为 n 的有序链表进行对分查找, 最坏情况下需要的比较次数 (nlog2n) (2) 算法的时间复杂是指 ( ) A) 算法的执行时间 B) 算法所处理的数据量 C) 算法程序中的语句或指令条数 D) 算法在执行过程中所需要的基本运算次数 (3) 软件按功能可以分为 : 应用软件 系统软件和支持软件 ( 或工具软件 ), 下面属于系统软件的是 ( ) A) 编辑软件 B) 操作系统 C) 教务管理系 统 D) 浏览器 (4) 软件 ( 程序 ) 调试的任务是 ( ) A) 诊断和改正程序中的错误 B) 进肯能多的 发现程序中的错误
C) 发现并改正程序中的所有错误 D) 确定程序中错误的性质 (5) 数据流程图 (DFD 图 ) 是 ( ) A) 软件概要设计的工具 B) 软件详细设计的工具 C) 机构化方法的需求分析工具 D) 面向对象方法的需求分析工具 (6) 软件生命周期可以分为定义阶段, 开发阶段和维护阶段 详细设计属于 ( ) A) 定义阶段 B) 开发阶段 C) 维护阶段 D) 上述三个阶段 (7) 数据库管理系统中负责数据模式定义的语言是 A) 数据定义语言 B) 数据管理语言 C) 数据操纵语言 D) 数据控制语言 (8) 在学生管理的关系数据库中, 存取一个学生信息的数据单位是 A) 文件 B) 数据库 C) 字段 D) 记录
(9) 数据库设计中, 用 E-R 图来描述信息结构但不涉及信息在计算机中的表示, 它属于数据库设计的 A) 需求分析阶段 B) 逻辑设计阶段 C) 概念设计阶段 D) 物理设计阶段 (10) 有两个关系 R 和 T 如下 : 则由关系 R 得到关系 T 的操作是 A) 选择 B) 投影 C) 交 D) 并 (11) 在 VB 集成环境中要结束一个正在运行的工程, 可单击工
具栏上的一个按钮, 这个按钮是 (12) 设 x 是整型变量, 与函数 Ⅱf(x>0,-x,x) 有相同结果的代数式是 A) x B)- x C)x D)-x (13) 设窗体文件中有下面的事件过程 : Private Sub Command1_Click() Dim s a%=100 Print a 其中变量 a 和 s 的数据类型分别是 A) 整型, 整型 B) 变体型, 变体型 C) 整型, 变体型 D) 变体型, 整型 (14) 下面哪个属性肯定不是框架控件的属性 A)Text B)Caption
C)Left D)Enabled (15) 下面不能在信息框中输出 VB 的是 A)MsgBox "VB" B)x=MsgBox("VB") C)MsgBox("VB") D)Call MsgBox "VB" (16) 窗体上有一个名称为 Option1 的单选按钮数组, 程序运行时, 当单击某个单选按钮时, 会调用下面的事件过程 Private Sub Option1_C1ick(Index As Integer) 下面关于此过程的参数 Index 的叙述中正确的是 A)Index 为 1 表示单选按钮被选中, 为 O 表示未选中 B)Index 的值可正可负 C)Index 的值用来区分哪个单选按钮被选中 D)Index 表示数组中单选按钮的数量 ( 17 ) 设窗体中有一个文本框 Text1, 若在程序中执行了 Text1.SetFocus, 则触发 A)Text1 的 SetFocus 事件 B)Text1 的 GotFocus 事件 C)Text1 的 LostFocus 事件
D) 窗体的 GotFocus 事件 (18)VB 中有 3 个键盘事件 :KeyPress KeyDown KeyUp, 若光标在 Text1 文本框中, 则每输入一个字母 A) 这 3 个事件都会触发 B) 只触发 KeyPress 事件 C) 只触发 KeyDown KeyUp 事件 D) 不触发其中任何一个事件 (19) 下面关于标准模块的叙述中错误的是 A) 标准模块中可以声明全局变量 B) 标准模块中可以包含一个 Sub Main 过程, 但此过程不能被设置为启动过程 C) 标准模块中可以包含一些 Public 过程 D) 一个工程中可以含有多个标准模块 (20) 设窗体的名称为 Form1, 标题为 Win, 则窗体的 MouseDown 事件过程的过程名是 A)Form1_MouseDown B)Win_MouseDown C)Form_MouseDown D)MouseDown_Form1 (21) 下面正确使用动态数组的是 A)Dim arr() As Integer
ReDim arr(3,5) B)Dim arr() As Integer ReDim arr(50)as String C)Dim arr() ReDim arr(50) As Integer D)Dim arr(50) As Integer ReDim arr(20) (22) 下面是求最大公约数的函数的首部 Function gcd(byval x As Integer, ByVal y As Integer ) As Integer 若要输出 8 12 16 这 3 个数的最大公约数, 下面正确的语句是 A)Print gcd(8,12),gcd(12,16),gcd(16,8) B)Print gcd(8,12,16) C)Print gcd(8),gcd(12),gcd(16) D)Print gcd(8,gcd(12,16)) (23) 有下面的程序段, 其功能是按图 1 所示的规律输出数据 Dim a(3,5) As Integer For i=1 To 3
For j=1 To 5 A(i,j)=i+j Print a(i,j); Print 若要按图 2 所示的规律继续输出数据, 则接在上述程序段后面的程序段应该是 A)For i=1 To 5 For j=1 To 3 Print a(j,i); Print B)For i=1 To 3 For j=1 To 5 Print a(j,i); Print C)For j=1 To 5 For i=1 To 3
Print a(j,i); Print D)For i=1 To 5 For j=1 To 3 Print a(i,j); Print (24) 窗体上有一个 Text1 文本框, 一个 Command1 命令按钮, 并有以下程序 Private Sub Commandl_Click() Dim n If Text1.Text<>"23456" Then n=n+1 Print " 口令输入错误 " & n & " 次 " End If 希望程序运行时得到左图所示的效果, 即 : 输入口令, 单击 确认口令 命令按钮, 若输入的口令不是 123456, 则在窗体上显示输入错误口令的次数 但上面的程序实际显示的是右图所示的效果,
程序需要修改 下面修改方案中正确的是 A) 在 Dim n 语句的下面添加一句 :n=o B) 把 Print " 口令输入错误 " & n & " 次 " 改为 Print " 口令输入错误 " +n+" 次 " C) 把 Print " 口令输入错误 " & n & " 次 " 改为 Print " 口令输入错误 "&Str(n)&" 次 " D) 把 Dim n 改为 Static n (25) 要求当鼠标在图片框 P1 中移动时, 立即在图片框中显示鼠标的位置坐标 下面能正确实现上述功能的事件过程是 A ) Private Sub P1_MouseMove ( Button AS Integer,Shift As Integer,X As Single, Y As Single) Print X,Y B ) Private Sub P1_MouseDown ( Button AS Integer,Shift As Integer,X As Single, Y As Single) Picture.Print X,Y C ) Private Sub P1_MouseMove ( Button AS Integer,Shift As Integer,X As Single, Y As Single)
P1.Print X,Y D ) Private Sub Form_MouseMove ( Button AS Integer,Shift As Integer,X As Single, Y As Single) P1.Print X,Y (26) 计算二的近似值的一个公式是 某人编写下面的程序用此公式计算并输出 π 的近似值 : Private Sub Comand1_Click() PI=1 Sign=1 n=20000 For k=3 To n Sign=-Sign/k PI=PI+Sign/k k Print PI*4 运行后发现结果为 3.22751, 显然, 程序需要修改 下面修改方案中正确的是 A) 把 For k=3 To n 改为 For k=1 To n
B) 把 n=20000 改为 n=20000000 C) 把 For k=3 To n 改为 For k=3 To n Step 2 D) 把 PI=1 改为 PI=0 (27) 下面程序计算并输出的是 Private Sub Comand1_Click() a=10 s=0 Do s=s+a*a*a a=a-1 Loop Until a<=0 Print s A)13+23+33+ +103 的值 B)10!+ +3!+2!+1! 的值 C)( 1+2+3+ +10)3 的值 D)10 个 103 的和 (28) 若在窗体模块的声明部分声明了如下自定义类型和数组 Private Type rec Code As Integer Caption As String End Type
Dim arr(5) As rec 则下面的输出语句中正确的是 A)Print arr.code(2),arr.caption(2) B)Print arr.code,arr.caption C)Print arr(2).code,arr(2).caption D)Print Code(2),Caption(2) (29) 设窗体上有一个通用对话框控件 CD1, 希望在执行下面程序时, 打开如图所示的文件对话框 Private Sub Comand1_Click() CD1.DialogTitle=" 打开文件 " CD1.InitDir="C:\" CD1.Filter=" 所有文件 *.* Word 文档 *.doc 文本文件 *.Txt" CD1.FileName="" CD1.Action=1 If CD1.FileName=""Then Print" 未打开文件 " Else Print" 要打开文件 "& CD1.FileName End If 但实际显示的对话框中列出了 C:\ 下的所有文件和文件夹, 文
件类型 一栏中显示的是 所有文件 下面的修改方案中正确的是 A) 把 CD1.Action=1 改为 CD1.Action=2 B) 把 CD1.Filter= 后面字符串中的 所有文件 改为 文本文件 C) 在语句 CD1.Action=1 的前面添加 :CD1.FilterIndex=3 D) 把 CD1.FileName="" 改为 CD1.FileName=" 文本文件 " (30) 下面程序运行时, 若输入 395, 则输出结果是 Private Sub Comand1_Click() Dim x% x=inputbox(" 请输入一个 3 位整数 ") Print x Mod 10,x\100,(x Mod 100)\10 A)3 9 5 B)5 3 9 C)5 9 3 D)3 5 9 (31) 窗体上有 List1 List2 两个列表框,List1 中有若干列表项 ( 见图 ), 并有下面的程序 : Private Sub Comand1_Click() For k=list1.listcount-1 To 0 Step -1 If List1.Selected(k) Then List2.AddItem List1.List(k)
List1.RemoveItem k End If k 程序运行时, 按照图示在 List1 中选中 2 个列表项, 然后单击 Commandl 命令按钮, 则产生的结果是 A) 在 List2 中插入了 外语 物理 两项 B) 在 List1 中删除了 外语 物理 两项 C) 同时产生 A) 和 B) 的结果 D) 把 List1 中最后 1 个列表项删除并插入到 List2 中 (32) 设工程中有 2 个窗体 : Form1 Form2,Form1 为启动窗体 Form2 中有菜单 其结构如表 要求在程序运行时, 在 Form1 的文本框 Text1 中输入口令并按回车键 ( 回车键的 ASCII 码为 13) 后, 隐藏 Form1, 显示 Form2 若口令为 Teacher, 所有菜单项都可见 ; 否则看不到 成绩录入 菜单项 为此, 某人在 Form1 窗体文件中编写如下程序 : Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii=13 Then If Text1.Text="Teacher" Then Form2.input.visible=True Else Form2.input.visible=False
End If End If Form1.Hide Form2.Show 程序运行时发现刚输入口令时就隐藏了 Form1, 显示了 Form2, 程序需要修改 下面修改方案中正确的是 A) 把 Form1 中 Text1 文本框及相关程序放到 Form2 窗体中 B) 把 Form1.Hide Form2.Show 两行移到 2 个 End If 之间 C ) 把 If KeyAscii=13 Then 改为 If KeyAscii="Teaeher" Then D) 把 2 个 Form2.input.Visible 中的 Form2 删去 (33) 某人编写了下面的程序, 希望能把 Text1 文本框中的内容写到 out.txt 文件中 Private Sub Comand1_Click() Open "out.txt" For Output As #2 Print "Text1" Close #2 调试时发现没有达到目的, 为实现上述目的, 应做的修改是 A) 把 Print "Text1" 改为 Print #2,Text1 B) 把 Print "Text1" 改为 Print Text1
C) 把 Print "Text1" 改为 Write "Text1" D) 把所有 #2 改为 #1 (34) 窗体上有一个名为 Command1 的命令按钮, 并有下面的程序 : Private Sub Comand1_Click() Dim arr(5) As Integer For k=1 To 5 arr(k)=k k prog arr() For k=1 To 5 Print arr(k) k Sub prog(a() As Integer) n=ubound(a) For i=n To 2 step -1 For j=1 To n-1 if a(j)<a(j+1) Then t=a(j):a(j)=a(j+1):a (j+1)=t End If
j i 程序运行时, 单击命令按钮后显示的是 A)12345 B)54321 C)01234 D)43210 (35) 下面程序运行时, 若输入 Visual Basic Programming, 则在窗体上输出的是 Private Sub Comand1_Click() Dim count(25) As Integer, ch As String ch=ucase(inputbox(" 请输入字母字符串 ")) For k=1 To Len(ch) n=asc(mid(ch,k,1)) -Asc("A") If n>=0 Then Count(n)=Count(n)+ 1 End If k m=count(0) For k=1 To 25 If m<count(k) Then
m=count(k) End If k Print m A)0 B)1 C)2 D)3 二 填空题 (1) 一个队列的初始状态为空 现将元素 A,B,C,D,E,F,5,4,3,2,1 依次入队, 然后再依次退队, 则元素退队的顺序为 1 (2) 设某循环队列的容量为 50, 如果头指针 front=45( 指向队头元素的前一位置 ), 尾指针 rear=10( 指向队尾元素 ), 则该循环队列中共有 2 个元素 (3) 设二叉树如下 :
对该二叉树进行后序遍历的结果为 3 (4) 软件是 4 数据和文档的集合 (5) 有一个学生选课的关系, 其中学生的关系模式为 : 学生 ( 学号, 姓名, 班级, 年龄 ), 课程的关系模式为 : 课程 ( 课号, 课程名, 学时 ), 其中两个关系模式的键分别是学号和课号, 则关系模式选课可定义为 : 选课 ( 学号, 5, 成绩 ) (6) 为了使复选框禁用 ( 即呈现灰色 ), 应把它的 value 属性设置为 6 (7) 在窗体上画一个标签 一个计时器和一个命令按钮, 其名称分别为 Labl1 Timer1 和 Command1, 如图 1 所示 程序运行后, 如果单击命令按钮, 则标签开始闪烁, 每秒钟 欢迎 二字显示 消失各一次, 如图 2 所示 以下是实现上述功能的程序, 请填空 Private Sub Form_Load() Label1.Caption=" 欢迎 " Timer1.Enabled=False Timer1.Interval= 7
Private Sub Timer1_Timer() Label1.Visible= 8 Private Sub command1_click() 9 (8) 有如下程序 : Private Sub Form_Click() n=10 i=0 Do i=i+n n=n-2 Loop While n>2 Print i 程序运行后, 单击窗体, 输出结果为 10 (9) 在窗体上画一个名称为 Command1 的命令按钮 然后编写如下程序 : Option Base 1 Private Sub Command1_Click()
Dim a(10) As Integer For i=1 To 10 a(i)=i Call swap ( 11 ) For i=1 To 10 Print a(i); Sub swap(b() As Integer) n=ubound(b) For i=1 To n / 2 t=b(i) b(i)=b(n) b(n)=t 12 上述程序的功能是, 通过调用过程 swap, 调换数组中数值的存放位置, 即 a(1) 与 a(10) 的值互换,a(2) 与 a(9) 的值互换, 请填空 (10) 在窗体上画一个文本框, 其名称为 Text1, 在属性窗口中
把该文本框的 MultiLine 属性设置为 True, 然后编写如下的事件过程 : Private Sub Form_Click() Open "d:\test\smtext1.txt" For Input As #1 Do While Not 13 Line Input #1, aspect$ Whole$=whole$+aspect$+Chr$(13)+Chr$(10) Loop Text1.Text=whole$ 14 Open "d:\test\smtext2.txt" For Output As #1 Print #1, 15 Close #1 运行程序, 单击窗体, 将把磁盘文件 smtext1.txt 的内容读到内存并在文本框中显示出来, 然后把该文本框中的内容存入磁盘文件 smtext2.txt 请填空
2010 年 3 月全国计算机等级考试二级 VB 笔试试卷答案 选择题 1-5 ADBAC 6-10 BADBA 11 (D) 12(B) 13(C) 14(A) 15(D) 16 (C) 17(B) 18(A) 19(B) 20(A) 21 (A) 22(D) 23(A) 24(D) 25(C) 26 (C) 27(A) 28(C) 29(C) 30(B) 31 (C) 32(B) 33(A) 34(B) 35(D) 填空题 (1)A,B,C,D,E,F,5,4,3,2,1 (2)15 (3)EDBGHFCA (4) 程序 (5) 课号 (6) 6 2 (7) [7] 500 (8) [8] Not label1.visible
(9) [9] Timer1.Enabled=Ture (10) [10] 28 (11) [11] a() 或 a (12) [12] n=n-1 (13) [13] EOF(1) (14) [14] Close#1 (15) [15] Text1.Text 或 text1