机密★启用前
2007 年 4 月全国计算机等级考试二级笔试试卷
Visual Basic 语言程序设计
26
注意事项
一、考生应严格遵守考场规则,得到监考人员指令后方可作答。
二、考生拿到试卷后应首先将自己的姓名、准考证号等内容涂写在答题卡的相应位置上。
三、选择题答案必须用铅笔填涂在答题卡的相应位置上,填空题的答案必须用蓝、黑色钢笔或圆珠笔写在答题卡的相应位置上,答案写在试卷上无效。
四、注意字迹清楚,保持卷面整洁。
五、考试结束将试卷和答题卡放在桌上,不得带走。待监考人员收毕清点后,方可离场。
* * * 版权所有,任何单位或个人不得保留、复制和出版,违者必究 * * *
教育部考试中心
二 00 七年二月制
二级 Visual Basic 语言程序设计试卷 第 1 页(共 11 页)
2007年4月全国计算机等级考试二级笔试试卷
公共基础知识和Visual Basic语言程序设计
(考试时间 90 分钟,满分 100 分)
一、选择题(每小题 2 分,共 70 分)
( 1)下列叙述中正确的是( )。
A)算法的效率只与问题的规模有关,而与数据的存储结构无关
B)算法的时间复杂度是指执行算法所需要的计算工作量
C)数据的逻辑结构与存储结构是一一对应的
D)算法的时间复杂度与空间复杂度一定相关
( 2)在结构化程序设计中,模块划分的原则是( )。
A)各模块应包括尽量多的功能
B)各模块的规模应尽量大
C)各模块之间的联系应尽量紧密
D)模块内具有高内聚度、模块间具有低耦合度
( 3)下列叙述中正确的是( )。
A)软件测试的主要目的是发现程序中的错误
B)软件测试的主要目的是确定程序中错误的位置
C)为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作
D)软件测试是证明软件没有错误
( 4)下列选项中不属于面向对象程序设计特征的是( )。
A)继承性 B)多态性 C)类比性 D)封装性
( 5)下列对队列的叙述正确的是( )。
A)队列属于非线性表 B)队列按“先进后出”原则组织数据
C)队列在队尾删除数据 D)队列按“先进先出”原则组织数据
( 6)对下列二叉树,
进行前序遍历的结果为( ) 。
A) DYBEAFCZX B) YDEBFZXCA
C) ABDEYCFXZ D) ABCDEFXYZ
( 7)某二叉树中有 n 个度为 2 的结点,则该二叉树中的叶子结点数为( )。
A) n+1 B) n-1 C) 2n D) n/2
( 8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是( )。
A)并 B)交 C)投影 D)笛卡尔乘积
( 9)在 E-R 图中,用来表示实体之间联系的图形是( )。
A)矩形 B)椭圆形 C)菱形 D)平行四边形
( 10)下列叙述中错误的是( )。
A)在数据库系统中,数据的物理结构必须与逻辑结构一致
二级 Visual Basic 语言程序设计试卷 第 2 页(共 11 页)
B)数据库技术的根本目标是要解决数据的共享问题
C)数据库设计是指在已有数据库管理系统的基础上建立数据库
D)数据库系统需要操作系统的支持
( 11)下列可以正确定义 2 个整型变量和 1 个字符串变量的语句是( )。
A) Dim n,m As Integer,s As String
B) Dim a%,b$,c As String
C) Dim a As Integer,b,c As String
D) Dim x%,y As Integer,z As String
( 12)下列表达式中不能判断 x 是否为偶数的是( )。
A) x/2=Int(x/2) B) x Mod 2=0
C) FiX(x/2)=x/2 D) x\2=0
( 13) 设在名称为 Myform 的窗体上只有 1 个名称为 C1 的命令按钮,下列叙述中正确的是
( )。
A)窗体的 Click 事件过程的过程名是 Myform_Click
B)命令按钮的 Click 事件过程的过程名是 C1_Click
C)命令按钮的 Click 事件过程的过程名是 Command1_Click
D)上述 3 种过程名称都是错误的
( 14)设窗体上有 1 个滚动条,要求单击滚动条右端的 按钮一次,滚动块移动一定的刻度值,决定此刻度值的属性是( )。
A) Max B) Min C) SmallChange D) LargeChange
( 15) 1 个二维数组可以存放 1 个矩阵。在程序开始有语句 Option Base 0,则下面定义的数组中正好可以存放 1 个 4╳ 3 矩阵(即只有 12 个元素)的是( )。
A) Dim a(-2 To 0,2)As Integer B) Dim a(3,2)As Integer
C) Dim a(4,3)As Integer D) Dim a(-1 To -4,-1 To -3)As Integer
( 16)若设置了文本框的属性 PasswordChar="$",则运行程序时向文本框中输入 8 个任意字符后,文本框中显示的是( )。
A) 8 个 "$" B) 1 个 "$" C) 8 个 "*" D)无任何内容
( 17)设在窗体上有 1 个名称为 Combol 的组合框,含有 5 个项目,要删除最后一项,正确的语句是( )。
A) Combo1.RemoveItem Combo1.Text
B) Combo1.RemoveItem 4
C) Combo1.RemoveItem Combo1.ListCount
D) Combo1.RemoveItem 5
( 18)工程中有 2 个窗体,名称分别为 Form1,Form2,Form1 为启动窗体,该窗体上有命令按钮 Command1。要求程序运行后单击该命令按钮时显示 Form2,则按钮的 Click
事件过程应该是( )。
A) Private Sub Command1_Click( ) B) Private Sub Command1_Click( )
Form2.Visible Form2.Show
End Sub End Sub
C) Private Sub Command1_Click( ) D) Private Sub Command1_Click( )
Form2.Load Load Form2
End Sub End Sub
( 19)若在某窗体模块中有下列事件过程,
Private Sub Command1_Click(Index As Integer)
二级 Visual Basic 语言程序设计试卷 第 3 页(共 11 页)
……
End Sub
则下列叙述中正确的是( ) 。
A)此事件过程与不带参数的事件过程没有区别
B)有 1 个名称为 Command1 的窗体,单击此窗体则执行此事件过程
C)有 1 个名称为 Command1 的控件数组,数组中有多个不同类型控件
D)有 1 个名称为 Command1 的控件数组,数组中有多个相同类型控件
( 20)下列循环语句中在任何情况下都至少执行一次循环体的是( )。
A) Do While <条件 > B) While <条件 >
循环体 循环体
Loop Wend
C) Do D) Do Until <条件 >
循环体 循环体
LoopUntil <条件 > Loop
( 21)在窗体上有 1 个名为 Cd1 的通用对话框,为了在运行程序时打开保存文件对话框,
则在程序中应使用的语句是( )。
A) Cd1.Action=2 B) Cd1.Action=1
C) Cd1.ShowSave=True D) Cd1.ShowSave=0
( 22)下列关于菜单的叙述中错误的是( )。
A)各级菜单中的所有菜单项的名称必须惟一
B)同一子菜单中的菜单项名称必须惟一,但不同子菜单中的菜单项名称可以相同
C)弹出式菜单用 PopupMenu 方法弹出
D)弹出式菜单也用菜单编辑器编辑
( 23)已知有下列过程,
Private Sub proc1(a As Integer,b As String,Optional x As Boolean)
……
End Sub
正确调用此过程的语句是( ) 。
A) Call proc1(5) B) Call proc1 5,"abc",False
C) proc1(12,"abc",True) D) proc1 5,"abc"
( 24)在窗体上有 1 个名称为 Text1 的文本框和 1 个名称为 Command1 的命令按钮,要求在程序执行时,每单击命令按钮一次,文本框向右移动一定距离。下列能够正确实现上述功能的程序是( )。
A) Private Sub Command1_Click( ) B) Private Sub Command1_Click( )
Text1.Left=100 Text1.Left=Text1.Left-100
End Sub End Sub
C) Private Sub Command1_Click( ) D) Private Sub Command1_Click( )
Textl.Move Text1.Left+100 Text1.Move Text1.Left
End Sub End Sub
( 25)某人创建了 1 个工程,其中的窗体名称为 Form1;之后又添加了 1 个名为 Form2 的窗体,并希望程序执行时先显示 Form2 窗体,那么,他需要做的工作是( )。
A)在工程属性对话框中把“启动对象”设置为 Form2
B)在 Forml 的 Load 事件过程中加入语句 Load Form2
C)在 Form2 的 Load 事件过程中加入语句 Form2.Show
二级 Visual Basic 语言程序设计试卷 第 4 页(共 11 页)
D)把 Form2 的 TabIndex 属性设置为 l,把 Form1 的 TabIndex 属性设置为 2
( 26)窗体上有 1 个名称为 Text1 的文本框和 1 个名称为 Command1.的命令按钮。要求程序运行时,单击命令按钮,就可把文本框中的内容写到文件 out.txt 中,每次写入的内容附加到文件原有内容之后。下列能够正确实现以上功能的程序是( )。
A) Private Sub Command1_Click( )
Open "out.txt" For Input As #1
Print #1,Text1.Text
Close #1
End Sub
B) Private Sub Command1_Click( )
Open "out.txt" For Output As #1
Print #1,Text1.Text
Close #1
End Sub
C) Private Sub Command1_Click( )
Open "out.txt" For Append As#1
Print #1,Text1.Text
Close #1
End Sub
D) Private Sub Command1_Click( )
Open "out.txt" For Random As#1
Print #1,Text1.Text
Close #1
End Sub
( 27)为了计算 1+3+5+… +99 的值,某人编程下列,
k=1
s=0
While k<=99
k=k+2∶ s=s+k
Wend
Print s
在调试时发现运行结果有错误,需要修改。 下列错误原因和修改方案中正确的是 ( ) 。
A) While… Wend 循环语句错误,应改为 For k=1 To 99 … Next k
B)循环条件错误,应改为 While k<99
C)循环前的赋值语句 k=l 错误,应改为 k=0
D)循环中两条赋值语句的顺序错误,应改为 s=s+k:k=k+2
( 28)下列程序在调试时出现了死循环,
Private Sub Command1_Click( )
n=InputBox("请输入一个整数 ")
Do
If n Mod 2=0 Then
n=n+1
Else
n=n+2
二级 Visual Basic 语言程序设计试卷 第 5 页(共 11 页)
End If
Loop Until n=1000
End Sub
下列关于死循环的叙述中正确的是( ) 。
A)只有输入的 n 是偶数时才会出现死循环,否则不会
B)只有输入的 n 是奇数时才会出现死循环,否则不会
C)只有输入的 n 是大于 1000 的整数时才会出现死循环,否则不会
D)输入任何整数都会出现死循环
( 29)在窗体上有 1 个名称为 CommonDialog1 的通用对话框和 1 个名称为 Command1 的命令按钮,以及其他一些控件。要求在程序运行时,单击 Command1 按钮,则显示打开文件对话框,并在选择或输入了 1 个文件名后,就可以打开该文件。下列是
Command1_Click 事件过程的两种算法。
算法 1,
Private Sub Command1_Click( )
CommonDialogl.ShowOpen
Open CommonDialogl.FileName For Input As #1
End Sub
算法 2,
Private Sub Command1_Click( )
CommonDialogl.ShowOpen
If CommonDialogl.FileName<>" " Then
Open CommonDialogl.FileName For Input As #1
EndIf
End Sub
下列关于这两种算法的叙述中正确的是( ) 。
A)显示打开文件对话框后若未选择或输入任何文件名,则算法 2 会出错,算法 1 不会
B)显示打开文件对话框后若未选择或输入任何文件名,则算法 1 会出错,算法 2 不会
C)两种算法的执行结果完全一样
D)算法 1 允许输入的文件名中含有空格,而算法 2 不允许
( 30)窗体上有 1 个名称为 Listl 的列表框,其中已经输入了若干个项目,如图所示;还有
2 个文本框,名称分别为 Text1,Text2,1 个名称为 Command1 的命令按钮,并有下列事件过程。
Private Sub Command1_Click( )
Dim str As String,s As String,k As Integer
s=Text1
str=“,
For k=Listl.ListCount-1 To 0 Step-1
If InStr(Listl.List(k),s)>0 Then
str=str & Listl.List(k)& " "
End If
二级 Visual Basic 语言程序设计试卷 第 6 页(共 11 页)
Next k
If str=" " Then
Text2="没有匹配的项目 "
Else
Text2=str
End If
End Sub
程序运行时,在 Text1 中输入,京”,单击命令按钮,则在 Text2 中显示的内容是 ( ) 。
A)京 B)北京南京
C)南京北京 D)没有匹配的项目
( 31)在窗体上画 1 个名称为 Command1 的命令按钮,然后编写下列程序,
Private Sub Command1_Click( )
Print fun("ABCDEFG")
End Sub
Function fun(st As String)As string
stlen=Len(st)
temp=“,
For k=1 To stlen/2
temp=temp+Mid(st,k,1)+Mid(st,stlen-k+1,1)
Next k
fun=temp
End Function
程序运行时,单击命令按钮,则在窗体上显示的是( ) 。
A) ABCDEFG B) AGBFCE
C) GFEDCBA D) AGBFCED
( 32)在窗体上先后画 2 个图片框,名称分别为 Picture1 和 banana,banana 中添加了香蕉图片,如图 1 所示,且将 banana.DragMode 属性设置为 1。要求程序运行时,可以用鼠标把 banana 拖拽到 Picture1 中,如图 2 所示。能实现此功能的事件过程是( )。
图 1 图 2
A) Private Sub Form_DragDrop(Source As Control,X As Single,Y As Single)
banana.Move Picture1.Left+X,Picture1.Top+Y
End Sub
B) Private Sub banana_DragDrop(Source As Control,X As Single,Y As Single)
Source.Move Picture1.Left + X,Picture 1.Top + Y
End Sub
C) Private Sub Picture1_DragDrop(Source As Control,X As Single,YAs Single)
Source.Move Picture1.Left + X,Picture1.Top + Y
二级 Visual Basic 语言程序设计试卷 第 7 页(共 11 页)
End Sub
D) Private Sub Picture1_DragDrop(Source As Control,X As Single,Y As Single)
banana.Move banana.Left + X,banana.Top + Y
End Sub
( 33)在窗体上面 1 个名称为 Command1 的命令按钮,然后编写下列事件过程
Option Base 1
Private Sub Command1_Click( )
Dim a(5,5)As Integer
For i= 1 To 5
For j = 1 To 5
a(i,j) = (i +j )*5\10
Next j
Next i
s=0
For i=1 To 5
s=s+a(i,i)
Next i
Print s
End Sub
程序运行后,单击命令按钮,输出结果是( ) 。
A) 15 B) 13 C) 11 D) 9
( 34)在窗体上从左到右有 Text1,Text2 两个文本框,如图所示,要求程序运行时,在 Text1
中输入 1 个分数后按回车键,则判断分数的合法性,若分数为 0~ 100 中的 1 个数,
则光标移到 Text2 中;否则光标不动,并弹出对话框显示“分数错”。下列程序中正确的是( )。
A) Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii= 13 Then '回车符的 ASCII 码是 13
a = Val(Text1)
If a >= 0 Or a <= 100 Then
Text2.SetFocus
Else
Text1.SetFocus,MsgBox ("分数错 ")
End If
End If
End Sub
B) Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '回车符的 ASCII 码是 13
a = Val(Text1)
If a >= 0 And a <= 100 Then
Text1.SetFocus
Else
二级 Visual Basic 语言程序设计试卷 第 8 页(共 11 页)
Text2.SetFocus:MsgBox ("分数错 ")
End If
End If
End Sub
C) Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '回车符的 ASCII 码是 13
a = Val(Text1)
If a < 0 And a > 100 Then
Text2.SetFocus
Else
Text1.SetFocus,MsgBox ("分数错 ")
End If
End If
End Sub
D) Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then '回车符的 ASCII 码是 13
a = Val(Text1)
If a >= 0 And a <= 100 Then
Text2.SetFocus
Else
Text1.SetFocus:MsgBox ("分数错 ")
End If
End If
End Sub
( 35)在窗体上画 2 个命令按钮,名称分别为 Command1,Command2,然后编写下列事件过程。
Const n = 5,m=4
Dim a(m,n)
Private Sub Command1_Click( )
k=1
For i= 1 To m
For j = 1 To n
a(i,j) =k
k=k+1
Next j
Next i
End Sub
Private Sub Command2_Click( )
summ = 0
For i= 1 To m
For j = 1 To n
If i = 1 Or i = m Then
summ = summ + a(i,j)
Else
二级 Visual Basic 语言程序设计试卷 第 9 页(共 11 页)
If j = 1 Or j = n Then
summ = summ + a(i,j)
End If
End If
Next j
Next i
Print summ
End Sub
过程 Command1_Click( )的作用是在二维数组 a 中存放 1 个 m 行 n 列的矩阵; 过程
Command2_Click( )的作用是( ) 。
A)计算矩阵外围一圈元素的累加和
B)计算矩阵除外围一圈以外的所有元素的累加和
C)计算矩阵第 1 列和最后一列元素的累加和
D)计算矩阵第 1 行和最后一行元素的累加和
二、填空题(每空 2 分,共 30 分)
( 1)在深度为 7 的满二叉树中,度为 2 的结点个数为 【 1】 。
( 2)软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于 【 2】 测试。
( 3)在数据库系统中,实现各种数据管理功能的核心软件称为 【 3】 。
( 4)软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于 【 4】 阶段。
( 5)在结构化分析使用的数据流图 (DFD)中,利用 【 5】 对其中的图形元素进行确切解释。
( 6)下列程序的功能是从键盘输入 1 个大于 100 的整数 m,计算并输出满足不等式
1+2
2
+3
2
+4
2
+…+n
2
<m 的最大的 n。请填空。
Private Sub Command1_Click( )
Dim s,m,n As Integer
m=Val(InputBox("请输入一个大于 100 的整数 "))
n= 【 6】
s=0
Do While s<m
n=n+1
s=s+n*n
Loop
Print "满足不等式的最大 n 是 "; 【 7】
End Sub
( 7)下列程序的功能是把文件 filel.txt 中重复字符去掉后(即若有多个字符相同,则只保留
1 个)写入文件 file2.txt。请填空。
Private Sub Command1_Click( )
Dim inchar As String,temp As String,outchar As String
outchar=“,
Open "file1.txt" For Input As #1
Open "file2.txt" For Output As 【 8】
n=LOF( 【 9】 )
inchar=Input$(n,1)
二级 Visual Basic 语言程序设计试卷 第 10 页(共 11 页)
For k=1 To n
temp=Mid(inchar,k,1)
If InStr(outchar,temp)= 【 10】 Then
outchar=outchar & temp
End If
Next k
Print #2,【 11】
Close #2
Close #1
End Sub
( 8)在窗体上先画 1 个名为 Text1 的文本框和 1 个名为 Label1 的标签,再画 1 个名为 Op1
的有 4 个单选按钮的单选按钮数组,其 Index 属性按季度顺序为 0~ 3,如图 1 所示。
在文件 sales.txt 中按月份顺序存有某企业某年 12 个月的销售额。要求在程序执行时,
鼠标单击 1 个单选按钮,则 Text1 中显示相应季度的销售总额,并把相应的文字显示在标签上。如图 2 所示是单击“第 3 季度”单选按钮所产生的结果。请填空。
图 1 图 2
Dim sales(12) As Long
Private Sub Form_Load( )
Open "sales.txt" For Input As #l
For k=1 To 12
Input #1,sales(k)
Next k
Close #l
End Sub
Private Sub 【 12】 (Index As Integer)
Dim sum As Long,k As Integer,month As Integer
sum=0
month=Index* 【 13】
For k=1 To 3
month=month+1
sum=sum+sales(month)
Next k
Label1.Caption=Op1(Index),【 14】 &"销售总额,"
Text1=sum
End Sub
( 9)某人编写下列函数来判断 a 是否为素数,若是,则函数返回 True;否则返回 False。
Function prime(a As Integer)As Boolean
Dim k As Integer,isprime As Boolean
二级 Visual Basic 语言程序设计试卷 第 11 页(共 11 页)
If a<2 Then
isprime=False
Else
isprime=True
k=2
Do While k<a/2 And isprime
If a Mod k=0 Then
isprime=False
Else
k=k+1
End If
Loop
End If
prime=isprime
End Function
在测试时发现有 1 个非素数也被判断为素数,这个错判的数是 【 15】 。