1、二级 VISUAL+BASIC-70及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.对长度为 n的有序链表进行查找,最坏情况下需要的比较次数为 nB.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D.对长度为 n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)2.算法的时间复杂度是指_。(分数:2.50)A.算法的执行时间B.算法所处理的数据量C.算法程序中的语句或指令条数
2、D.算法在执行过程中所需要的基本运算次数3.软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是_。(分数:2.50)A.编辑软件B.操作系统C.教务管理系统D.浏览器4.软件(程序)调试的任务是_。(分数:2.50)A.诊断和改正程序中的错误B.尽可能多地发现程序中的错误C.发现并改正程序中的所有错误D.确定程序中错误的性质5.数据流程图(DFD 图)是_。(分数:2.50)A.软件概要设计的工具B.软件详细设计的工具C.结构化方法的需求分析工具D.面向对象方法的需求分析工具6.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于_。(分数:2.50)
3、A.定义阶段B.开发阶段C.维护阶段D.上述三个阶段7.数据库管理系统中负责数据模式定义的语言是_。(分数:2.50)A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言8.在学生管理的关系数据库中,存取一个学生信息的数据单位是_。(分数:2.50)A.文件B.数据库C.字段D.记录9.数据库设计中,用 E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的_。(分数:2.50)A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段10.有两个关系 R和 T如下: (分数:2.50)A.选择B.投影C交D并11.在 VB集成环境中要结束一个正在运行的工程,
4、可单击工具栏上的一个按钮,这个按钮是_。 A B C D (分数:2.50)A.B.C.D.12.设 x是整型变量,与函数 IIf(x0,-x,x)有相同结果的代数式是_。(分数:2.50)A.|x|B.-|x|CxD.-x13.设窗体文件中有下面的事件过程: Private Sub Command1_Click() Dim s a%=100 Print a End Sub 其中变量 a和 s的数据类型分别是_。(分数:2.50)A.整型,整型B.变体型,变体型C.整型,变体型D.变体型,整型14.下面哪个属性肯定不是框架控件的属性?_。(分数:2.50)A.TextB.CaptionC.Le
5、ftD.Enabled15.下面不能在信息框中输出“VB”的是_。(分数:2.50)A.MsgBox “VB“B.x=MsgBox(“VB“)C.MsgBox(“VB“)D.Call MsgBox “VB“16.窗体上有一个名称为 Option1的单选按钮数组,程序运行时,当单击某个单选按钮时,会调用下面的事件过程 Private Sub Option1_Click(Index As Integer) End Sub 下面关于此过程的参数 Index的叙述中正确的是_。(分数:2.50)A.Index为 1表示单选按钮被选中,为 0表示未选中B.Index的值可正可负C.Index的值用来区分
6、哪个单选按钮被选中D.Index表示数组中单选按钮的数量17.设窗体中有一个文本框 Text1,若在程序中执行了 Text1.SetFocus,则触发_。(分数:2.50)A.Text1的 SetFocus事件B.Text1的 GotFocus事件C.Text1的 LostFocus事件D.窗体的 GotFocus事件18.VB中有 3个键盘事件:KeyPress、KeyDown、KeyUp,若光标在 Text1文本框中,则每输入一个字母_。(分数:2.50)A.这 3个事件都会触发B.只触发 KeyPress事件C.只触发 KeyDown、KeyUp 事件D.不触发其中任何一个事件19.下面
7、关于标准模块的叙述中错误的是_。(分数:2.50)A.标准模块中可以声明全局变量B.标准模块中可以包含一个 Sub Main过程,但此过程不能被设置为启动过程C.标准模块中可以包含一些 Public过程D.一个工程中可以含有多个标准模块20.设窗体的名称为 Form1,标题为 Win,则窗体的 MouseDown事件过程的过程名是_。(分数:2.50)A.Form1_MouseDownB.Win_MouseDownC.Form_MouseDownD.MouseDown_Form121.下面正确使用动态数组的是_。(分数:2.50)A.Dim arr()As IntegerReDim arr(3
8、,5)B.Dim arr()As IntegerReDim arr(50)As StringC.Dim arr()ReDim arr(50)As IntegerD.Dim arr(50)As IntegerReDim arr(20)22.下面是求最大公约数的函数的首部: Function gcd(ByVal x As Integer, ByVal y As Integer)As Integer 若要输出 8、12、16 这 3个数的最大公约数,下面正确的语句是_。(分数:2.50)A.Print gcd(8,12),gcd(12,16),gcd(16,8)B.Print gcd(8,12,16
9、)C.Print gcd(8),gcd(12),gcd(16)D.Print gcd(8,gcd(12,16)23.有下而的程序段,其功能是按图 1所示的规律输出数据: Dim a(3,5)As Integer For i=1 To 3 For j=1 To 5 A(i,j)=i+j Print a(i,j); Next Print Next 若要按图 2所示的规律继续输出数据,则接在上述程序段后面的程序段应该是_。 (分数:2.50)A.For i=1 To 5For j=1 To 3Print a(j,i);NextPrintNextB.For i=1 To 3For j=1 To 5Pr
10、int a(j,i);NextPrintNextC.For j=1 To 5For i=1 To 3Print a(j,i);NextPrintNextD.For i=1 To 5For j=1 To 3Print a(i,j);NextPrintNext24.窗体上有一个 Text1文本框、一个 Command1命令按钮,并有以下程序: Private Sub Command1_Click() Dim n If Text1.Text“123456“ Then n=n+1 Print “口令输入错误“ Next Print Next 若要按图 2所示的规律继续输出数据,则接在上述程序段后面的程
11、序段应该是_。 (分数:2.50)A.For i=1 To 5For j=1 To 3Print a(j,i);NextPrintNext B.For i=1 To 3For j=1 To 5Print a(j,i);NextPrintNextC.For j=1 To 5For i=1 To 3Print a(j,i);NextPrintNextD.For i=1 To 5For j=1 To 3Print a(i,j);NextPrintNext解析:解析 由图 2可知,输出结果由 5行 3列构成,嵌套 for循环中的外循环可指定行数,内循环指定列数,所以 B选项不符合要求。C 和 D选项实
12、质是相同的,输出结果也相同,但是输出内容和图 2是不同的,正确答案只有 A选项。24.窗体上有一个 Text1文本框、一个 Command1命令按钮,并有以下程序: Private Sub Command1_Click() Dim n If Text1.Text“123456“ Then n=n+1 Print “口令输入错误“&n&“次“ End If End Sub 希望程序运行时得到图 1所示的效果,即:输入口令,单击“确认口令”命令按钮,若输入的口令不是“123456”,则在窗体上显示输入错误口令的次数。但上面的程序实际显示的是图 2所示的效果,程序需要修改。下面修改方案中正确的是_。
13、 (分数:2.50)A.在 Dim n语句的下面添加一句:n=0B.把 Print“口令输入错误“&n&“次“改为 Print“口令输入错误“+n+“次“C.把 Print“口令输入错误“&n&“次“改为 Print“口令输入错误“&Str(n)&“次“D.把 Dim n改为 Static n 解析:解析 在事件过程中将一个变量定义为 Static静态类型,则每次调用该过程时,该变量都会保留上次调用后的值。本题中 n没有被定义为静态,所以每次调用都会被初始化为 0。25.要求当鼠标在图片框 P1中移动时,立即在图片框中显示鼠标的位置坐标。下面能正确实现上述功能的事件过程是_。(分数:2.50)
14、A.Private Sub P1_MouseNove(Button AS Integer, Shift As Integer, X As Single, Y As Single)Print X,YEnd SubB.Private Sub P1_MouseDown(Button AS Integer, Shift As Integer, X As Single, Y As Single)Picture.Print X,YEnd SubC.Private Sub P1_MouseNove(Button AS Integer, Shift As Integer, X As Single, Y As
15、Single)P1.Print X,YEnd Sub D.Private Sub Form_MouseMove(Button AS Integer, Shift As Integer, X As Single, Y As Single)P1.Print X,YEnd Sub解析:解析 当鼠标在图片框 P1中移动时会触发图片框 P1的 MouseMove事件,所以 A、B、D 选项都是错误的。26.计算 的近似值的一个公式是 (分数:2.50)A.把 For k=3 To n改为 For k=1 To nB.把 n=20000改为 n=20000000C.把 For k=3 To n改为 For
16、 k=3 To n Step 2 D.把 PI=1改为 PI=0解析:解析 由 的近似值公式可知,公式右边除第一项外各项的分母部分全是奇数,而且是连续的,所以 for循环步长应该设置为 2。而默认步长是 1,所以应该把 For k=3 To n改为 For k=3 To n Step 2。27.下面程序计算并输出的是_。 Private Sub Comand1_Click() a=10 s=0 Do s=s+a*a*a a=a-1 Loop Until a=0 Print s End Sub A.13+23+33+103的值 B.10!+3!+2!+1!的值 C.(1+2+3+10)3的值 D
17、.10个 103的和(分数:2.50)A. B.C.D.解析:解析 由程序可知,每次循环 s都会累加一个数,而这个数是 a的 3次方,a 则从 10递减到 0然后退出循环,所以输出的结果应该是 1 3 +2 3 +3 3 +10 3 的值。28.若在窗体模块的声明部分声明了如下自定义类型和数组: Private Type rec Code As Integer Caption As String End Type Dim arr(5) As rec 则下面的输出语句中正确的是_。(分数:2.50)A.Print arr.Code(2),arr.Caption(2)B.Print arr.Cod
18、e,arr.CaptionC.Print arr(2).Code,arr(2).Caption D.Print Code(2),Caption(2)解析:解析 根据数组的用法可知 A和 B选项不能正确获得数组元素 arr(2),取出 rec类型的数组元素后,可以通过“.”运算符获取该类型元素中各个组成部分的值,如 arr(2)答案 Code。29.设窗体上有一个通用对话框控件 CD1,希望在执行下面程序时,打开如下图所示的文件对话框。 Private Sub Comand1_Click() CD1.DialogTitle=“打开文件“ CD1.InitDir=“C:“ CD1.Filter=“
19、所有文件|*.*|Word 文档|*.doc|文本文件|*.Txt“ CD1.FileName=“ CD1.Action=1 If CD1.FileName=“Then Print“未打开文件“ Else Print“要打开文件“& CD1.FileName End If End Sub 但实际显示的对话框中列出了 C:/下的所有文件和文件夹,“文件类型”一栏中显示的是“所有文件”。下面的修改方案中正确的是_。 (分数:2.50)A.把 CD1.Action=1改为 CD1.Action=2B.把”CD1.Filter=“后面字符串中的“所有文件“改为“文本文件“C.在语句 CD1.Actio
20、n=1的前面添加:CD1.FiherIndex=3 D.把 CD1.FileName=“改为 CD1.FileName=“文本文件“解析:解析 CD1.Filter 属性设置了可选的文件类型,如果要设置默认的文件类型,只需设置FilterIndex属性即可,由于“文本文件|*.Txt”位置为 3,所以需要在语句 CD1答案 Action=1的前面添加:CD1.FilterIndex=3。30.下面程序运行时,若输入 395,则输出结果是_。 Private Sub Comand1_Click() Dim x% x=InputBox(“请输入一个 3位整数“) Print x Mod i0,x/
21、100,(x Mod 100)/10 End Sub(分数:2.50)A.3 9 5B.5 3 9 C.5 9 3D.3 5 9解析:解析 395 除以 10的余数为 5,395 整除 100的结果为 3,395 除以 100的余数是 95,而 95整除10的结果是 9,所以输出结果应为 5 3 9。即本题的答案为 B。31.窗体上有 List1、List2 两个列表框,List1 中有若干列表项(见下图),并有下面的程序: (分数:2.50)A.在 List2中插入了“外语”、“物理”两项B.在 List1中删除了“外语”、“物理”两项C.同时产生 A)和 B)的结果 D.把 List1中最
22、后 1个列表项删除并插入到 List2中解析:解析 由程序可知,对于列表 List1中被选中的项,先添加到 List2,然后将它们从 List1中删除,所以 A和 B选项都会发生。32.设工程中有 2个窗体:Form1、Form2,Form1 为启动窗体,Form2 中有菜单。其结构如下表所示。要求在程序运行时,在 Form1的文本框 Text1中输入口令并按 Enter键(Enter 键的 ASCII码为 13)后,隐藏Form1,显示 Form2。若口令为“Teacher”,所有菜单项都可见;否则看不到“成绩录入”菜单项。为此,某人在 Form1窗体文件中编写如下程序: Private S
23、ub Text1_KeyPress(KeyAscii As Integer) If KeyAscii=13 Then If Text1.Text=“Teacher“ Then Form2.input.visible=True Else Form2.input.visible=False End If End If Form1.Hide Form2.Show End Sub 菜单结构 标题 名称 级别 成绩管理 Mark 1 成绩查询 Query 2 成绩录入 Input 2 程序运行时发现刚输入口令时就隐藏了 Form1,显示了 Form2,程序需要修改。下面修改方案中正确的是_。(分数:2.
24、50)A.把 Form1中 Text1文本框及相关程序放到 Form2窗体中B.把 Form1.Hide、Form2.Show 两行移到 2个 End If之间 C.把 If KeyAscii=13 Then改为 If KeyAscii=“Teaeher“ ThenD.把 2个 Form2.input.Visible中的“Form2”删去解析:解析 根据程序可知,只要单击了键盘,无论是否为 Enter键,都会执行Form1.Hide、Form2.Show 两行代码,所以需要将这两行代码放到两个 End If之间,也就是说只有在按Enter键才会执行这两行代码。33.某人编写了下面的程序,希望能
25、把 Text1文本框中的内容写到 out.txt文件中。 Private Sub Comand1_Click() Open “out.txt“ For Output As #2 Print “Text1“ Close #2 End Sub 调试时发现没有达到目的,为实现上述目的,应做的修改是_。(分数:2.50)A.把 Print “Text1“改为 Print #2,Text1 B.把 Print “Text1“改为 Print Text1C.把 Print “Text1“改为 Write “Text1“D.把所有#2 改为#1解析:解析 要将文本内容写入文本文件,可以使用 Print,因为
26、 out.txt的文件号为#2,所以可以使用语句“Print #2,Text1”实现写入操作,其中#2 指要写入的文件,Text1 指要写入的内容。34.窗体上有一个名为 Command1的命令按钮,并有下面的程序: Private Sub Comand1_Click() Dim arr(5)As Integer For k=1 To 5 arr(k)=k Next k prog arr() For k=1 To 5 Print arr(k) Next k End Sub Sub prog(a()As Integer) n=Ubound(a) For i=n To 2 step-1 For j
27、=1 To n-1 If a(j)a(j+1)Then t=a(j):a(j)=a(j+1):a(j+1)=t End If Next j Next i End Sub 程序运行时,单击命令按钮后显示的是_。(分数:2.50)A.12345B.54321 C.01234D.43210解析:解析 prog 的作用是将给定的数组按照从大到小的顺序进行排序,由于数组 arr中 5个元素是1,2,3,4,5,所以对 arr数组进行排序后的结果为 54321。35.下面程序运行时,若输入“Visual Basic Programming”,则在窗体上输出的是_。 Private Sub Comand1_
28、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) End If Next k Print m End Sub(分数:2.50)A.0B.1C.2D.3 解析:解析 程序的功能是将输入的字母字符串进行逐个遍历,
29、并统计每个字母出现的次数存放在数组中,然后将最大的数组元素值(字母出现的最多次数)赋给 m,最后输出 m。显然出现最多的是 a,次数为3。36.执行以下程序后输出的是_。 Private Sub Command1_Click() Ch$=“AABCDEFGH“ Print Mid(Righ(ch$,6),Len(left(ch$,4),2) End Sub(分数:2.50)A.CDEFGHB.ABCDC.FG D.AB解析:解析 Right(ch$,6)得到的结果是 CDEFGH;37.设在窗体 Form1上有一个列表框 List1,其中有若干个项目。要求单击列表框中某一项时,把该项显示在窗体
30、上,正确的事件过程是_。(分数:2.50)A.Prvate Sub List1_Click()Print List1.TextEnd Sub B.Private Sub Form1_Click()Print List1.TextEnd SubC.Private Sub List1_Click()Print Form1.TextEnd SubD.Private Sub Form1_Click()List1.Print List1.TextEnd Sub解析:解析 题目要求是单击列表框中的某一项,因此触发的事件过程名是 List1_Click,可以排除B、D。而 C中的 Print Form1.T
31、ext,本身就是错误的,窗体中没有 Text这个属性。38.以下选项中,不合法的 Visual Basic的变量名是_。(分数:2.50)A.a5bB._xyz C.a_bD.andif解析:解析 变量的命名必须以字母开头,由字母、汉字、数字或下划线组成,不能在变量中出现句点“.”、空格或者嵌入字符:!、&、%、#、$,所以本题的答案为 B。39.以下数组定义语句中,错误的是_。(分数:2.50)A.Static a(10)As IntegerB.Dim c(3,1 To 4)C.Dim d(-10) D.Dim b(0 To 5,1 To 3)As Integer解析:解析 考查的知识点是数组定义。本数组中只有一个参数,表示上界,此处不可为负数,即本题的答案为 C。40.现有语句:y=IIf(x0,x Mod 3,0) 设 x=10,则 y的值是_。(分数:2.50)A.0B.1 C.3D.语句有错解析:解析 当 Iif函数的条件为真时,返回 Iif函数第 2个参数表达式的值,当 Iif函数的条件为似时,返回 Iif函数第 3个参数表达式的值,显然此题的条件为真,所以本题的答案为 B。