1、国家计算机二级(VB)72 及答案解析(总分:100.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.下列数据结构中,能用二分法进行查找的是_。 (分数:2.00)A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表2.对如下二叉树 (分数:2.00)A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA3.在窗体上画一个命令按钮,名称为 Command1,然后编写如下代码: Option Base 0 Private Sub Commandl_Click() Dim A(4)As integer,B(
2、4)As Integer For k=0 To 2 A(k+1)=InputBox(“请输入一个整数“) B(3-k)=A(k+1) Next k Print B(k) End Sub 程序运行后,单击命令按钮,在输入对话框中分别输入 2、4、6,输出结果为【 】 (分数:2.00)A.0B.2C.3D.44.下列过程定义语句中,参数不是对象的定义语句是( )。(分数:2.00)A.BorderStyle 的值设为 FixedSingle,此项设置值的作用即禁止最大化和最小化按钮B.窗体的 MaxButton 和 MinButton 值设为 FalseC.正常情况下新建的窗体都没有最大化和最小
3、化按钮D.该窗体可用鼠标拖动边框的方法改变窗体的大小5.在运行程序时,在文本框中输入新的内容,或在程序代码中改变 Text 的属性值,相应会触发到什么事件?(分数:2.00)A.GotFocusB.ClickC.ChangeD.DblClick6.下面哪个程序段能够正确裙带如果 AB,则 A=1,否则 A=-1 ?(分数:2.00)A.DO form1sexB.DO FORM form1C.RUN form1scxD.RUN FORM form17.在 Visual Basic 工程中,可以作为“启动对象”的程序是_。 (分数:2.00)A.任何窗体或标准模块B.任何窗体或过程C.Sub Ma
4、in 过程或其他任何模块D.Sub Main 过程或任何窗体8.有如下程序: Private Sub Commandl_Click() Dim a As Integer a=2 For i=1 To 3 Print Gad (a) Next i End Sub Function Gad (a As Integer) b=0 Static c b=b + 1 c= c + 1 Gad= a + b + C End Function 运行上面的程序后,单击命令按钮,输出结果为( )。 (分数:2.00)A.1 2 3B.2 3 4C.4 5 6D.1 4 69.为了使列表框中的项目呈多列显示,需要
5、设置的属性为_。 (分数:2.00)A.ColumnsB.StyleC.ListD.MultiSelect10.下列叙述中错误的是( )。(分数:2.00)A.标准模块文件的扩展名是.basB.标准模块文件是纯代码文件C.在标准模块中声明的全局变量可以在整个工程中使用D.在标准模块中不能定义过程11.设有声明语句 Dim b(-1 To 10,2 To 9,20)As Integer 则数组 b 中全部元素的个数是( )。 (分数:2.00)A.2310B.2016C.1500D.165812.只有将组合框的 Style 属性设置为何值时,才能触发 DblClick 事件?(分数:2.00)A
6、.0B.1C.2D.313.语句 Print 5/4*6/5 Mod 2 的输出结果是( )。 (分数:2.00)A.0B.1C.2D.314.下面的控件可作为其他控件容器的是( )。(分数:2.00)A.DELETE DATABASE 考生库B.DELETE DATABASE 考生库 RECYCLEC.DELETE DATABASE 考生库 DELETETABLESD.DELETE DATABASE 考生库 DELETETABLES RECYCLE15.若在某窗体模块中有如下事件过程 Private Sub Command1_Click(Index As Integer) End Sub 则
7、以下叙述中正确的是【 】 (分数:2.00)A.此事件过程与不带参数的事件过程没有区别B.有 1 个名称为 Command1 的窗体,单击此窗体则执行此事件过程C.有 1 个名称为 Command1 的控件数组,数组中有多个不同类型控件D.有 1 个名称为 Command1 的控件数组,数组中有多个相同类型控件16.有如下事件过程: Function UNC (ByVal x As Integer,ByVal y As Integer) As Integer Do While y0 sic=x/y x=y y=sic Loop UNC=x End Function 以下是该函数的调用过程,该程
8、序的运行结果是( )。 PriVate Sub COmmand1_Click() Dim a As Integer Dim b As Integer a=12 b=2 x=UNC (a,b) Print x End Sub (分数:2.00)A.0B.6C.2D.8017.以下叙述错误的是_。 (分数:2.00)A.用 Shell 函数可以执行扩展名为.exe 的应用程序B.若用 Static 定义通用过程,则该过程中的局部变量都被默认为 Static 类型C.Static 类型的变量可以在标准模块的声明部分定义D.全局变量必须在标准模块中用 Public 或 Global 声明18.在窗体上
9、画一个名称为 TxtA 的文本框,然后编写如下的事件过程: Private Sub TxtA_KeyPress(KeyAscii As Integer) End Sub 假定焦点已经位于文本框中,则能够触发 KeyPress 事件的操作是【 】 (分数:2.00)A.单击鼠标B.双击文本框C.鼠标滑过文本框D.按下键盘上的某个键19.在窗体上画一个通用对话框图,其 Name 属性为 Cont,瑞画一个命令按钮,Name 属性为 Command1,然后编写如下事件过程: Privute Sub Command1_Click( ) ContFileName=“ “ ContFlags=vbOFNF
10、ileMustExist ContFilter=“All Files| * . *“ ContFilterIndes_3 ContDialogTitle=“Open File“ ContAction=1 If ContFileName=“ “ Then MsgBox “No file selected“ Else Open ContFileName For Input As #1 Do While Not EOF(1) Input #1. b$ Print b$ Loop End If End Sub 以下各选项,对上述事件过程描述错误的是( )。 (分数:2.00)A.该事件过程用来建立一个
11、 Open 对话框,可以在这个对话框中选择要打开的文件B.选择后单击“打开”按钮,所选择的文件名即作为对话框的 FileName 属性值C.Open 对话框不仅仅用来选择一个文件,还可以打开、显示文件D.过程中“ContAction=1”用来建立 Open 对话框,它与 ContShowOpen 等价20.在窗体上画一个命令按钮,然后编写如下事件过程: Sub BTC(old Copy( ) As Integer,new Copy( ) As Integer) Dim i AS Integer For i=LBound(oldCopy( )To UBound(oldCopy( ) newCop
12、y(i)=oldCopy(i) Next i End Sub Private Sub Command1 _ Click( ) Dimm(10) As Integer,n(10)As Integer For i=1 To 10 m(i) =i*i Next i Call BTC(m,n) Print n(5) End Sub 程序运行后,单击命令按钮输出结果为( )。 (分数:2.00)A.65+13B.“电脑商情“C.中国D.x=y21.在窗体上画 2 个命令按钮,名称分别为 Command1、Command2,并编写如下程序: Const n=5,m=4 Dim a(m,n) Private
13、 Sub Command1-Click() k=1 For i=1 To m For i=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 i=1 To n If i=1 or i=m Then summ=summ+a(i,j) Else 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()的作用是在二
14、维数组 a 中存放 1 个 m 行 n 列的矩阵;过程Command2-Click()的作用是【 】 (分数:2.00)A.计算矩阵外围一圈元素的累加和B.计算矩阵除外围一圈以外的所有元素的累加和C.计算矩阵第 1 列和最后一列元素的累加和D.计算矩阵第 1 行和最后一行元素的累加和22.以下叙述中错误的是【 】(分数:2.00)A.打开一个工程文件时,系统自动装入与该工程有关的窗体文件B.保存 Visual Basic 程序时,应分别保存窗体文件及工程文件C.Visual Basic 应用程序只能以解释方式执行D.窗体文件包含该窗体及其控件的属性23.有如下程序段: Private Sub
15、Command1_Click( ) Dim a As Integer a=2 For i=1 To 3 Print G(a) Next i End Sub Function G(a As Integer) b=0 Static c b=b + 1 c=c + 1 G=a + b + c End Function 运行上面的程序后,单击命令按钮,输出结果为( )。 (分数:2.00)A.窗体文件的扩展名为frmB.一个窗体对应一个窗体文件C.Visual Basic 中的一个工程只包含一个窗体D.Visual Basic 中一个工程最多可以包含 255 个窗体24.下列程序运行结果是( )。 a
16、=25:b=-45 i=Not a=b Print i (分数:2.00)A.数据库集合B.用户C.数据库管理系统及相关软件D.操作系统25.在窗体上画一个名称为 Command1 的命令按钮,然后编写如下通用过程和命令按钮的 事件过程: Private Function fun(ByVal m As Integer) If m Mod 2 = 0 Then fun = 2 Else fun = 1 End If End Function Private Sub Command1_Click() Dim i As Integer, s As Integer s = 0 For i = 1 To
17、 5 s = s + fun(i) Next Print s End Sub 程序运行后,单击命令按钮,在窗体上显示的是_。 (分数:2.00)A.6B.7C.8D.926.设有如下通用过程: Public Sub Fun(a() As Integer, x As Integer) For i = 1 To 5 x = x + a(i) Next End Sub 在窗体上画一个名称为 Text1 的文本框和一个名称为 Command1 的命令按钮。然后编写如 下的事件过程: Private Sub Command1_Click() Dim arr(5) As Integer, n As Int
18、eger For i = 1 To 5 arr(i) = i + i Next Fun arr, n Text1.Text = Str(n) End Sub 程序运行后,单击命令按钮,则在文本框中显示的内容是_。 (分数:2.00)A.30B.25C.20D.1527.如果在窗体上添加一个通用对话框控件 DBT,那么语句“DBTAction=4”的作用是( )。(分数:2.00)A.编译器是检查程序错误的第一道防线B.源程序编译过程中没有出现任何错误,执行时就不会发生错误C.Java 的异常处理机制是检查程序错误的第二道防线D.选项 A) 和 C) 正确28.单击命令按钮时,下列程序的执行结果
19、为( )。 Private Sub Command1_Click() Dim a As Integer,b As Integer,c As Integer a=2:b=3:C=4 Print P2(c,b,A) End Sub Private Function P1(x As Integer,y As Integer,z As Integer) P1=2 * X + y + 3 * z End Function Private Function P2(x As Integer,y As Integer,z As Integer) P2=P1(z,x,y) + X End Function (分
20、数:2.00)A.21B.19C.17D.3429.单击命令按钮时,下列程序代码的运行结果为( )。 Private Sub Command1_Click() print MyFunc(20,18) End Sub Public Function MyFunc (m As Integer,n As Integer)As Integer Do While m n Do While m n:m=m - n:Loop Do While m n:n=n - m:Loop Loop MyFunc=m End FunCtion (分数:2.00)A.0B.2C.4D.630.用什么语句可以选择指定的表项或
21、取消已选择的表项?(分数:2.00)A.January 10,1979B.#January 10,1997#C.“January 10,1997“D.“str2=“;str2 End Sub Function YAG (a3As Integer) Dim T#,i t=1 For i=LBound(a) To UBound(a) t=t * a(i) Next i YAG =t End Function (分数:3.00)填空项 1:_37.随机文件使用 Put 语句写数据,使用 1 语句读数据。(分数:3.00)填空项 1:_38.下面程序是由鼠标事件在窗体上画图,如果按下鼠标将可以画图,双
22、击窗体可以清除所画图形。补充完整下面的程序。 首先在窗体层定义如下变量: Dim PaintStart As Boolean 编写如下事件过程: Private Sub Form_Load1 DrawWidth=2 ForeColor=vbGreen End Sub Private Sub Form_MouseDown(Button As Integer,Shift As Integer,_ X As Single,Y As Single) 2 End Sub Private Sub Form_MouseMove(Button As Integer,Shift As Integer,_ X A
23、s Single,Y As Single) If PaintStart Then PSet(X,Y) End If End Sub Private Sub Form_MouseUp(Button As Integer,Shift As Integer,_ X As Single,Y As Single) 3 End Sub Private Sub Form_Db1Click4 5 End Sub (分数:3.00)填空项 1:_39.在窗体上有一个命令按钮,然后编如下事件过程: Function SR( x As Double)As Double Select Case Sgn(x) Case
24、 1 SR=Sqr(x) Exit Function Case 0 SR=0 Case-1 SR=-1 End Select End Function Private Sub Command1 _ Click1 Dim Msg,SRN Dim N AS Double N=InputBox(“请输入要计算平方根的数“) Msg=N“str2=“;str2 End Sub Function YAG (a3As Integer) Dim T#,i t=1 For i=LBound(a) To UBound(a) t=t * a(i) Next i YAG =t End Function (分数:3.
25、00)填空项 1:_ (正确答案:strl=24 str2=720)解析:程序首先调用循环语句为数组 a、b 赋值,其中 a(i)=I;b(i)=I,且数 组 a 的上下界分别为 1 和4,数组 b 的上下界分别为 2 和 6;接着将数组 a 作为参数调用 YAG 过程,在 YAG 过程中,定义了两个变量 t 及 I,I 作为循环语句 For 的变量,它的初始 值和终值分别为数组的上下界,循环体为 t=t * a(i),即将 a(i)的值乘以 t,然后再赋 给 t,当循环结束后,程序返回的就是数组 a 中的各元素的积;同理程序将数组 b 作为参 数传递给 YAG 过程后返回数组 b 中各元素的
26、积,运行程序结束后,输出结果为:strX=24 str2=720。37.随机文件使用 Put 语句写数据,使用 1 语句读数据。(分数:3.00)填空项 1:_ (正确答案:Get)解析:随机访问模式中文件的写操作使用 Put 命令,Put 命令是将一个记录变量的内容写入所代开的磁盘文件中指定的记录位置上;随机访问模式中文件的读操作使用 Get 命令,Get 命令是从磁盘文件将一条记录号指定的记录内容读入记录变量中。38.下面程序是由鼠标事件在窗体上画图,如果按下鼠标将可以画图,双击窗体可以清除所画图形。补充完整下面的程序。 首先在窗体层定义如下变量: Dim PaintStart As Bo
27、olean 编写如下事件过程: Private Sub Form_Load1 DrawWidth=2 ForeColor=vbGreen End Sub Private Sub Form_MouseDown(Button As Integer,Shift As Integer,_ X As Single,Y As Single) 2 End Sub Private Sub Form_MouseMove(Button As Integer,Shift As Integer,_ X As Single,Y As Single) If PaintStart Then PSet(X,Y) End If
28、 End Sub Private Sub Form_MouseUp(Button As Integer,Shift As Integer,_ X As Single,Y As Single) 3 End Sub Private Sub Form_Db1Click4 5 End Sub (分数:3.00)填空项 1:_ (正确答案:PaintStart=True)解析:上述过程定义了一个布尔型变量 PaintStart,当按下鼠标左键(触发 MouseDown 事件)时,由题意按下鼠标键表示能画图,所以该变量的值为 True,而松开鼠标左键(触发 MouseUp 事件)时,该变量为False;如
29、果变量 PaintStart 为 True,则移动鼠标(触发 MouseMove 事件),将在窗体上绘出一个点;除鼠标事件外,上述程序还含有一个 Load 事件过程和一个 DblClick 事件过程,其中 Load 事件过程用来设置画点的大小和颜色, DblClick 事件过程用来清除所画的图形,函数 Pset 是画点语句,用它可以在(x,y)处画一个点。39.在窗体上有一个命令按钮,然后编如下事件过程: Function SR( x As Double)As Double Select Case Sgn(x) Case 1 SR=Sqr(x) Exit Function Case 0 SR=
30、0 Case-1 SR=-1 End Select End Function Private Sub Command1 _ Click1 Dim Msg,SRN Dim N AS Double N=InputBox(“请输入要计算平方根的数“) Msg=N&“的平方根“ Select Case SR(N) Case 0 Msg=Msg &“是 0“ Case-1 Msg=Msg&“是一个虚数“ Case ElSe Msg=Msg &“是“& SR(N) End Select MsgBox Msg End Sub 程序运行后,单击命令按钮,在输入对话框内输入1,输出结果是 2。 (分数:3.00
31、)填空项 1:_ (正确答案:-1 的平方根是一个虚数)解析:在 Sub 过程中,定义了一个 Double 型变量 N,并调用 InputBox 函数,给 N 赋值,即将从对话框中输入的 -1 赋给 N;通过运算符“&”,将 N 与字符串“的平方根”连接起来并赋给 Msg;在条件块语句中将 N 作为参数,调用 SR 事件过程,将 Function 过程的返回值作为测试表达式;在 SR 函数中,调用Sgn 函数测试 x 的值为正数还是负数,如果是正数,那么就执行条件块语句中的 SR=Sqr(x),即将 x 的平方根作为返回值,如果 x 值为零,Sp 函数返回值为零,那么就将 0 作为返回值;如果
32、为负数,Sgn 函数返回值为- 1,SR=-1,即将-1 作为返回值;在 Sub 程序的条件块语句中,根据 SR 返回值的不同,执行不同操作,当返回值为 0,将 Msg 字符串加“是 0”,赋给 Msg,如果是-1,将 Msg 加“是一个虚数”赋给Msg,当为其他时,即在平方根时,将字符串 Msg 加“是”,再加上这个数的平方根赋给 Msg,并用MsgBox 函数输出。40.在窗体上画两个组合框,其名称分别为 Combo1、Combo2,然后画两个标签,名称分别为Label1、Label2,如图所示,程序运行后,如果在某个组合框中选择一个项目,则把所选中的项目在其下面的标签中显示出来。请填空。
33、 (分数:3.00)填空项 1:_ (正确答案:tmplabel)解析:41.在 KeyPress 事件过程中,KeyAscii 是所按键的 1 值。(分数:3.00)填空项 1:_ (正确答案:ASCII)解析:当按下键盘上的某个键时,触发 KeyPress 事件过程,该事件用到的 KeyAscii 作为参数,此参数是一个预定义的变量,执行 KeyPress 事件过程时,KeyAscii 是所按键的 ASCII 码。 42.下面程序是用来打印九九乘法表的,请补充完整。 Dim i As Integer,j As Integer,Strl$ Strl=“ “ For i=1 To 9 Forj
34、=1 To 9 If 1 Then Strl=Strl + Str$(j)+“X“+Str$(i)+“=“+Str$(Val(i * j) Else Strl=Strl & Chr(13) 2 End If Next j Next i Print Str (分数:3.00)填空项 1:_ (正确答案:j=i)解析:Exit 语句总是出现在 If 语句或 Select Case 语句内部,而 If 语句或 Select Case 语句在循环内嵌套,用 Exit 语句中断循环。函数首先定义了两个 Integer 型变量 i、 j,并将空格赋给 Strl;第一个For 循环的变量 I 从 1 到 9
35、 步长为 1,第二个循环的变量 i 也是从 1 到 9 步长为 l,循环体为选择结构,它是用来输出 i*j 的值,所以 j 的值应该小于此时 i 的值,那么 If 的判断语句为 j=i,当满足条件时执行 Then 后面的语句,即输出 i*j 的值,如果不满足执行 Else 后面的语句,并跳出内循环。43.在 E 盘当前目录文件夹下建立一个名为“Studenttxt的顺序文件,要求用 InputBox 函数输入 5个学生的姓名(StuName)、年级(StuGrade)和年龄(StuAge)。 Private Sub Form _ Click1 2 For i=1 To 5 StuName=In
36、putBox(“请输入姓名“) StuGrade=InputBox(“请输入年级号“) StuAge=InputBox(“请输入年龄“) 3 Next i 4 End Sub (分数:3.00)填空项 1:_ (正确答案:Open“E:/Studenttxt“ For Output As #1)解析:在 Form _ Click 过程中,要在文件中写入数据,首先要建立一个文件,建立文件用 Open 语句,文件名必须是全称;因为要建立的文件为空文件,所以可以认为不能从它里面读出数据,只能写入数据在For“模式”中应该用“Output”,所以在第一个空处应填入的语句是“Open”E:/Studen
37、ttxt“ For Output As #1”;在 For 循环语句中,首先调用 InputBox 函数,给出提示信息,并将接收到的信息依次赋给相应的变量,然后将它们写入文件中,因为 StuName,StuGrade,StuAge 为变量名,不能用双引号,所以在第二个空处应填入的语句是“Write #1,StuName,StuGrade,StuAge”;当对文件写完以后,就要关闭文件,关闭文件用 Close 语句,关闭文件的格式为 Close#文件号,#文件号,文件号即为打开文件时的文件号,所以第三个空应填入的语句是“Close #1”。44.下面的程序用于根据文本框 Test 中输入的内容进
38、行以下处理: 若 Text 为 1,则打印“您的成绩为优秀!”;若 Text 为 2,则打印“您的成绩为良好!”;若 Text 为 3,则打印“您的成绩为一般”;否则打印“您的成绩一般以下!”,请填空。 Private Sub Command1_Click1 Selct Case Val(Text1.Text) Case 2 Print “您的成绩为优秀!“ Case 3 Print “您的成绩为良好!“ Case 4 Print “您的成绩为一般!“ Case Else Print “您的成绩为一般以下!“ End Select End Sub (分数:3.00)填空项 1:_ (正确答案:
39、1)解析:函数调用了 Val(Text1Text)函数将从文本框中得到的字符串转化为数据,将转换来的数据作为情况语句的测试条件。因为当输入 1 时,则打印“您的成绩为优秀!”;所以当测试表达式的值与之相同时,就执行该 Case 分支的语句,同样当输入 2,3 等其他数字时执行其他的 Case 分支。45.设有下列循环: x=1 Do x=x+2 Print x Loop Until 1 要求程序运行时执行 3 次循环体,请填空。 (分数:3.00)填空项 1:_ (正确答案:x5 或 x6 或 x=7)解析:本题考查的考点是有关 DoUntil 循环的。本题要求运行时执行 3 次循环体,由于 DoUntil 循环是后判断条件的,第一次循环后 x 的值为 3;第二次循环后 x 的值为 5:第三次循环后 x 的值为 7,此时应该使得 Until 后面的条件满足以便于跳出循环,故此应填 x5(实际上填写 x6,x=7 都应该可以)。