机密★启用前
2008 年 4 月全国计算机等级考试二级笔试试卷
Visual Basic 语言程序设计
26
注意事项
一、考生应严格遵守考场规则,得到监考人员指令后方可作答。
二、考生拿到试卷后应首先将自己的姓名、准考证号等内容涂写在答题卡的相应位置上。
三、选择题答案必须用铅笔填涂在答题卡的相应位置上,填空题的答案必须用蓝、黑色钢笔或圆珠笔写在答题卡的相应位置上,答案写在试卷上无效。
四、注意字迹清楚,保持卷面整洁。
五、考试结束将试卷和答题卡放在桌上,不得带走。待监考人员收毕清点后,方可离场。
* * * 版权所有,任何单位或个人不得保留、复制和出版,违者必究 * * *
教育部考试中心
二 00 八年二月制
二级 Visual Basic 语言程序设计试卷 第 1 页(共 10 页)
2008年4月全国计算机等级考试二级笔试试卷
公共基础知识和Visual Basic语言程序设计
(考试时间 90 分钟,满分 100 分)
一、选择题 (每小题 2 分,共 70 分 )
( 1)程序流程图中带有箭头的线段表示的是( ) 。
A)图元关系 B)数据流
C)控制流 D)调用关系
( 2)结构化程序设计的基本原则不包括( ) 。
A)多元性 )自顶向下
C)模块化 )逐步求精
( 3)软件设计中模块划分应遵循的准则是( ) 。
A)低内聚低耦合 B)高内聚低耦合
C)低内聚高耦合 D)高内聚高耦合
( 4)在软件开发中,需求分析阶段产生的主要文档是( ) 。
A)可行性分析报告 B)软件需求规格说明书
C)概要设计说明书 D)集成测试计划
( 5)算法的有穷性是指( ) 。
A)算法程序的运行时间是有限的
B)算法程序所处理的数据量是有限的
C)算法程序的长度是有限的
D)算法只能被有限的用户使用
( 6)对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是( ) 。
A)快速排序 B)冒泡排序
C)简单插入排序 D)堆排序
( 7)下列关于栈的叙述正确的是( ) 。
A)栈按“先进先出”组织数据
B)栈按“先进后出”组织数据
C)只能在栈底插入数据
D)不能删除数据
( 8)在数据库设计中,将 E-R 图转换成关系数据模型的过程属于( ) 。
A)需求分析阶段 B)概念设计阶段
C)逻辑设计阶段 D)物理设计阶段
( 9)有三个关系 R,S 和 T 如下,
R S T
B C D
a 0 k1
b 1 n1
由关系 R 和 S 通过运算得到关系 T,则所使用的运算为( ) 。
A)并 B)自然连接
C)笛卡尔积 D)交
B C D
a 0 k1
B C D
f 3 h2
a 0 k1
n 2 x1
二级 Visual Basic 语言程序设计试卷 第 2 页(共 10 页)
( 10)设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程
C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字 (键或码) 为 ( ) 。
A)课号,成绩 B)学号,成绩
C)学号,课号 D)学号,姓名,成绩
( 11)以下叙述中错误的是( ) 。
A)标准模块文件的扩展名是,bas
B)标准模块文件是纯代码文件
C)在标准模块中声明的全局变量可以在整个工程中使用
D)在标准模块中不能定义过程
( 12)在 Visual Basic 中,表达式 3 *2\5 Mod 3 的值是( ) 。
A) 1 B) 0
C) 3 D)出现错误提示
( 13)以下选项中,不合法的 Visual Basic 的变量名是( ) 。
A) a5b B) _xyz C) a_b D) andif
( 14)以下数组定义语句中,错误的是( ) 。
A) Static a(10) As Integer
B) Dim c(3,1 To 4)
C) Dim d(-10)
D) Dim b(0 To 5,1 To 3)As Integer
( 15)现有语句,y=IIf(x>0,x Mod 3,0)
设 x=10,则 y 的值是( ) 。
A) 0 B) 1
C) 3 D)语句有错
( 16)为了使文本框同时具有垂直和水平滚动条,应先把 multiLine 属性设置为 True,然后再把 ScrollBars 属性设置为( ) 。
A) 0 B) 1 C) 2 D) 3
( 17)文本框 Text1 的 KeyDown 事件过程如下,
Private Sub Text 1_KeyDown(KeyCode As Integer,Shift As Integer)

End Sub
其中参数 KeyCode 的值表示的是发生此事件时( ) 。
A)是否按下了 Alt 键或 Ctrl 键
B)按下的是哪个数字键
C)所按的键盘键的键码
D)按下的是哪个鼠标键
( 18)窗体上有一个名称为 HScroll 1 的滚动条,程序运行后,当单击滚动条两端的箭头时,
立即在窗体上显示滚动框的位置(即刻度值) 。下面能够实现上述操作的事件过程是
( ) 。
A) Private Sub HScroll 1_Change() B) Private Sub HScroll 1_Change()
Print HScroll1.Value Print HScroll1.SmallChange
End Sub End Sub
C) Private Sub HScroll1_Scroll() D) Private Sub HScroll1_Scroll()
Print HScroll1.Value Print HScroll1.SmallChange
End Sub End Sub
二级 Visual Basic 语言程序设计试卷 第 3 页(共 10 页)
( 19)若已把一个命令按钮的 Default 属性设置为 True,则下面可导致按钮的 Click 事件过程被调用的操作是( ) 。
A)用鼠标右键单击此按钮
B)按键盘上的 Esc 键
C)按键盘上的回车键
D)用鼠标右键双击此按钮
( 20)要使两个单选按钮属于同一个框架,正确的操作是( ) 。
A)先画一个框架,再在框架中画两个单选按钮
B)先画一个框架,再在框架外画两个单选按钮,然后把单选按钮拖到框架中
C)先画两个单选按钮,再用框架将单选按钮框起来
D)以上三种方法都正确
( 21)能够存放组合框的所有项目内容的属性是( ) 。
A) Caption B) Text
C) List D) Selected
( 22)设窗体上有一个标签 Label 1 和一个计时器 Timer1,Timer1 的 Interval 属性被设置为
1000,Enabled 属性被设置为 True。要求程序运行时每秒在标签中显示一次系统当前时间。以下可以实现上述要求的事件过程是( ) 。
A) Private Sub Timer 1_Timer() B) Private Sub Timer1_Timer()
Labell.Caption=True Labell.Caption=Time$
End Sub End Sub
C) Private Sub Timer 1_Timer() D) Private Sub Timer 1_Timer()
Labell.Interval=1 For k = 1 To Timer1.Interval
End Sub Labell.Caption=Timer
Next K
End Sub
( 23)设有如图所示窗体和以下程序,
Private Sub Command 1_Click()
Text1.Text ="Visual Basic"
End Sub
Private Sub Text 1_LostFocus()
If Text1.Text<>"BASIC"Then
Text1.Text = ""
Text1.SetFocus
End If
End Sub
程序运行时,在 Text1 文本框中输入,Basic” (如图所示),然后单击 Command1 按钮,
则产生的结果是( ) 。
A)文本框中无内容,焦点在文本框中
B)文本框中为,Basic”,焦点在文本框中
C)文本框中为,Basic”,焦点在按钮上
D)文本框中为,Visual Basic”,焦点在按钮上
( 24)窗体上有一个名称为 Command1 的命令按钮,其事件过程如下,
Private Sub Command1,Click()
x = "VisualBasicProgramming"
二级 Visual Basic 语言程序设计试卷 第 4 页(共 10 页)
a = Right(x,11)
b = Mid(x,7,5)
c = MsgBox(a,,b)
End Sub
运行程序后单击命令按钮,以下叙述中错误的是( ) 。
A)信息框的标题是 Basic
B)信息框中的提示信息是 Programming
C) c 的值是函数的返回值
D) MsgBox 的使用格式有错
( 25)设工程文件包含两个窗体文件 Form1.frm,Form2.frm 及一个标准模块文件
Module1.bas。两个窗体上分别只有一个名称为 Command1 的命令按钮。
Form1 的代码如下,
Public x As Integer
Private Sub Form_Load()
x = 1
y = 5
End Sub
Private Sub Command1_Click()
Form2.Show
End Sub
Form2 的代码如下,
Private Sub Command1_Click()
Print Form1.x,y
End Sub
Module1 的代码如下,
Public y As Integer
运行以上程序,单击 Form1 的命令按钮 Command1,则显示 Form2;再单击 Form2 上的命令按钮 Command1,则窗体上显示的是( ) 。
A) 1 5 B) 0 5
C) 0 0 D)程序有错
( 26)窗体上有一个名称为 Text 1 的文本框,一个名称为 Command1 的命令按钮。窗体文件的程序如下,
Private Type x
a As Integer
b As Integer
End Type
Private Sub Command1_Click()
Dim y As x
y.a = InputBox("")
If y.a \ 2 = y.a / 2 Then
y.b = y.a * y.a
Else
y.b = Fix(y.a / 2)
二级 Visual Basic 语言程序设计试卷 第 5 页(共 10 页)
End If
Text1.Text = y.b
End Sub
对以上程序,下列叙述中错误的是( ) 。
A) x 是用户定义的类型
B) InputBox 函数弹出的对话框中没有提示信息
C)若输入的是偶数,y.b 的值为该偶数的平方
D) Fix(y.a / 2)把 y.a / 2 的小数部分四舍五入,转换为整数返回
( 27)窗体上有一个名称为 CD1 的通用对话框控件和由四个命令按钮组成的控件数
Command1,其下标从左到右分别为 0,1,2,3,窗体外观如图所示。
命令按钮的事件过程如下,
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
CD1.Action = 1
Case 1
CD1.ShowSave
Case 2
CD1.Action = 5
Case 3
End
End Select
End Sub
对上述程序,下列叙述中错误的是( ) 。
A)单击“打开”按钮,显示打开文件的对话框
B)单击“保存”按钮,显示保存文件的对话框
C)单击“打印”按钮,能够设置打印选项,并执行打印操作
D)单击“退出”按钮,结束程序的运行
( 28)窗体上有两个水平滚动条 HV,HT,还有一个文本框 Text1 和一个标题为“计算”的命令按钮 Command1,并编写了以下程序,
Private Sub Command1_Click()
二级 Visual Basic 语言程序设计试卷 第 6 页(共 10 页)
Call cale(HV.Value,HT.Value)
End Sub
Public Sub cale(x As Integer,y As Integer)
Text1.Text = x * y
End Sub
运行程序,单击“计算”按钮,可根据速度与时间计算出距离,并显示计算结果。对以上程序,下列叙述中正确的是( ) 。
A)过程调用语句不对,应为 cale(HV.HT)
B)过程定义语句的形式参数不对,应为 Sub cale(x As Control,y As Control)
C)计算结果在文本框中显示出来
D)程序不能正确运行
( 29)现有如下程序,
Private Sub Command1_Click()
s = 0
For i = 1 To 5
s = s + f(5 + i)
Next
Print s
End Sub
Public Function f(x As Integer)
If x >= 10 Then
t = x + 1
Else
t = x + 2
End If
f = t
End Function
运行程序,则窗体上显示的是( ) 。
A) 38 B) 49 C) 61 D) 70
( 30)窗体上有一个用菜单编辑器设计的菜单。运行程序,并在窗体上单击鼠标右键,则弹出一个快捷菜单。如图所示。
以下叙述中错误的是( ) 。
A)在设计“粘贴”菜单项时,在菜单编辑器窗口中设置了“有效”属性(有“√” )
B)菜单中的横线是在该菜单项的标题输入框中输入了一个“—” (减号)字符
C)在设计“选中”菜单项时,在菜单编辑器窗口中设置了“复选”属性(有“√” )
D) 在设计该弹出菜单的主菜单项时,在菜单编辑器窗口中去掉了,可见” 前面的,√”
二级 Visual Basic 语言程序设计试卷 第 7 页(共 10 页)
( 31)窗体上有一个名称为 Picture1 的图片框控件,一个名称为 Label1 的标签控件,如图所示。
现有如下程序,
Public Sub display(x As Control)
If TypeOf x Is Label Then
x.Caption = "计算机等级考试 "
Else
x.Picture = LoadPicture("pic.jpg")
End If
End Sub
Private Sub Label1_Click()
Call display(Label1)
End Sub
Private Sub Picture1_Click()
Call display(Picture1)
End Sub
对以上程序,下列叙述中错误的是( ) 。
A)程序运行时会出错
B)单击图片框,在图片框中显示一幅图片
C)过程中的 x 是控件变量
D)单击标签,在标签中显示一串文字
( 32)窗体上有两个名称分别为 Text1,Text2 的文本框。 Text1 的 KeyUp 事件过程如下,
Private Sub Text1_KeyUp(KeyCode As Integer,Shift As Integer)
Dim c As String
c = UCase(Chr(KeyCode))
Text2.Text = Chr(Asc(c) + 2)
End Sub
当向文本框 Text1 中输入小写字母 a 时,文本框 Text2 中显示的是( ) 。
A) A B) a C) C D) c
( 33)设窗体上有一个文本框 Text1 和一个命令按钮 Command1,并有以下事件过程,
Private Sub Command1_Click()
Dim s As String,ch As String
s = ""
For k = 1 To Len(Text1)
ch = Mid(Text1,k,1)
二级 Visual Basic 语言程序设计试卷 第 8 页(共 10 页)
s = ch + s
Next k
Text1.Text = s
End Sub
程序执行时,在文本框中输入,Basic”,然后单击命令按钮,则 Text1 中显示的是 ( ) 。
A) Basic B) cisaB C) BASIC D) CISAB
( 34)某人编写了如下程序,用来求 10 个整数(整数从键盘输入)中的最大值,
Private Sub Command1_Click()
Dim a(10) As Integer,max As Integer
For k = 1 To 10
a(k) = InputBox("输入一个整数 ")
Next k
max =0
For k = 1 To 10
If a(k) > max Then
max = a(k)
End If
Next k
Print max
End Sub
运行程序时发现,当输入 10 个正数时,可以得到正确结果,但输入 10 个负数时结果是错误的。程序需要修改。下面的修改中可以得到正确运行结果的是( ) 。
A)把 If a(k)>max Then 改为 If a(k)<max Then
B)把 max=a(k)改为 a(k)=max
C)把第 2 个循环语句 For k=1 To 10 改为 For k = 2 To 10
D)把 max=0 改为 max=a(10)
( 35)已知在 4 行 3 列的全局数组 score(4,3)中存放了 4 个学生 3 门课程的考试成绩(均为整数),现需要计算每个学生的总分,某人编写程序如下,
Option Base 1
Private Sub Command1_Click()
Dim sum As Integer
sum = 0
For i = 1 To 4
For j = 1 To 3
sum = sum + score(i,j)
Next j
Print "第 " & i & "个学生的总分是,"; sum
Next i
End Sub
运行此程序时发现,除第 1 个人的总分计算正确外,其他人的总分都是错误的,程序需要修改。以下修改方案中正确的是( ) 。
A)把外层循环语句 For i = 1 To 4 改为 For i = 1 To 3
内层循环语句 For j = 1 To 3 改为 For j = 1 To 4
B)把 sum = 0 移到 For i = 1 To 4 和 For j =1 To 3 之间
二级 Visual Basic 语言程序设计试卷 第 9 页(共 10 页)
C)把 sum = sum +score(i,j)改为 sum = sum + score(j,i)
D)把 sum = sum +score(i,j)改为 sum = score(i,j)
二、填空题 (每空 2 分,共 30 分 )
( 1)测试用例包括输入值集和 【 1】 值集。
( 2)深度为 5 的满二叉树有 【 2】 个叶子结点。
( 3) 设某循环队列的容量为 50,头指针 front=5(指向队头元素的前一位置),尾指针 rear=29
(指向队尾元素),则该循环队列中共有 【 3】 个元素。
( 4)在关系数据库中,用来表示实体之间联系的是 【 4】 。
( 5) 在数据库管理系统提供的数据定义语言,数据操纵语言和数据控制语言中,【 5】 负责数据的模式定义与数据的物理存取构建。
( 6)设有以下的循环,
x = 1
Do
x = x + 2
Print x
Loop Until 【 6】
要求程序运行时执行 3 次循环体,请填空。
( 7)窗体上命令按钮 Command1 的事件过程如下,
Private Sub Command1_Click()
Dim total As Integer
total = s(1) + s(2)
Print total
End Sub
Private Function s(m As Integer) As Integer
Static x As Integer
For i = 1 To m
x = x + 1
Next i
s = x
End Function
运行程序,第 3 次单击命令按钮 Command1 时,输出结果为 【 7】 。
( 8)在窗体上画一个名称为 Command1 的命令按钮,然后编写如下程序,
Option Base 1
Private Sub Command1_Click()
Dim a(10) As Integer
For i = 1 To 10
a(i) = i
Next
Call swap( 【 8】 )
For i = 1 To 10
Print a(i);
Next
End Sub
二级 Visual Basic 语言程序设计试卷 第 10 页(共 10 页)
Sub swap(b() As Integer)
n = 【 9】
For i = 1 To n / 2
t = b(i)
b(i) = b(n)
b(n) = t
【 10】
Next
End Sub
上述程序的功能是,通过调用过程 swap,调换数组中数值的存放位置,即 a(1)与 a(10)
的值互换,a(2)与 a(9)的值互换,……,请填空。
( 9)在窗体上画一个通用对话框,其名称为 CommonDialog1,然后画一个命令按钮,并编写如下事件过程,
Private Sub Command1_Click()
CommonDialog1.Filter = "All Files(*.*)|*.*|Text Files" _
& "(*.txt)|*.txt|Batch Files(*.bat)|*.bat"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
MsgBox CommonDialog1.FileName
End Sub
程序运行后,单击命令按钮,将显示一个“打开”对话框,此时在“文件类型”框中显示的是 【 11】 ;如果在对话框中选择 d 盘 temp 目录下的 tel.txt 文件,然后单击
“确定”按钮,则在 MsgBox 信息框中显示的提示信息是 【 12】 。
( 10)以下程序的功能是:把顺序文件 smtext1.txt 的内容全部读入内存,并在文本框 Text1
中显示出来。请填空。
Private Sub Command1_Click()
Dim inData As String
Text1.Text = ""
Open "smtext1.txt" 【 13】 As 【 14】
Do While 【 15】
Input #2,inData
Text1.Text = Text1.Text & inData
Loop
Close #2
End Sub