机密★启用前
2008 年 9 月全国计算机等级考试二级笔试试卷
Visual Basic 语言程序设计
26
注意事项
一、考生应严格遵守考场规则,得到监考人员指令后方可作答。
二、考生拿到试卷后应首先将自己的姓名、准考证号等内容涂写在答题卡的相应位置上。
三、选择题答案必须用铅笔填涂在答题卡的相应位置上,填空题的答案必须用蓝、黑色钢笔或圆珠笔写在答题卡的相应位置上,答案写在试卷上无效。
四、注意字迹清楚,保持卷面整洁。
五、考试结束将试卷和答题卡放在桌上,不得带走。待监考人员收毕清点后,方可离场。
* * * 版权所有,任何单位或个人不得保留、复制和出版,违者必究 * * *
教育部考试中心
二 00 八年七月制
二级Visual Basic语言程序设计试卷 第1页(共10页)
2008 年 9 月全国计算机等级考试二级笔试试卷
公共基础知识和 Visual Basic 语言程序设计
(考试时间90分钟,满分100分)
一、选择题(每小题 2 分,共 70 分)
(1)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是( )。
A)12345ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA
(2)下列叙述中正确的是( )。
A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D)循环队列中元素的个数是由队头指针和队尾指针共同决定
(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
A)O(n) B)O(n
2
) C)O(log
2
n) D)O(n log
2
n)
(4)下列叙述中正确的是( )。
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C)顺序存储结构能存储有序表,链式存储结构不能存储有序表
D)链式存储结构比顺序存储结构节省存储空间
(5)数据流图中带有箭头的线段表示的是( )。
A)控制流 B)事件驱动 C)模块调用 D)数据流
(6)在软件开发中,需求分析阶段可以使用的工具是( )。
A)N-S图 B)DFD图 C)PAD图 D)程序流程图
(7)在面向对象方法中,不属于“对象”基本特点的是( )。
A)一致性 B)分类性 C)多态性 D)标识唯一性
(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
A)一对一 B)一对多 C)多对一 D)多对多
(9)在数据管理技术发展的三个阶段中,数据共享最好的是( )。
A)人工管理阶段 B)文件系统阶段
C)数据库系统阶段 D)三个阶段相同
(10)有三个关系R、S和T如下,
R S T
A B B C A B C
m 1 1 3 m 1 3
n 2 3 5
由关系R和S通过运算得到关系T,则所使用的运算为( )。
A)笛卡尔积 B)交 C)并 D)自然连接
(11)在设计窗体时双击窗体的任何地方,可以打开的窗口是( )。
A)代码窗口 B)属性窗口
C)工程资源管理器窗口 D)工具箱窗口
(12)若变量a未事先定义而直接使用(例如:a=0),则变量a的类型是( )。
二级Visual Basic语言程序设计试卷 第2页(共10页)
A)Integer B)String C)Boolean D)Variant
(13)为把圆周率的近似值3.14159存放在变量pi中,应该把变量pi定义为( )。
A)Dim pi As Integer B)Dim pi(7) As Integer
C)Dim pi As Single D)Dim pi As Long
(14)表达式2*3^2+4*2/2+3^2的值是( )。
A)30 B)31 C)49 D)48
(15)以下不能输出“Program”的语句是( )。
A)Print Mid("VBProgram",3,7) B)Print Right("VBProgram",7)
C)Print Mid("VBProgram",3) D)Print Left("VBProgram",7)
(16)窗体上有一个名称为Frame1的框架(如图),若要把框架上显示的“Frame1”改为汉字“框架”,下面正确的语句是( )。
A)Frame1.Name="框架" B)Frame1.Caption="框架"
C)Frame1.Text="框架" D)Frame1.Value="框架"
(17)以下叙述中错误的是( )。
A)在通用过程中,多个形式参数之间可以用逗号作为分隔符
B)在Print方法中,多个输出项之间可以用逗号作为分隔符
C)在Dim语句中,所定义的多个变量可以用逗号作为分隔符
D)当一行中有多个语句时,可以用逗号作为分隔符
(18)设窗体上有一个列表框控件List1,含有若干列表项。以下能表示当前被选中的列表项内容的是( )。
A)List1.List B)List1.ListIndex C)List1.Text D)List1.Index
(19)设a=4,b=5,c=6,执行语句Print a<b And b<c后,窗体上显示的是( )。
A)True B)False C)出错信息 D)0
(20)执行下列语句
strInput=InputBox ("请输入字符串","字符串对话框","字符串")
将显示输入对话框。此时如果直接单击“确定”按钮,则变量strInput的内容是( )。
A)"请输入字符串" B)"字符串对话框" C)"字符串" D)空字符串
(21)窗体上有Command1、Command2两个命令按钮。现编写以下程序,
Option Base 0
Dim a( ) As Integer,m As Integer
Private Sub Command1_Click( )
m=InputBox("请输入一个正整数")
ReDim a(m)
End Sub
Private Sub Command2_Click( )
m=InputBox("请输入一个正整数")
ReDim a(m)
End Sub
二级Visual Basic语言程序设计试卷 第3页(共10页)
运行程序时,单击Command1后输入整数10,再单击Command2后输入整数5,则数组a中元素的个数是( )。
A)5 B)6 C)10 D)11
(22)在窗体上画一个命令按钮和一个标签,其名称分别为Command1和Labcl1,然后编写如下事件过程,
Private Sub Command1_Click( )
Counter=0
For i=1 To 4
For j=6 To 1 Step -2
Counter=Counter+1
Next j
Next i
Label1.Caption=Str(Counter)
End Sub
程序运行后,单击命令按钮,标签中显示的内容是( )。
A)11 B)12 C)16 D)20
(23)在窗体上画一个名为Command1的命令按钮,然后编写以下程序,
Private Sub Command1_Click( )
Dim M(10) As Integer
For k=1 To 10
M(k)=12-k
Next k
x=8
Print M(2+M(x))
End Sub
运行程序,单击命令按钮,在窗体上显示的是( )。
A)6 B)5 C)7 D)8
(24)以下关于过程及过程参数的描述中,错误的是( )。
A)调用过程时可以用控件名称作为实际参数
B)用数组作为过程的参数时,使用的是“传地址”方式
C)只有函数过程能够将过程中处理的信息传回到调用的程序中
D)窗体(Form)可以作为过程的参数
(25)在窗体上画一个名称为Command1的命令按钮,再画两个名称分别为Label1、Label2
的标签,然后编写如下程序代码,
Private X As Integer
Private Sub Command1_Click( )
X=5,Y=3
Call proc(X,Y)
Label1.Caption=X
Label2.Caption=Y
End Sub
Private Sub proc(a As Integer,ByVal b As Integer)
X=a*a
二级Visual Basic语言程序设计试卷 第4页(共10页)
Y=b+b
End Sub
程序运行后,单击命令按钮,则两个标签中显示的内容分别是( )。
A)25和3 B)5和3 C)25和6 D)5和6
(26)在窗体上有两个名称分别为Text1、Text2的文本框,一个名称为Command1的命令按钮。运行后的窗体外观如图所示。
设有如下的类型和变量声明,
Private Type Person
name As String*8
major As String*20
End Type
Dim p As Person
设文本框中的数据已正确地赋值给Person类型的变量p,当单击“保存”按钮时,能够正确地把变量中的数据写入随机文件Test2.dat中的程序段是( )。
A)Open "c:\Test2.dat" For Output As #1
Put #1,1,p
Close #1
B)Open "c:\Test2.dat" For Random As #1
Get #1,1,p
Close #1
C)Open "c:\Test2.dat" For Random As #1 Len=Len(p)
Put #1,1,p
Close #1
D)Open "c:\Test2.dat" For Random As #1 Len=Len(p)
Get #1,1,p
Close #1
(27)在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程,
Private Sub Command1_Click( )
Dim i As Integer,n As Integer
For i=0 To 50
i=i+3
n=n+1
If i>10 Then Exit For
Next
Text1.Text=Str(n)
End Sub
程序运行后,单击命令按钮,在文本框中显示的值是( )。
A)2 B)3 C)4 D)5
(28)假定有以下循环结构
Do Until 条件表达式
循环体
Loop
则以下正确的描述是( )。
二级Visual Basic语言程序设计试卷 第5页(共10页)
A)如果“条件表达式”的值是0,则一次循环体也不执行
B)如果“条件表达式”的值不为0,则至少执行一次循环体
C)不论“条件表达式”的值是否为“真”,至少要执行一次循环体
D)如果“条件表达式”的值恒为0,则无限次执行循环体
(29)在窗体上画一个命令按钮,然后编写如下事件过程,
Private Sub Command1_Click( )
Dim I,Num
Randomize
Do
For I=1 To 1000
Num=Int(Rnd*100)
Print Num;
Select Case Num
Case 12
Exit For
Case 58
Exit Do
Case 65,68,92
End
End Select
Next I
Loop
End Sub
上述事件过程执行后,下列描述中正确的是( )。
A)Do循环执行的次数为1000次
B)在For循环中产生的随机数小于或等于100
C)当所产生的随机数为12时结束所有循环
D)当所产生的随机数为65、68或92时窗体关闭、程序结束
(30)在窗体上画一个名为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)1234 B)12 C)34 D)4321
(31)设有如下通用过程,
Public Function Fun(xStr As String)As String
二级Visual Basic语言程序设计试卷 第6页(共10页)
Dim tStr As String,strL As Integer
tStr=""
strL=Len(xStr)
i=1
Do While i<=strL/2
tStr=Tstr & Mid(xStr,i,1)& Mid(xStr,strL-i+1,1)
i=i+1
Loop
Fun=tStr
End Function
在窗体上画一个名称为Command1的命令按钮。然后编写如下的事件过程,
Private Sub Command1_Click( )
Dim S1 As String
S1="abcdef"
Print UCase(Fun(S1))
End Sub
程序运行后,单击命令按钮,输出结果是( )。
A)ABCDEF B)abcdef C)AFBECD D)DEFABC
(32)某人为计算n!(0<n<=12)编写了下面的函数过程,
Private Function fun(n As Integer) As Long
Dim p As Long
p=1
For k=n-1 To 2 Step-1
p=p*k
Next k
fun=p
End Function
在调试时发现该函数过程产生的结果是错误的,程序需要修改。下面的修改方案中有
3种是正确的,错误的方案是( )。
A)把p=1改为p=n
B)把For k=n-1 To 2 Step-1改为For k=1 To n-1
C)把For k=n-1 To 2 Step-1改为For k=1 To n
D)把For k=n-1 To 2 Step-1改为For k=2 To n
(33)假定有以下函数过程,
Function Fun(S As String)As String
Dim s1 As String
For i=1 To Len(S)
s1=LCase(Mid(S,i,1))+s1
Next i
Fun=s1
End Function
在窗体上画一个命令按钮,然后编写如下事件过程,
Private Sub Command1_Click( )
Dim Str1 As String,Str2 As String
二级Visual Basic语言程序设计试卷 第7页(共10页)
Str1=InputBox("请输入一个字符串")
Str2=Fun(Str1)
Print Srt2
End Sub
程序运行后,单击命令按钮,如果在输入对话框中输入字符串“abcdefg”,则单击“确定”按钮后在窗体上的输出结果为( )。
A)ABCDEFG B)abcdefg C)GFEDCBA D)gfedcba
(34)为计算a
n
的值,某人编写了函数power如下,
Private Function power (a As Integer,n As Integer) As Long
Dim p As Long
p=a
For k=1 To n
p=p*a
Next k
power=p
End Function
在调试时发现是错误的,例如Print power(5,4)的输出应该是625,但实际输出是3125。
程序需要修改。下面的修改方案中有3个是正确的,错误的一个是( )。
A)把For k=1 To n改为For k=2 To n B)把p=p*a改为p=p^n
C)把For k=1 To n改为For k=1 To n-1 D)把p=a改为p=1
(35)某人编写了下面的程序
Private Sub Command1_Click( )
Dim a As Integer,b As Integer
a=InputBox("请输入整数")
b=InputBox("请输入整数")
pro a
pro b
Call pro(a+b)
End Sub
Private Sub pro(n As Integer)
While (n>0)
Print n Mod 10;
n=n\10
Wend
End Sub
此程序功能是:输入2个正整数,反序输出这2个数的每一位数字,再反序输出这2
个数之和的每一位数字。例如:若输入123和234,则应该输出,
3 2 1
4 3 2
7 5 3
但调试时发现只输出了前2行(即2个数的反序),而未输出第3行(即2个数之和的反序),程序需要修改。下面的修改方案中正确的是( )。
A)把过程pro的形式参数n As Integer改为ByVal n As Integer
二级Visual Basic语言程序设计试卷 第8页(共10页)
B)把Call pro(a+b)改为pro a+b
C)把n=n\10改为n=n/10
D)在pro b语句之后增加语句c%=a+b,再把Call pro(a+b)改为pro c
二、填空题(每空 2 分,共 30 分)
(1)对下列二叉树进行中序遍历的结果 【1】 。
A
B C
D E F
X Y Z
(2)按照软件测试的一般步骤,集成测试应在 【2】 测试之后进行。
(3)软件工程三要素包括方法、工具和过程,其中,【3】 支持软件开发的各个环节的控制和管理。
(4)数据库设计包括概念设计,【4】 和物理设计。
(5)在二维表中,元组的 【5】 不能再分成更小的数据项。
(6)在窗体上画一个文本框、一个标签和一个命令按钮,其名称分别为Text1、Label1和
Command1,然后编写如下两个事件过程,
Private Sub Command1_Click( )
S$=InputBox("请输入一个字符串")
Text1.Text=S$
End Sub
Private Sub Text1_Change( )
Label1.Caption=UCase(Mid(Text1.Text,7))
End Sub
程序运行后,单击命令按钮,将显示一个输入对话框,如果在该对话框中输入字符串
“VisualBasic”,则在标签中显示的内容是 【6】 。
(7)在窗体上画一个命令按钮,其名称为Command1,然后编写如下事件过程,
Private Sub Command1_Click( )
a$="National Computer Rank Examination"
n=Len(a$)
s=0
For i=1 To n
b$=Mid(a$,i,1)
If b$="n" Then
s=s+1
End If
Next i
Print s
End Sub
程序运行后,单击命令按钮,输出结果是 【7】 。
二级Visual Basic语言程序设计试卷 第9页(共10页)
(8)为了在运行时把d:\pic文件夹下的图形文件a.jpg装入图片框Picture1,所使用的语句为 【8】 。
(9)设有如下程序,
Private Sub Form_Click( )
Cls
a$="ABCDFG"
For i=1 To 6
Print Tab(12-i); 【9】
Next i
End Sub
程序运行后,单击窗体,结果如图所示,请填空。
(10)在窗体上画一个命令按钮,其名称为Command1,然后编写如下代码,
Option Base 1
Private Sub Command1_Click( )
Dim Arr
Arr=Array(43,68,-25,65,-78,12,-79,43,-94,72)
pos=0
neg=0
For k=1 To 10
If Arr(k)>0 Then
【10】
Else
【11】
End If
Next k
Print pos,neg
End Sub
以上程序的功能是,计算并输出数组Arr中10个数的正数之和pos与负数之和neg,
请填空。
(11)在窗体上画一个名为Command1的命令按钮,然后编写如下程序,
Private Sub Command1_Click( )
Dim i As Integer
Sum=0
n=InputBox("Enter a number")
n=Val(n)
For i=1 To n
Sum= 【12】
Next i
Print Sum
End Sub
Function fun(t As Integer)As Long
p=1
For i=1 To t
二级Visual Basic语言程序设计试卷 第10页(共10页)
p=p*i
Next i
【13】
End Function
以上程序的功能是,计算1!+2!+3!+…+n!,其中n从键盘输入,请填空。
(12)在窗体上画一个文本框,名称为Text1,然后编写如下程序,
Private Sub Form_Load( )
Open "d:\temp\dat.txt" For Output As #1
Text1.Text=""
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii=13 Then
If UCase(Text1.Text)= 【14】 Then
Close #1
End
Else
Write #1,【15】
Text1.Text=""
End If
End If
End Sub
以上程序的功能是:在D盘temp文件夹下建立一个名为dat.txt的文件,在文本框中输入字符,每次按回车键都把当前文本框中的内容写入文件dat.txt,并清除文本框中的内容:如果输入“END”,则不写入文件,直接结束程序。请填空。