1、二级 VISUAL+BASIC-75 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列选项中不符合良好程序设计风格的是_。(分数:2.50)A.源程序要文档化B.数据说明的次序要规范化C.避免滥用 goto 语句D.模块设计要保证高耦合、高内聚2.从工程管理角度,软件设计一般分为两步完成,它们是_。(分数:2.50)A.概要设计与详细设计B.数据设计与接口设计C.软件结构设计与数据设计D.过程设计与数据设计3.下列选项中不属于软件生命周期开发阶段任务的是_。(分数:2.50)A.软件测试B.概要设计C.软件维护D.详细设计4.在数据库
2、系统中,用户所见的数据模式为_。(分数:2.50)A.概念模式B.外模式C.内模式D.物理模式5.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和_。(分数:2.50)A.编码设计B.测试阶段C.运行阶段D.物理设计6.设有如下三个关系表: (分数:2.50)A.T=RSB.T=RSC.T=RSD.T=R/S7.下列叙述中正确的是_。(分数:2.50)A.一个算法的空间复杂度大,则其空间复杂度也必定大B.一个算法的空间复杂度大,则其时间复杂度必定小C.一个算法的时间复杂度大,则其空间复杂度必定小D.上述三种说法都不对8.在长度为 64 的有序线性表中进行顺序查找,最坏情况下需要比较的次数
3、为_。(分数:2.50)A.63B.64C.6D.79.数据库技术的根本目标是要解决数据的_。(分数:2.50)A.存储问题B.共享问题C.安全问题D.保护问题10.对下列二叉树: (分数:2.50)A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG11.以下叙述中正确的是_。(分数:2.50)A.窗体的 Name 属性指定窗体的名称,用来标识一个窗体B.窗体的 Name 属性值是显示在窗体标题栏中文本C.可以在运行期间改变窗体的 Name 属性的值D.窗体的 Name 属性值可以为空12.以下叙述中错误的是_。(分数:2.50)A.打开一个工程文件时,系统自动装入与该工
4、程有关的窗体文件B.保存 Visual Basic 程序时,应分别保存窗体文件及工程文件C.Visual Basic 应用程序只能以解释方式执行D.窗体文件包含该窗体及其控件的属性13.设 a=2,b=3,c=4,下列表达式的值是_。 Not a=c Or 4*c=b2 And ba+c(分数:2.50)A.-1B.1C.TrueD.False14.设有如下的用户定义类型: Type Student number As String nalae As String age AS Integer End Type 则以下正确引用该类型成员的代码是_。(分数:2.50)A.Student.name
5、=“李明”s.name=“李明”B.Dim s AS Students.name=“李明”C.Dim s As Type Students.name=“李明”D.Dim s As Types.name=“李明”15.设 a=5,b=6,c=7,d=8,执行下列语句后,X 的值为_。 X=IIf(ab)And(cd),10,20)(分数:2.50)A.10B.20C.TrueD.False16.执行以下程序段后,变量 c$的值为_。 a$=“Visual Basic Programming“ b$=“Quick“ c$=b$ Next j Print Next i End Sub 程序运行后,单
6、击命令按钮,窗体上显示的 是_。(分数:2.50)A.1 2 32 4 63 6 9B.1 2 33 4 54 5 6C.1 2 32 5 83 6 9D.1 2 34 5 67 8 923.在窗体上画一个命令按钮,名称为 Command1,然后编写如下代码: Option Base 0 Private Sub Command1_Click() Dim A(4)As Integer, B(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 程序运行后,单击命令按
7、钮,在输入对话框中分别输入 2、4、6,输入结果为_。(分数:2.50)A.0B.2C.3D.424.有以下程序: Option Base 1 Dim arr()As Integer Private Sub Form_Click() Dim i As Integer, j As Integer ReDim art(3, 2) For i=1 To 3 For j=1 To 2 arr(i,j)=i*2+j Next j Next i ReDim Preserve arr(1,4) For j=3 To 4 art(3,j)=j+9 Next j Print art(3,2);art(3,4)
8、End Sub 程序运行后,单击窗体,输出结果为_。(分数:2.50)A.8 13B.0 13C.7 12D.0 025.以下叙述中正确的是_。(分数:2.50)A.一个 Sub 过程至少要一个 Exit Sub 语句B.一个 Sub 过程必须有一个 End Sub 语句C.可以在 Sub 过程中定义一个 Function 过程,但不能定义 Sub 过程D.调用一个 Function 过程可以获得多个返回值26.有以下程序: Sub subP(b()As Integer) For i=1To4 b(i)=2-i Next i End Sub Private Sub Command1_Click
9、() Dim a(1 To 4)As Integer a(1)=5 a(2)=6 a(3)=7 a(4)=8 subP a() For i=1 To 4 Print a(i) Next i End Sub 运行上面的程序,单击命令按钮,输出结果为_。(分数:2.50)A.2468B.5678C.10121416D.出错27.设有如下通用过程: Public Function Fun(xStr As String) Dim tStr As String, srtL As Integer tStr“ strL=Len(xStr) i=1 Do While i=strL/2 tStr=tStr Ne
10、xt j Print Next i End Sub 程序运行后,单击命令按钮,窗体上显示的 是_。(分数:2.50)A.1 2 32 4 63 6 9B.1 2 33 4 54 5 6C.1 2 32 5 83 6 9 D.1 2 34 5 67 8 9解析:解析 程序定义了一个二维数组,并通过一个两重循环将这个二维数组进行初始化并输出在窗体上。23.在窗体上画一个命令按钮,名称为 Command1,然后编写如下代码: Option Base 0 Private Sub Command1_Click() Dim A(4)As Integer, B(4)As Integer For k=0 To
11、 2 A(k+1)=InputBox(“请输入一个整数“) B(3-k)=A(k+1) Next k Print B(k) End Sub 程序运行后,单击命令按钮,在输入对话框中分别输入 2、4、6,输入结果为_。(分数:2.50)A.0B.2 C.3D.4解析:解析 通过分析上面的程序可知,在执行完 For-Next 循环后,k 的值为 3,因此在窗体上要显示的是 B(3),而 B(3)=A(1),A(1)就是一开始在 InputBox 中输入的数 2,因此输出结果为 2,故选 B。24.有以下程序: Option Base 1 Dim arr()As Integer Private Su
12、b Form_Click() Dim i As Integer, j As Integer ReDim art(3, 2) For i=1 To 3 For j=1 To 2 arr(i,j)=i*2+j Next j Next i ReDim Preserve arr(1,4) For j=3 To 4 art(3,j)=j+9 Next j Print art(3,2);art(3,4) End Sub 程序运行后,单击窗体,输出结果为_。(分数:2.50)A.8 13 B.0 13C.7 12D.0 0解析:解析 通过分析上面的程序可知,一开始定义了一个动态数组 arr(),接着使用:R
13、eDim 语句重新定义了数组,使动态数组 arr()变为 arr(3,2),并给这个数组进行初始化,再使用 ReDim Preserve 语句再一次定义了动态数组 arr(),使它变为 arr(3,4),同时由于使用了 Preserve 语句使新的数组保留了原来数组的内容,并再对这个数组的部分元素进行初始化。此时 arr(3,2)=8,arr(3,4)=13,故选 A。25.以下叙述中正确的是_。(分数:2.50)A.一个 Sub 过程至少要一个 Exit Sub 语句B.一个 Sub 过程必须有一个 End Sub 语句 C.可以在 Sub 过程中定义一个 Function 过程,但不能定义
14、 Sub 过程D.调用一个 Function 过程可以获得多个返回值解析:解析 一个 Sub 过程可以没有 Exit Sub 语句,但是必须要有一个 End Sub 语句,则 A 错,B 正确;Sub 过程、Function 过程不可以嵌套定义,则 C 错;调用一个 Function 过程只有一个返回值,则 D 错。故选 B。26.有以下程序: Sub subP(b()As Integer) For i=1To4 b(i)=2-i Next i End Sub Private Sub Command1_Click() Dim a(1 To 4)As Integer a(1)=5 a(2)=6
15、a(3)=7 a(4)=8 subP a() For i=1 To 4 Print a(i) Next i End Sub 运行上面的程序,单击命令按钮,输出结果为_。(分数:2.50)A.2468 B.5678C.10121416D.出错解析:解析 数组参数在过程中只能按地址传递。因此实参数组会随着形参数组的改变而改变。27.设有如下通用过程: Public Function Fun(xStr As String) Dim tStr As String, srtL As Integer tStr“ strL=Len(xStr) i=1 Do While i=strL/2 tStr=tStr
16、& Mid(xStr,i,1)&Mid (xStr,strL-i+1,1) i=i+1 Loop Fun=tStr End Function 在窗体上画一个名称为 Text1 的文本框和一个名称为 Command1 的命令按钮,然后编写如下的事件过程: Private Sub Command1_Click() Dim S1 As String S1=“abcdef“ Text1.Text=UCase(Fun(S1) End Sub 程序运行后,单击命令按钮,则 Text1 中显示的是_。(分数:2.50)A.ABCDEFB.abcdefC.AFBECD D.DEFABC解析:解析 通过分析“t
17、Str=tStr & Mid(xStr,i,1)&Mid(xStr,strL-i+1,1)”语句可知,取字符顺序是这样的,先取字符串 xStr 的第一个字符,再取最后一个字符,接着取第二个字符和倒数第二个字符,依次类推,直至将字符串 xStr 中的字符全部取完,因此 Function Fun 的返回值为 afbecd,再执行“Text1.Text=UCase(Fun(S1)”语句得 AFBECD,故选 C。28.在窗体上画一个名称为 TxtA 的文本框,然后编写如下的事件过程: Private Sub TxtA_KeyPress(KeyAscii As Integer) End Sub 假定焦
18、点已经位于文本框中,则能够触发 KeyPress 事件的操作是_。(分数:2.50)A.单击鼠标B.双击文本框C.鼠标滑过文本框D.按下键盘上的某个键 解析:解析 在具有焦点的控件中按下键盘上的任意一个键就可以触发 KeyPress 事件,故选 D。29.在窗体上画一个命令按钮和两个文本框,其名称分别为 Command1、Text1 和 Text2,然后编写如下程序: Dim S1 As String, S2 As String Private Sub Form_Load() Text1.Text=“ Text2.Text=“ End Sub Private Sub Text1_KeyDown
19、(Keycode As Integer, Shift As Integer) S2=s2&Chr(KeyCode) End Sub Private Sub Text1_KeyPress(Keynscii As Integer) S1=S1&chr(KeyAscii) End Sub Private Sub Command1_Click() Text1.Text=S2 Text2.Text=S1 S1=“ S2=“ End Sub 程序运行后,在 Text1 中输入“abc”,然后单击命令按钮,在文本框 Text1 和 Text2 中显示的内容分别为_。(分数:2.50)A.abe 和 ABCB
20、.abc 和 abeC.ABC 和 abc D.ABC 和 ABC解析:解析 执行 Text1_KeyPress 事件后,S1 中的内容就是 Text1 中输入的内容“abe”,而执行Text1_KeyDown 事件后,由于小写英文字母的 KeyCode 等于大写字母的 ASCII 码,则 S2 的内容为“ABC”,故选 C。30.以下说法正确的是_。(分数:2.50)A.任何时候都可以通过执行“工具”菜单中的“菜单编辑器”命令打开菜单编辑器B.只有当某个窗体为当前活动窗体时,才能打开菜单编辑器 C.任何时候都可以通过单击标准工具栏上的“菜单编辑器”按钮打开菜单编辑器D.只有当代码窗品为当前活
21、动窗口时,才能找开菜单编辑器解析:解析 只有当一个窗体为当前的活动窗体的时候,才能开打菜单编辑器,则 A、C、D 均错,只有B 是正确的,故选 B。31.在窗体上画一个通用对话框,其名称为 CommonDialog1,然后画一个命令按钮,并编写如下 事件过程: Private Sub Command1_Click() CommonDialoa1.Filter=“All Files(*.*)|*.*Text Files“&_ “(*.txt)*.txt| Executable Files(*.exe)|*.exe“ CommonDialog1.Filterindex=3 CommonDialog
22、1.ShowOpen MsgBox CommonDialog1.FileName End Sub 程序运行后,单击命令按钮,将显示一个“打开”对话框,此时在“文件类型”框中显示的是_。(分数:2.50)A.All Files(*.*)B.Text files(*.txt)C.Executable Files(*.ext) D.不确定解析:解析 由于 CommonDialog1.FilterIndex=3,而 Executable Files(*.exe)的 FilterIndex=3,则在“文件类型”框中显示的是 Executable Files(*.exe),故选 C。32.以下叙述错误的是
23、_。(分数:2.50)A.一个工程中可以包含多个窗体文件B.在一个窗体文件中用 Public 定义的通用过程不能被其他窗体调用 C.窗体和标准模块需要分别保存为不同类型的磁盘文件D.(用 Dim 定义的窗体层变量只能在该窗体中使用)解析:解析 在一个窗体文件中用 Public 定义的通用过程在整个工程中均有效,因此可以被其他窗体调用,所以 B 是错误的,其他选项没有错误,故选 B。33.以下叙述中错误的是_。(分数:2.50)A.语句“Dim a,b As Integer”声明了两个整型变量 B.不能在标准模块中定义 Static 型变量C.窗体层变量必须先声明,后使用D.在事件过程或通用过程
24、内定义的变量是局部变量解析:解析 当在一个 Dim 语句中定义多个变量时,每个变量都要用 As 声明其类型,否则该变量被看作是变体类型,所以 A 是错误的,其他选项均没有错误,故选 A。34.设有语句:Open “d:/Test.txt“ For Output As#1,以下叙述中错误的是_。(分数:2.50)A.若 d 盘根目录下无 Test.txt 文件,则该语句创建此文件B.用该语句建立的文件的文件号为 1C.该语句打开 d 盘根目录下一个已存在的文件 Test.txt,之后就可以从文件中读取信息 D.执行该语句后,就可以通过 Print#语句向文件 Test.txt 中写入信息解析:解
25、析 用 Output 模式打开的义件,可以向里面写入信息,而不能从中读取信息,则 C 是错误的,其他选项均是正确的,故选 C。35.以下叙述中错误的是_。(分数:2.50)A.顺序文件中的数据只能按顺序读写B.对同一个文件,可以用不同的方式和不同的文件号打开C.执行 Close 语句,可将文件缓冲区中的数据写到文件中D.随机文件中各记录的长度是随机的 解析:解析 随机文件中各个记录的长度是固定的,则 D 是错误的,其他选项均是王确的,故选 D。36.执行下面的程序,单击窗体后在窗体上显示的结果是_。 Private Sub form_Click() Dim Str1 As String, St
26、r2 As String Dim Str3 As String, I As Integer Str1=“e“ for I=1 To 2 Str2=Ucase(Str1) Str1=Str2&Str1 Str3=Str3&Str1 Str1=Chr(Asc(Str1)+I) Next I Print Str3 End Sub(分数:2.50)A.EeFF B.eEfFC.EEFFD.eeFF解析:解析 本题的难点是熟悉下列字符串处理内部函数:Asc(x)为求单个字符 ASCII 代码函数,Chr$(x)返回以 x 为 ASCII 代码值的字符,Ucase$(x)将 x 字符串中所有小写字符改为大
27、写字符。37.在窗体上画一个名称为 Command1 的命令按钮和一个名称为 Text1 的文本框,然后编写如下程序: Private Sub Command1_Click() Dim x,y,z As Integer x=5:y=7:z=0 Text1.Text=“ Call p1(x,y,z) Text1.Text=Str(z) End Sub Private Sub p1(byval a As Integer, ByVal b As Integer, c As Integer) c=a+b End Sub 程序运行后,如果单击命令按钮,则在文本框中显示的内容是_。(分数:2.50)A.0
28、B.12 C.Sir(z)D.没有显示解析:解析 本题的难点是是按地址传递(传址)参数的概念。变量 x 和 y 是按值传递参数,变量 z 默认用“ByRef”替代,则表明参数是按地址传递(传址)参数,所以 z 将变量 c 的值 12 传回,并转变成字符串赋值给文本框 Text1。38.在窗体上添加一个命令按钮,名为 Command1,然后为该命令按钮编写如下事件过程,该过程执行结果为_。 Option Base 1 Private Sub Command1_Click() Dim a As Variant a=Array(1,2,3,4) j=1 for i=4 To 1 Step-1 s=s
29、+a(i)*j j=j*10 Next i Print s End Sub(分数:2.50)A.4321B.1234 C.34D.12解析:解析 本题的难点是数组在循环中的计算。计算过程为“4+310+2100+11000=1234”如果改成“for i=1 To 4”后,其结果为 A。39.在窗体上画一个名称为 Text1 的文本框和一个名称为 Command1 的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim array 1 (10,10)As Integer Dim i,j As Integer for i=1 To 3 for j=2
30、 To 4 array1(i,j)=i+j Next j Next i Text1.Text=array1(2,3)+array1(3,4) End Sub 程序运行后,单击命令按钮,在文本框中显示的值是_。(分数:2.50)A.12 B.13C.14D.15解析:解析 本题的难点是嵌套循环的计算。根据“array1(i,j)=i+j”可知,“array1(i,j)”的值为两个下标值之和,所以“array1(2,3)+array1(3,4)”的值为“2+3+3+4=12”。40.在窗体上画一个名称为 Command1 的命令按钮和一个名称为 Text1 的文本框,然后编写如下程序: Priva
31、te Sub Command1_Click() Dim x,y,z As Integer x=5 y=7 z=0 Text1.Text=“ Call P1(x,y,z) Text1.Text=Str(z) End Sub Sub P1(ByVal a As Integer, ByVal b As Integer, c As Integer) c=a+b End Sub 程序运行后,如果单击命令按钮,则在文本框中显示的内容是_。(分数:2.50)A.0B.12 C.Str(z)D.没有显示解析:解析 本题的难点是虚实结合的参数传送方式。在子过程中变量 a 和 b 按值传送,变量 c 按地址传送。在子过程中变量“c=a+b=5+7=12”,通过虚实结合将 c 的值赋给主过程 z,经字符转换为“z”在文本框中输出。