1、二级 VISUAL+BASIC-29 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,然后再依次出栈,则元素出栈的顺序是_。(分数:2.50)A.12345ABCDEB.EDCBA54321C.ABCDE12345D.54321EDCBA2.下列叙述中正确的是_。(分数:2.50)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态
2、变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定3.在长度为 n 的有序线性表中进行二分法查找,最坏情况下需要比较的次数是_。 A.O(n) B.O(n2) C.O(log2n) D.O(nlog2n)(分数:2.50)A.B.C.D.4.下列叙述中正确的是_。(分数:2.50)A.顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C.顺序存储结构能存储有序表,链式存储结构不能存储有序表D.链式存储结构比顺序存储结构节省存储空间5.数据流图中带有箭头的线段表示的是_。(分数:2.50)A.控制流B.
3、事件驱动C.模块调用D.数据流6.在软件开发中,需求分析阶段可以使用的工具是_。(分数:2.50)A.NS 图B.DFD 图C.PAD 图D.程序流程图7.在面向对象方法中,不属于“对象”基本特点的是_。(分数:2.50)A.一致性B.分类性C.多态性D.标识唯一性8.一间宿舍可住多名学生,则实体宿舍和学生之间的联系是_。(分数:2.50)A.一对一B.一对多C.多对一D.多对多9.在数据管理技术发展的三个阶段中,数据共享最好的是_。(分数:2.50)A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同10.有三个关系 R、S 和 T 如下: R A B m 1 n 2 S B
4、C 1 3 3 5 T A B C m 1 3 由关系 R 和 S 通过运算得到关系 T,则所使用的运算为_。(分数:2.50)A.笛卡儿积B交C并D.自然连接11.设窗体上有名称为 Option1 的单选按钮,且程序中有语句: If Option1.Value=True Then 下面语句中与该语句不等价的是_。(分数:2.50)A.If Option1.Value ThenB.If Option1=True ThenC.If Value=True ThenD.If Option1 Then12.设窗体上有 1 个水平滚动条,已经通过属性窗口把它的 Max 属性设置为 1,Min 属性设置为
5、 100。下面叙述中正确的是_。(分数:2.50)A.程序运行时,若使滚动块向左移动,滚动条的 Value 属性值就增加B.程序运行时,若使滚动块向左移动,滚动条的 Value 属性值就减少C.由于滚动条的 Max 属性值小于 Min 属性值,程序会出错D.由于滚动条的 Max 属性值小于 Mink 属性值,程序运行时滚动条的长度会缩为一点,滚动块无法移动13.下列关于通用对话框 CommonDialog1 的叙述中,错误的是_。(分数:2.50)A.只要在“打开”对话框中选择了文件,并单击“打开”按钮,就可以将选中的文件打开B.使用 CommonDialog1.ShowColor 方法,可以
6、显示“颜色”对话框C.CancelError 属性用于控制用户单击“取消”按钮关闭对话框时,是否显示出错警告D.在显示“字体”对话框前,必须先设置 CommonDialog1 的 Flags 属性,否则会出错14.在利用菜单编辑器设计菜单时,为了把组合键“Alt+X”设置为“退出(X)”菜单项的访问键,可以将该菜单项的标题设置为_。(分数:2.50)A.退出(X Next k End Sub Sub prog(a()As Integer) n=UBound(A) For i=n To 2 step-1 For j=1 To n-1 if a(j)a(j+1)Then t=a(j):a(j)=a
7、(j+1):a(j+1)=t End If Next j Next i End Sub 程序运行时,单击命令按钮后显示的是_。(分数:2.50)A.1 2 3 4 5B.5 4 3 2 1C.0 1 2 3 4D.4 3 2 1 030.下面程序运行时,若输入“Visual Basic Programming”,则在窗体上输出的是_。 Private Sub Command1_Click() Dim count(25) AS Integer,ch As String ch=UCase(InputBox(“请输入字母字符串“) For k=1 To Len(ch) n=Asc(Mid(ch,k,
8、1)-Asc(“A“) If n=0 Then count(n)=count(n)+1 End If Next k m=count(0) For k=1 To 25 If mcount(k) Then m=count(k) End If Next k Print m End Sub(分数:2.50)A.0B.1C.2D.331.下面的数组声明语句中正确的是_。(分数:2.50)A.Dim gg1,5As StringB.Label1.BackStyle=1C.Dim gg(1 To 5)As StringD.Dim gg1:5,1:5As String32.在窗体上有一个命令按钮,然后编写如下
9、事件过程: Private Sub Command1_Click() Dim a(5)As String a(i)=Chr(Asc(“A“)+(i-1) Next For Each b In a Print b; Next End Sub 程序运行后,单击命令按钮,输出结果是_。(分数:2.50)A.ABCDEB.1 2 3 4 5C.abcdeD.出错信息33.Sub 过程与 Function 过程最根本的区别是_。(分数:2.50)A.Sub 过程名称与 Function 过程名称的格式不统一B.Function 过程可以带参数,Sub 过程不可以C.两种过程参数的传递方式不同D.Sub
10、过程的过程参数名称不能有返回值,而 Function 过程能通过过程名称得到返回值34.以下为用户自定义函数: Function Func(a As Integer,b As Integer)As Integer Static m As Integer,i As Integer m=O:i=2 i=i+m+i m=i+a+b Func=m End Function 在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim k As Integer,m As Integer,P As Integer k=4:m=1 p=Func(k,m)
11、Print p End Sub 程序运行后,单击命令按钮,输出结果为_。(分数:2.50)A.8B.9C.10D.1135.有如下的程序: Private Sub Commandl_Click() Dim k As Integer, m As Integer Dim P As Integer k=4: m=1 P=Fun(k, m): Print P; P=Fun(k, m): Print P End Sub Private Function Fun(a As Integer, b As Integer) Static m As Integer, i As Integer m=5:i=2 i=
12、i+m+1 m=i+a+b Fun=m/2 End Function 单击命令按钮后,输出结果为_(分数:2.50)A.2 2B.4 2C.5 5D.6 636.在窗体上画一个名称为 Command1 的命令按钮和一个名称为 Text1 的文本框,然后输写如下程序: Private Sub Commandl_Click( ) Dim x,y,z As Integer x=5 y=7 z=0 Text1.Text=“ Call Fun1(x,y,z) Text1.Text=Str(z) End Sub Sub Fun1(ByVal a As Integer,ByVal b As Integer,
13、c As Integer) c=a+b End Sub 程序运行后,如果单击命令按钮,则在文本框中显示的内容是(分数:2.50)A.0B.12C.Str(z)D.没有显示37.设在窗体上有个文本框,然后编写如下的事件过程: Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer) Const Alt=4 Const Key_F2= Next k End Sub Sub prog(a()As Integer) n=UBound(A) For i=n To 2 step-1 For j=1 To n-1 if a(j)a(j+1)
14、Then t=a(j):a(j)=a(j+1):a(j+1)=t End If Next j Next i End Sub 程序运行时,单击命令按钮后显示的是_。(分数:2.50)A.1 2 3 4 5B.5 4 3 2 1 C.0 1 2 3 4D.4 3 2 1 0解析:解析 程序对数组元素赋初值为 1、2、3、4、5。Ubound 函数返回数组可用的最大下标,过程prog 的功能是遍历数组并对数组中的元素进行排序,由条件 a(j)a(j+1)可知程序是将数组按从大到小排序。当用数组作为过程的参数时,使用的是“传地址”方式,因此程序输出的是排序后的数组元素值,即 5、4、3、2、1。故本题
15、选 B。30.下面程序运行时,若输入“Visual Basic Programming”,则在窗体上输出的是_。 Private Sub Command1_Click() Dim count(25) AS Integer,ch As String ch=UCase(InputBox(“请输入字母字符串“) For k=1 To Len(ch) n=Asc(Mid(ch,k,1)-Asc(“A“) If n=0 Then count(n)=count(n)+1 End If Next k m=count(0) For k=1 To 25 If mcount(k) Then m=count(k)
16、End If Next k Print m End Sub(分数:2.50)A.0B.1C.2D.3 解析:解析 根据题中的程序代码可知,ch 为输入字符串的大写状态,第一个 For 循环是依次取出字母,n 为取出字母与“A”字符的 ASCII 码差值,然后再赋给数组 count;第二个 For 循环是找出数组 count 中的最小值,因此,最后窗体上输出的结果为 3,即选项 D。31.下面的数组声明语句中正确的是_。(分数:2.50)A.Dim gg1,5As StringB.Label1.BackStyle=1C.Dim gg(1 To 5)As String D.Dim gg1:5,1:
17、5As String解析:解析 声明数组时,数组的默认下界为 0,如果希望下界不是 0,可以用关键字 To 规定下界。如选项 C 中,数组 gg 的索引从 1 到 5。32.在窗体上有一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim a(5)As String a(i)=Chr(Asc(“A“)+(i-1) Next For Each b In a Print b; Next End Sub 程序运行后,单击命令按钮,输出结果是_。(分数:2.50)A.ABCDE B.1 2 3 4 5C.abcdeD.出错信息解析:解析 本题考查数组的赋
18、值操作及 For EachIn 循环语句。本程序段首先定义了一个一维数组变量,然后用 For 循环为其赋值,Asc()函数的作用是返回字符的 ASCII 码,字符“A”的 ASCII 码为65,Chr()函数的作用是将 ASCII 码值变为相应的字符,而“a(i)=Chr(Asc(“A”)+(i-1)”的作用是将每次比原来大 1 的 ASCII 码值变为字符赋给 a,所以 a 的元素是“A,B,C,D,E”。For EachIn 用于输出 a 中元素的值,所以正确答案是选项 A。33.Sub 过程与 Function 过程最根本的区别是_。(分数:2.50)A.Sub 过程名称与 Functi
19、on 过程名称的格式不统一B.Function 过程可以带参数,Sub 过程不可以C.两种过程参数的传递方式不同D.Sub 过程的过程参数名称不能有返回值,而 Function 过程能通过过程名称得到返回值 解析:解析 两个函数的命名原则一致,均可带参数,可进行值传递与地址传递,不同在于是否有返回值。34.以下为用户自定义函数: Function Func(a As Integer,b As Integer)As Integer Static m As Integer,i As Integer m=O:i=2 i=i+m+i m=i+a+b Func=m End Function 在窗体上画一
20、个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim k As Integer,m As Integer,P As Integer k=4:m=1 p=Func(k,m) Print p End Sub 程序运行后,单击命令按钮,输出结果为_。(分数:2.50)A.8B.9 C.10D.11解析:解析 变量 i 的计算过程为 i=2+0+2=4,变量 m 的计算过程为 m=4+4+1=9,m 的值通过子函数名Func 返回。35.有如下的程序: Private Sub Commandl_Click() Dim k As Integer, m As
21、 Integer Dim P As Integer k=4: m=1 P=Fun(k, m): Print P; P=Fun(k, m): Print P End Sub Private Function Fun(a As Integer, b As Integer) Static m As Integer, i As Integer m=5:i=2 i=i+m+1 m=i+a+b Fun=m/2 End Function 单击命令按钮后,输出结果为_(分数:2.50)A.2 2B.4 2C.5 5D.6 6 解析:解析 在 Sub 过程中,程序段先定义了 3 个 Integer 型变量 k,
22、m,p,并赋给 k 初值为 4,m 的初值为 1,然后调用事件过程 Fun,并将它的值赋给 p;在事件过程 Fun 中定义了两个形参,参数的传送是通过引用实参,即将 k,m 的地址作为 a,b 的地址;在 Fun 中,将 m,i 定义为静态变量,所以第一次调用后的值仍然保留,但是 m,i 分别都有赋值语句,将它们的值变为 5,2,所以返回值不变,都是 6,6。36.在窗体上画一个名称为 Command1 的命令按钮和一个名称为 Text1 的文本框,然后输写如下程序: Private Sub Commandl_Click( ) Dim x,y,z As Integer x=5 y=7 z=0
23、Text1.Text=“ Call Fun1(x,y,z) Text1.Text=Str(z) End Sub Sub Fun1(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.没有显示解析:解析 过程 Funl 的参数 c 是按地址传递的(ByRef,默认的传递方式),而 Fun1 用语句 call Fun1(x,y,z)调用后,形参 c 的值为 12,则实参 z 的值亦为 12。37.设在窗体上有个文
24、本框,然后编写如下的事件过程: Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer) Const Alt=4 Const Key_F2=&H71 altdown%=(Shift And Alt)0 f2down%=(KeyCode=Key_F2) If altdown%And f2down%Then Text1.Text=“BBBBB“ End If End Sub 上述程序运行后,如果按 Shift+F2 键,则在文本框中显示的是_。(分数:2.50)A.Alt+F2B.BBBBBC.随机出几个数D.文本框内容无变化 解
25、析:解析 此题是有关 KeyDown 事件的题目,KeyDown 是当一个键被按下时所产生的事件,而 KeyUp是松开被按键时产生的事件。如果要判断是否按下了某个转换键,可以用逻辑运算符 And。例如,先定义了下面 3 个符号常量:ConstShift=1,Const Ctrl=2,Const Alt=4,然后用下面的语句判断是否按下Shift、Ctrl、Alt 键。 如果 Shift And Shift0,则按下了 Shift 键。 如果 Shift And Ctrl0,则按下了 Ctrl 键。 如果 Shift And Alt0,则按下了 Alt 键。 这里的 Shift 是 KeyDow
26、n 的第 2 个参数。此事件过程中的 If 后的条件语句如果为真,则是按下了Alt+F2,而本题中是按下了 Shift+F2,所以不执行 Then 语句,即文本框的内容无变化。38.要使菜单项 MenuOne 在程序运行时失效,使用的语句是_。(分数:2.50)A.MenuOne.Visible=TrueB.MenuOne.Visible=FalseC.MenuOne.Enabled=TrueD.MenuOne.Enabled=False 解析:解析 菜单控件的主要属性有 Caption、Name、Index、Enabled、Visible 等,其中 Enabled 和Visible 属性值为
27、逻辑值,Visible 属性用于表示菜单项是否可见,Enabled 属性用于表示菜单项是否可用。当 Enabled 属性值为 False 时,表示菜单项当前不可用;当属性值为 True 时,表示菜单项可用。39.在窗体上画一个文本框(其 Name 属性为 Text1),然后编写如下事件过程: Private Sub Form_Load() Text1.Text=“ “ Text1.SetFocus For i=1 To 9 Sum=Sum+i Next i Text1.Text=Sum End Sub 上述程序的运行结果是_。(分数:2.50)A.在文本框 Text1 中输出 45B.在文本框 Text1 中输出 0C.出错 D.在文本框 Text1 中输出不定值解析:解析 由于 Form_load 事件是在窗体加载时发生,所以此时窗体还没有显示,不能用“Tex1.SetFocus”语句获得焦点,故出错。如要改正,需要在此语句前加入“Me.Show”,显示窗体,则可以看到文本框已获得焦点,并执行循环语句,输出“45”。40.要获得当前驱动器应使用驱动器列表框的属性是_。(分数:2.50)A.PathB.Drive C.DirD.Pattern解析:解析 驱动器控件常用的属性是 Drive,返回当前驱动器号。