2009 年 3 月全国计算机等级考试二级笔试试卷
Visual Basic 语言程序设计
(考试时间 90 分钟,满分 100 分)
一、选择题(每小题 2 分,共 70 分)
下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置
上,答在试卷上不得分。
(1)下列叙述中正确的是( )。
A)栈是“先进先出”的线性表
B)队列是“先进后出”的线性表
C)循环队列是非线性结构
D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
(2)支持子程序调用的数据结构是( )。
A)栈
C)队列
B)树
D)二叉树
(3)某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是(
A)10 B)8
C)6 D)4
(4)下列排序方法中,最坏情况下比较次数最少的是( )。
A)冒泡排序 B)简单选择排序
C)直接插入排序 D)堆排序
)。
(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。
A)编译程序
C)教务管理系统
(6)下面叙述中错误的是( )。
A)软件测试的目的是发现错误并改正错误
B)操作系统
D)汇编程序
B)对被调试的程序进行“错误定位”是程序调试的必要步骤
C)程序调试通常也称为 Debug
D)软件测试应严格执行测试计划,排除测试的随意性
(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。
A)提高耦合性降低内聚性有利于提高模块的独立性
B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D)内聚性是指模块间互相连接的紧密程度
(8)数据库应用系统中的核心问题是( )。
A)数据库设计
C)数据库维护
(9)有两个关系 R,S 如下:
B)数据库系统设计
D)数据库管理员培训
A
R S
B C A B
a
b
c
3
0
2
2
1
1
a
b
c
3
0
2
由关系 R 通过运算得到关系 S,则所使用的运算为( )。
A)选择
C)插入
B)投影
D)连接
(10)将 E-R 图转换为关系模式时,实体和联系都可以表示为(
第1页
)。
A)属性
C)关系
(11)执行语句 Dim X, Y As Integer 后,(
A)X 和 Y 均被定义为整型变量
B)X 和 Y 均被定义为变体类型变量
)。
B)键
D)域
C)X 被定义为整型变量,Y 被定义为变体类型变量
D)X 被定义为变体类型变量,Y 被定义为整型变量
(12)以下关系表达式中,其值为 True 的是(
)。
A)"XYZ">"XYz" B)"VisualBasic" <> "visualbasic"
C)"the" = "there"
(13)执行以下程序段
a$ = "Visual Basic Programming"
b$ = "C++"
c$ = UCase(Left$(a$,7)) & b$ & Right$(a$,12)
后,变量 c$的值为( )。
A)Visual BASIC Programming
C)Visual C++ Programming
(14)下列叙述中正确的是( )。
A)MsgBox 语句的返回值是一个整数
D)"Integer" < "Int"
B)VISUAL C++ Programming
D)VISUAL BASIC Programming
B)执行 MsgBox 语句并出现信息框后,不用关闭信息框即可执行其他操作
C)MsgBox 语句的第一个参数不能省略
D)如果省略 MsgBox 语句的第三个参数(Title),则信息框的标题为空
(15)在窗体上画一个文本框(名称为 Text1)和一个标签(名称为 Label1),程序运行后,在文本框中每
输入一个字符,都会立即在标签中显示文本框中字符的个数。以下可以实现上述操作的事件过程是
(
)。
A)Private Sub Text1_Change()
Label1.Caption = Str(Len(Text1.Text))
End Sub
B)Private Sub Textl_Click()
Label1.Caption = str(Len(Text1.Text))
End Sub
C)Private Sub Textl_Change()
Label1.Caption = Text1.Text
End Sub
D)Private Sub Label1_Change()
Label1.Caption = Str(Len(Text1.Text))
End Sub
(16)在窗体上画两个单选按钮(名称分别为 Optionl、Option2,标题分别为“宋体”和“黑体”)、1 个复
选框(名称为 Checkl,标题为“粗体”)和 1 个文本框(名称为 Textl,Text 属性为“改变文字字体”),
窗体外观如图所示。程序运行后,要求“宋体”单选按钮和“粗体”复选框被选中,则以下能够实
现上述操作的语句序列是(
)。
第2页
A)Optionl.Value = False
Checkl.Value = True
B)Optionl.Value = True
Checkl.Value = 0
C)Option2.Value = False
Checkl.Value = 2
D)Optionl.Value = True
Checkl.Value = 1
(17)在窗体上画一个名称为 Command1 的命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
c=1234
c1=Trim(Str(c))
For i=1 To 4
Print __________
Next
End Sub
程序运行后,单击命令按钮,要求在窗体上显示如下内容:
1
12
123
1234
则在横线处应填入的内容为( )。
A)Right(c1,i)
C)Mid(c1,i,1)
(18)假定有以下程序段
For i=1 To 3
For j=5 To 1 Step -1
Print i*j
Next j
Next i
则语句 Print i * j 的执行次数是( )。
B)Left(c1,i)
D)Mid(c1,i,i)
A)15 B)16
C)17 D)18
(19)在窗体上画两个文本框(名称分别为 Textl 和 Text2)和一个命令按钮(名称为 Command1),然后
编写如下事件过程:
Private Sub Command1_Click()
x=0
Do While x<50
x=(x+2) * (x+3)
n=n+1
第3页
Loop
Textl.Text=Str(n)
Text2.Text=Str(x)
End Sub
程序运行后,单击命令按钮,在两个文本框中显示的值分别为( )。
A)1 和 0
B)2 和 72
C)3 和 50 D)4 和 168
(20)阅读程序:
Private Sub Form_Click()
a=0
For j=1 To 15
a=a+j Mod 3
Next j
Print a
End Sub
程序运行后,单击窗体,输出结果是( )。
A)105 B)1
C)120
(21)以下说法中正确的是( )。
D)15
A)当焦点在某个控件上时,按下一个字母键,就会执行该控件的 KeyPress 事件过程
B)因为窗体不接受焦点,所以窗体不存在自己的 KeyPress 事件过程
C)若按下的键相同,KeyPress 事件过程中的 KeyAscii 参数与 KeyDown 事件过程中的 KeyCode 参
数的值也相同
D)在 KeyPress 事件过程中,KeyAscii 参数可以省略
(22)语句 Dim a(-3 To 4,3 To 6)As Integer 定义的数组的元素个数是( )。
A)18 B)28
C)21 D)32
(23)在窗体上画一个命令按钮,其名称为 Command1,然后编写如下代码:
Option Base 1
Private Sub Command1_Click()
Dim a
a=Array(1,2,3,4)
j=1
For i=4 To 1 Step -1
s=s+a(i)*j
j=j*10
Next i
Print s
End Sub
程序运行后,单击命令按钮,其输出结果是( )。
A)4321
B)1234
C)34 D)12
(24)假定通过复制、粘贴操作建立了一个命令按钮数组 Command1,以下说法中错误的是(
A)数组中每个命令按钮的名称(Name 属性)均为 Command1
B)若未做修改,数组中每个命令按钮的大小都一样
C)数组中各个命令按钮使用同一个 Click 事件过程
第4页
)。
D)数组中每个命令按钮的 Index 属性值都相同
(25)在窗体上画一个命令按钮,名称为 Command1,然后编写如下代码:
Option Base 0
Private Sub Command1_Click()
Dim A1 (4) As Integer, A2 (4) As Integer
For k=0 To 2
A1 (k+1) = InputBox("请输入一个整数")
A2 (3-k) = A1(k+1)
Next k
Print A2(k)
End Sub
程序运行后,单击命令按钮,在输入对话框中依次输入 2、4、6,则输出结果为( )。
A)0
C)2
B)1
D)3
(26)以下关于函数过程的叙述中,正确的是( )。
A)函数过程形参的类型与函数返回值的类型没有关系
B)在函数过程中,过程的返回值可以有多个
C)当数组作为函数过程的参数时,既能以传值方式传递,也能以传址方式传递
D)如果不指明函数过程参数的类型,则该参数没有数据类型
(27)在窗体上画两个标签和一个命令按钮,其名称分别为 Label1、Label2 和 Command1,然后编写如下
程序:
Private Sub func(L As Label)
L.Caption="1234"
End Sub
Private Sub Form_Load()
Label1.Caption="ABCDE"
Label2.Caption=10
End Sub
Private Sub Command1_Click()
a=Val(Label2.Caption)
Call func(Label1)
Label2.Caption=a
End Sub
程序运行后,单击命令按钮,则在两个标签中显示的内容分别为
A)ABCD 和 10 B)1234 和 100
C)ABCD 和 100
D)1234 和 10
(28)在窗体上画一个命令按钮(名称为 Command1),并编写如下代码:
Function Funl (ByVal a As Integer, b As Integer) As Integer
Dim t As Integer
t=a-b
b=t+a
Funl=t+b
End Function
第5页
Private Sub Command1_Click()
Dim x As Integer
x=10
Print Funl (Funl (x, (Funl (x, x-1))), x-1)
End Sub
程序运行后,单击命令按钮,输出结果是( )。
A)10 B)0
C)11 D)21
(29)以下关于过程及过程参数的描述中,错误的是(
A)过程的参数可以是控件名称
)。
B)调用过程时使用的实参的个数应与过程形参的个数相同
C)只有函数过程能够将过程中处理的信息返回到调用程序中
D)窗体可以作为过程的参数
(30)设有如下通用过程:
Public Function Fun (xStr As String) As String
Dim tStr As String, strL As Integer
tStr=""
strL=Len (xStr)
i=strL/2
Do While i<=StrL
tStr=tStr & Mid (xStr,i+1,1)
i=i+1
Loop
Fun=tStr & tStr
End Function
在窗体上画一个名称为 Textl 的文本框和一个名称为 Command1 的命令按钮。然后编写如下的事件
过程:
Private Sub Command1_Click()
Dim S1 As String
S1="ABCDEF"
Textl.Text=LCase(Fun(S1))
End Sub
程序运行后,单击命令按钮,文本框中显示的是( )。
A)ABCDEF
C)defdef
B)abcdef
D)defabc
(31)在窗体上画一个命令按钮和一个文本框(名称分别为 Command1 和 Textl),并把窗体的 KeyPreview
属性设置为 True,然后编写如下代码:
Dim SaveAll As String
Private Sub Form_Load()
Show
Textl.Text=""
Textl.SetFocus
End Sub
Private Sub Command1_Click()
Textl.Text=LCase (SaveAll) +SaveAl1
第6页
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
SaveAll=SaveAll+Chr(KeyAscii)
End Sub
程序运行后,直接用键盘输入:VB,再单击命令按钮,则文本框中显示的内容为( )。
A)vbVB B)不显示任何信息
C)VB
(32)设有以下程序:
Private Sub Form_Click()
x=50
For i=1 To 4
y=InputBox("请输入一个整数")
y=Val(y)
If y Mod 5 = 0 Then
a=a+y
x=y
Else
a=a+x
End If
Next i
Print a
End Sub
D)出错
程序运行后,单击窗体,在输入对话框中依次输入 15、24、35、46,输出结果为(
A)100 B)50
C)120 D)70
(33)以下关于菜单的叙述中,错误的是( )。
A)当窗体为活动窗体时,用 Ctrl+E 键可以打开菜单编辑器
B)把菜单项的 Enabled 属性设置为 False,则可删除该菜单项
C)弹出式菜单在菜单编辑器中设计
D)程序运行时,利用控件数组可以实现菜单项的增加或减少
(34)以下叙述中错误的是( )。
A)在程序运行时,通用对话框控件是不可见的
)。
B)调用同一个通用对话框控件的不同方法(如 ShowOpen 或 ShowSave)可以打开不同的对话框窗口
C)调用通用对话框控件的 Show()pen 方法,能够直接打开在该通用对话框中指定的文件
D)调用通用对话框控件的 ShowColor 方法,可以打开颜色对话框窗口
(35)设在工程文件中有一个标准模块,其中定义了如下记录类型:
Type Books
Name As String * 10
TelNum As String * 20
End Type
在窗体上画一个名为 Command1 的命令按钮,要求当执行事件过程 Command1_Click 时,在顺序文
件 Person.txt 中写入一条 Books 类型的记录。下列能够完成该操作的事件过程是( )。
A)Private Sub Command1_Click()
Dim B AS Books
Open "Person.txt" For Output As #1
第7页
B.Name=InputBox ("输入姓名")
B.TelNum=InputBox ("输入电话号码")
Write #1, B.Name, B.TelNum
Close #1
End Sub
B)Private Sub Command1_Click()
Dim B As Books
Open "Person.txt" For Input As #1
B.Name=InputBox ("输入姓名")
B.TelNum=InputBox ("输入电话号码")
Print #1, B.Name, B.TelNure
Close #1
End Sub
C)Private Sub Command1_Click()
Dim B AS Books
Open "Person.txt" For Output As #1
B.Name=InputBox ("输入姓名")
B.TelNum=InputBox ("输入电话号码")
Write #1, B
Close #1
End Sub
D)Private Sub Command1_Click()
Open "Person.txt" For Input As #1
Name=InputBox ("输入姓名")
TelNum=InputBox ("输入电话号码")
Print #1, Name, TelNum
Close #1
End Sub
二、填空题(每空 2 分,共 30 分)
请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
(1)假设用一个长度为 50 的数组(数组元素的下标从 0 到 49)作为栈的存储空间,栈底指针 bottom 指
向栈底元素,栈顶指针 top 指向栈顶元素,如果 bottom=49,top=30(数组下标),则栈中具有__________
个元素。
(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于__________测试。
(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和__________。
(4)数据库系统的核心是__________。
(5)在 E-R 图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是__________框。
(6)窗体如图所示,其中汽车是名称为 Imagel 的图像框,命令按钮的名称为 Command1,计时器的名称
为 Timerl,直线的名称为 Linel。程序运行时,单击命令按钮,则汽车每 0.1 秒向左移动 100,车头到
达左边的直线时停止移动。请填空完成下面的属性设置和程序,以便实现上述功能。
第8页
1)Timerl 的 Interval 属性的值应事先设置为__________
2)Private Sub Command1_Click()
Timerl.Enabled=True
End Sub
Private Sub Timerl_Timer()
If Imagel.Left>= __________ Then
Imagel.Left= __________ -100
End If
End Sub
(7)设窗体上有一个名称为 Combo1 的组合框,并有以下程序:
Private Sub Combol_KeyPress (KeyAscii As Integer)
If __________ =13 Then ' 回车符的 ASCII 码是 13
For k=0 To Combo1.ListCount-1
If Combo1.Text=Combo1.List(k) Then
Combo1.Text = ""
Exit For
End If
Next k
If Combo1.Text <> "" Then
Combo1.AddItem __________
End If
End If
End Sub
程序的功能是:在组合框的编辑区中输入文本后按回车键,则检查列表中有无与此文本相同的项目,
若有,则把编辑区中的文本删除,否则把编辑区中文本添加到列表的尾部。请填空。
(8)在当前目录下有一个名为“myfile.txt”的文本文件,其中有若干行文本。下面程序的功能是读入此
文件中的所有文本行,按行计算每行字符的 ASCII 码之和,并显示在窗体上。请填空。
Private Sub Command1_Click()
Dim ch$, ascii As Integer
Open "myfile.txt" For __________ As #1
While Not EOF(1)
Line Input #1, ch
ascii=toascii( __________ )
Print ascii
Wend
Close #1
End Sub
第9页
Private Function toascii (mystr$) As Integer
n=0
For k=1 To __________
n=n+Asc(Mid(mystr,k,1))
Next k
toascii=n
End Function
(9)本程序实现文本加密。先给定序列:al,a2,…,an,它们的取值范围是 l~n,且互不相同。加密算法
是:把原文本中第 k 个字符放到加密后文本的第 ak个位置处。若原文本长度大于 n,则只对前 n 个字
符加密,后面的字符不变;若原文本长度小于 n,则在后面补字符“*”使文本长度为 n 后再加密。
例如:若给定序列 al,a2,…,a7分别为 2,5,3,7,6,l,4
当文本为“PROGRAM”时,加密后的文本为“APOMRRG”
当文本为“PROGRAMMlNG”时,加密后的文本为“APOMRRGMING”
当文本为“THANK”时,加密后的文本为“*TA*HKN”
下面的过程 code 实现这一算法。其中参数数组 a()中存放给定序列(个数与数组 a 的元素个数相等)
al,a2,a3,…的值,要加密的文本放在参数变量 mystr 中。过程执行完毕,加密后的文本仍放在变
量 mystr 中。请填空。
Option Base 1
Private Sub code (a () As Integer, mystr As String)
Dim ch As String, cl As String
n=UBound(a) -Len(mystr)
If n>0 Then
mystr=mystr & strings(n, "*")
End If
ch = mystr
For k= __________ To UBound(a)
cl=Mid(mystr, k, 1)
n= __________
Mid$(ch,n)=c1
Next k
mystr=ch
End Sub
第10页
《VB。net入门经典》
TXT的不好,不能带图文。