1、全国计算机等级考试二级 VISUAL+BASIC真题 2009年 9月及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.下列数据结构中,属于非线性结构的是(分数:2.00)A.循环队列B.带链队列C.二叉树D.带链栈2.下列数据结构中,能够按照“先进后出”原则存取数据的是(分数:2.00)A.循环队列B.栈C.队列D.二叉树3.对于循环队列,下列叙述中正确的是(分数:2.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针4.算法的空间复杂度是指(分数:2
2、.00)A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数5.软件设计中划分模块的一个准则是(分数:2.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合6.下列选项中不属于结构化程序设计原则的是(分数:2.00)A.可封装B.自顶向下C.模块化D.逐步求精7.软件详细设计产生的图如下。 (分数:2.00)A.N-S图B.PAD图C.程序流程图D.E-R图8.数据库管理系统是(分数:2.00)A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统9.在 E-R中
3、,用来表示实体联系的图形是(分数:2.00)A.椭圆形B.矩形C.菱形D.三角形10.有 3个关系 R、S 和 T如下。 (分数:2.00)A.选择B.投影C.交D.并11.以下变量名中合法的是(分数:2.00)A.x2-1B.printC.str_nD.2x12.把数学表达式 (分数:2.00)A.(5x+3)/(2y-6)B.x*5+3/2*y-6C.(5*x+3)(2*y-6)D.(x*5+3)/(y*2-6)13.下面有关标准模块的叙述中,错误的是(分数:2.00)A.标准模块不完全由代码组成,还可以有窗体B.标准模块中的 Private过程不能被工程中的其他模块调用C.标准模块的文件
4、扩展名为.basD.标准模块中的全局变量可以被工程中的任何模块引用14.下面控件中,没有 Caption属性的是(分数:2.00)A.复选框B.单选按钮C.组合框D.框架15.用来设置文字字体是否斜体的属性是(分数:2.00)A.FontUnderlineB.FontBoldC.FontSlopeD.Fontltalic16.若看到程序中有以下事件过程,则可以肯定的是,当程序运行时 Private SubClick_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) Print “VB Program“ E
5、nd Sub ) 用鼠标左键单击名称为“Command1“的命令按钮时,执行此过程 ) 用鼠标左键单击名称为“MouseDown“的命令按钮时,执行此过程 ) 用鼠标右键单击名称为“MouseDown“的控件时,执行此过程 ) 用鼠标左键或右键单击名称为“Click“的控件时,执行此过程(分数:2.00)A.B.C.D.17.可以产生 3050(含 30和 50) 之间的随机整数的表达式是(分数:2.00)A.Int(Rnd*21+30)B.Int(Rnd*20+30)C.Int(Rnd*50-Rnd*30)D.Int(Rnd*30+50)18.在程序运行时,下面的叙述中正确的是(分数:2.0
6、0)A.用鼠标右键单击窗体中无控件的部分,会执行窗体的 FormLoad事件过程B.用鼠标左键单击窗体的标题栏,会执行窗体的 Form_Click事件过程C.只载入而不显示窗体,也会执行窗体的 Form_Load事件过程D.载入窗体后,每次显示该窗体时,都会执行窗体的 Form_Click事件过程19.窗体上有名称为 Commandl的命令按钮和名称为 Text1的文本框 Private Sub Command1_Cliek() Text1.Text=“程序设计“ Text1.SetFocus End Sub Private Sub Text1_GotFocus() Text1.Text=“等
7、级考试“ End Sub 运行以上程序,单击命令按钮后 ) 文本框中显示的是“程序设计”,且焦点在文本框中 ) 文本框中显示的是“等级考试”,且焦点在文本框中 ) 文本框中显示的是“程序设计”,且焦点在命令按钮上 ) 文本框中显示的是“等级考试”,且焦点在命令按钮上(分数:2.00)A.B.C.D.20.设窗体上有名称为 Option1的单选按钮,且程序中有语句: If Option1.Value=True Then 下面语句中与该语句不等价的是 ) If Option1.Value Then ) If Option1=True Then ) If Value=True Then ) If O
8、ption1 Then(分数:2.00)A.B.C.D.21.设窗体上有 1个水平滚动条,已经通过属性窗口把它的 Max属性设置为 1,Min 属性设置为 100。下面叙述中正确的是(分数:2.00)A.程序运行时,若使滚动块向左移动,滚动条的 Value属性值就增加B.程序运行时,若使滚动块向左移动,滚动条的 Value属性值就减少C.由于滚动条的 Max属性值小于 Min属性值,程序会出错D.由于滚动条的 Max属性值小于 Min属性值,程序运行时滚动条的长度会缩为一点,滚动块无法移动22.有如下过程代码: Sub var_dim() Static numa As Integer Dim
9、numb As Integer numa=numa+2 numb=numb+1 print numa;mumb End Sub 连续 3次调用 var_dim.过程,第 3次调用时输出的是 ) 2 1 ) 2 3 ) 6 1 ) 6 3(分数:2.00)A.B.C.D.23.在窗体上画 1个命令按钮,并编写如下事件过程: Private Sub Command1_Click() For i=5 To 1 Step-0.8 Print Int(i); Next i End Sub 运行程序,单击命令按钮,窗体上显示的内容为 ) 5 4 3 2 1 1 ) 4 4 3 2 1 ) 4 3 2 1
10、1 ) 4 4 3 2 1 1(分数:2.00)A.B.C.D.24.在窗体上画 1个命令按钮,并编写如下事件过程: Private Sub Command1_Click() Dima(3,3) For m=1 To 3 For n=1 To 3 If n=m Or n=4-m Then a(m,n)=m+n Else a(m,n)=0 End If Print a(m,n); Next n Print Next m End Sub 运行程序,单击命令按钮,窗体上显示的内容为 ) 2 0 0 ) 2 0 4 ) 2 3 0 ) 2 0 0 0 4 0 0 4 0 3 4 0 0 4 5 0 0
11、 6 4 0 6 0 0 6 0 5 6(分数:2.00)A.B.C.D.25.设有以下函数过程: Function fun(a As Integer,b As Integer) Dim c As Integer If ab Then c=a:a=b:b=c End If c=0 Do Loop Until c Mod b=0 fun=c End Function 若调用函数 fun时的实际参数都是自然数,则函数返回的是 ) a、b 的最大公约数 ) a、b 的最小公倍数 ) a 除以 b的余数 ) a除以 b的商的整数部分(分数:2.00)A.B.C.D.26.窗体上有 1个名称为 Text
12、1的文本框;1 个名称为 Timer的计时器控件,其 Interval属性值为5000,Enabled 属性值是 True。 Timer1 的事件过程如下: Private Sub Timer1_Timer() Static flag As Integer If flag=0 Then flag=1 flag=-flag If flag=1 Then Text1.ForeColor=y End Sub 运行程序后单击命令按钮,窗体上显示的是 ) 100 100 ) 100 120 ) 110 100 ) 110 120(分数:2.00)A.B.C.D.29.设 a、b 都是自然数,为求 a除以
13、 b的余数,某人编写了以下函数: Function fun(a As Integer,b As Integer) While ab a=a-b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是 ) 把 a=a-b改为 a=b-a ) 把 a=a-b改为 a=a/b ) 把 While ab改为 While ab ) 把 While ab 改为 While a=b(分数:2.00)A.B.C.D.30.下列关于通用对话框 CommonDialog1的叙述中,错误的是(分数:2.00)A.只要在“打开”对话框中选择了文件,并单击“打
14、开”按钮,就可以将选中的文件打开B.使用 CommonDialogShowColor方法,可以显示“颜色”对话框C.CancelError属性用于控制用户单击“取消”按钮关闭对话框时,是否显示出错警告D.在显示“字体”对话框前,必须先设置 CommonDialogl的 Flags属性,否则会出错31.在利用菜单编辑器设计菜单时,为了把组合键“Alt+X”设置为“退出(X)”菜单项的访问键,可以将该菜单项的标题设置为(分数:2.00)A.退出(Xmumb End Sub 连续 3次调用 var_dim.过程,第 3次调用时输出的是 ) 2 1 ) 2 3 ) 6 1 ) 6 3(分数:2.00)
15、A.B.C. D.解析:解析 由题意可知,numa 是静态变量,所以 3次调用过程该变量值是累加的,而 numb是动态变量,每次调用过程,该变量值都被初始化为 0,所以 3次调用该过程后输出的结果是 6和 1。23.在窗体上画 1个命令按钮,并编写如下事件过程: Private Sub Command1_Click() For i=5 To 1 Step-0.8 Print Int(i); Next i End Sub 运行程序,单击命令按钮,窗体上显示的内容为 ) 5 4 3 2 1 1 ) 4 4 3 2 1 ) 4 3 2 1 1 ) 4 4 3 2 1 1(分数:2.00)A. B.C
16、.D.解析:解析 题中所述程序是一个初值为 5,步长为-0.8,终值为 1的循环过程。第一次执行时,循环变量 i=5,Print Int(i)的输出结果为在窗体上打印数字 5,其中 Int()函数取不大于 i的最大整数;第2次循环,i=4.2,输出结果为 4;第 3次、第 4次输出结果分别为 3和 2;第 5次循环,i=1.8,输出结果为 1;第 6次循环,i=1,输出结果为 1。第 6次循环后跳出循环,整个程序结束。24.在窗体上画 1个命令按钮,并编写如下事件过程: Private Sub Command1_Click() Dima(3,3) For m=1 To 3 For n=1 To
17、 3 If n=m Or n=4-m Then a(m,n)=m+n Else a(m,n)=0 End If Print a(m,n); Next n Print Next m End Sub 运行程序,单击命令按钮,窗体上显示的内容为 ) 2 0 0 ) 2 0 4 ) 2 3 0 ) 2 0 0 0 4 0 0 4 0 3 4 0 0 4 5 0 0 6 4 0 6 0 0 6 0 5 6(分数:2.00)A.B. C.D.解析:解析 当 m=1时,如果 n=1,满足条件 m=n,执行 Then语句 a(1,1)=m+n=2;当 n=2时,不满足 If语句中的条件,执行 Else语句 a
18、(1,2)=0;当 n=3时,满足 If条件 n=4-m,执行 Then语句 a(1,3)=m+n=4。同理可得,当 m=2时,得到的结果为 0,4,0;当 m=3时,结果为 4,0,6。25.设有以下函数过程: Function fun(a As Integer,b As Integer) Dim c As Integer If ab Then c=a:a=b:b=c End If c=0 Do Loop Until c Mod b=0 fun=c End Function 若调用函数 fun时的实际参数都是自然数,则函数返回的是 ) a、b 的最大公约数 ) a、b 的最小公倍数 ) a
19、除以 b的余数 ) a除以 b的商的整数部分(分数:2.00)A.B. C.D.解析:解析 题中所述函数过程中,If 语句用来保证数 a大于数 b,如果数 a小于数 b,则将两者的值交换。取模运算符 Mod用来求余数,即结果是数 c整除数 b所得的余数。c 等于 a值的累加,其值在逐步增大,c 当然能整除 a;而循环结束的条件为 c是否能整除 b,当刚好整除时跳出循环体,所以 c的值能整除 a和 b的最小值,因此 Do Loop循环语句运行的结果为 a和 b的最小公倍数。26.窗体上有 1个名称为 Text1的文本框;1 个名称为 Timer的计时器控件,其 Interval属性值为5000,
20、Enabled 属性值是 True。 Timer1 的事件过程如下: Private Sub Timer1_Timer() Static flag As Integer If flag=0 Then flag=1 flag=-flag If flag=1 Then Text1.ForeColor=y End Sub 运行程序后单击命令按钮,窗体上显示的是 ) 100 100 ) 100 120 ) 110 100 ) 110 120(分数:2.00)A.B. C.D.解析:解析 按照局部变量覆盖全局变量的原则,Command1_Click 中的 x变量为局部变量,其初值为0;y 变量为全局变量
21、,其初值为 20,x、y 均加 100得到答案 B)。29.设 a、b 都是自然数,为求 a除以 b的余数,某人编写了以下函数: Function fun(a As Integer,b As Integer) While ab a=a-b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是 ) 把 a=a-b改为 a=b-a ) 把 a=a-b改为 a=a/b ) 把 While ab改为 While ab ) 把 While ab 改为 While a=b(分数:2.00)A.B.C.D. 解析:解析 当 a=b时,余数应该为
22、0,而不是 a,程序执行结果会跳出循环使 fun=a,应该继续循环,正确答案为 D)。30.下列关于通用对话框 CommonDialog1的叙述中,错误的是(分数:2.00)A.只要在“打开”对话框中选择了文件,并单击“打开”按钮,就可以将选中的文件打开 B.使用 CommonDialogShowColor方法,可以显示“颜色”对话框C.CancelError属性用于控制用户单击“取消”按钮关闭对话框时,是否显示出错警告D.在显示“字体”对话框前,必须先设置 CommonDialogl的 Flags属性,否则会出错解析:解析 “打开”对话框的功能是由用户从目录中选择一个将要打开的文件,但“打开
23、”对话框并不能真正打开一个文件,它只提供了一个打开文件的用户界面,供用户选择所要打开的文件,所以正确答案为 A) 。31.在利用菜单编辑器设计菜单时,为了把组合键“Alt+X”设置为“退出(X)”菜单项的访问键,可以将该菜单项的标题设置为(分数:2.00)A.退出(X&)B.退出(& C.退出(X#)D.退出(#解析:解析 如果在菜单标题的某个字母前加一个“&”符号,那么该字母就成了热键字母,并且在窗体上显示时,该字母有下画线;在操作时同时按“Alt“键和该字母,就可以选择这个菜单选项,所以正确答案为 B)。32.在窗体上画 1个命令按钮和 1个文本框,其名称分别为 Command1和 Tex
24、t1,再编写如下程序: Dim ss As String Private Sub Text1_KeyPress(KeyAscii As Integer) If Chr(KeyAscii) “ Then ss=ss+Chr(KeyAscii) End Sub Private Sub Command1_Click() Dim m As String,i As Integer For i=Len(ss) To 1 Step-1 m=m+Mid(ss,i,1) Next Text1.Text=UCase(m) End Sub 运行程序后,在文本框中输入“Number100”,并单击命令按钮,则文本框中
25、显示的是 ) NUMBER 100 ) REBMUN ) REBMUN 100 ) 001 REBMUN(分数:2.00)A.B.C.D. 解析:解析 题目中程序是将 ss字符串进行反向排列,并放到 m中去。其中 Number空格后的 100被当成字符串来处理,最后结果是将“Number100”反向排列,并通过 UCase()函数将所有字母转换成大写,得到 001 REBMUN。33.窗体的左右两端各有 1条直线,名称分别为 Line1、Line2;名称为 Shape1的圆靠在左边的 Line1直线上(见图);另有 1个名称为 Timer1的计时器控件,其 Enabled属性值是 True。要
26、求程序运行后,圆每秒向右移动 100,当圆遇到 Line2 时则停止移动。 (分数:2.00)A.B. C.D.解析:解析 Timer1 中用了一个循环,只要圆没有到最右边的直线 Line2处,这个圆就会一直向右移动。但因为 Timer1中本来已经通过设置 Interval属性来控制循环,Timer 事件中的循环重复了,所以答案为B) 。34.下列有关文件的叙述中,正确的是(分数:2.00)A.以 Output方式打开一个不存在的文件时,系统将显示出错信息B.以 Append方式打开的文件,既可以进行读操作,也可以进行写操作C.在随机文件中,每个记录的长度是固定的 D.无论是顺序文件还是随机文
27、件,其打开的语句和打开方式都是完全相同的解析:解析 以 Output模式打开文件时,如果文件名指定的文件不存在,则会自动建立一个文件,系统不会显示错误信息,所以选项 A)是错误的;以 Append模式打开文件时,是从文件当前结束开始写入数据,且保留原有数据,但是不能读数据,所以选项 B)是错误的;随机文件是以记录为单位,有一组固定长度的记录顺序排列而成,并且给每个记录赋予了记录号以便查找,所以选项 C)是正确的;随机文件和顺序文件的打开语句和打开方式是不同的,所以选项 D)是错误的。35.窗体如图 1所示。要求程序运行时,在文本框 Text1中输入一个姓氏,单击“删除”按钮(名称为Comman
28、d1),则可删除列表框 List1中所有该姓氏的项目。若编写以下程序来实现此功能: (分数:2.00)A. B.C.D.解析:解析 错误原因:每一次删除列表框满足项,列表框的项目数目就会相应地减少,所以就出现了漏删内容。如果把循环变量 k改成从 List1.ListCout-1到 0,从最后一个项目往第一个项目查找,满足条件就删除该项目,那么就不会出现遗漏现象,所以正确答案为 A)。二、B填空题/B(总题数:9,分数:30.00)36.某二叉树有 5个度为 2的节点及 3个度为 1的节点,则该二叉树中共有 1 个节点。(分数:2.00)填空项 1:_ (正确答案:14)解析:解析 在二叉树中,
29、度为 0的节点数是度为 2的节点数加 1,故二叉树中节点数的总和为度为 0的节点数、度为 1的节点数及度为 2的节点数三者相加,得出结果为 14个节点。37.程序流程图中的菱形框表示的是 1。(分数:2.00)填空项 1:_ (正确答案:逻辑判断)解析:解析 绘制流程图时事实描述用椭圆形表示、行动方案用矩形表示、问题用菱形表示、箭头代表流动方向。38.软件开发过程主要分为需求分析、设计、编码与测试 4个阶段,其中 1 阶段产生“软件需求规格说明书”。(分数:2.00)填空项 1:_ (正确答案:需求分析)解析:解析 需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审等
30、4方面,产生的主要文档为软件需求规格说明书,它可以为用户、分析人员和设计人员之间的交流提供方便,直接支持目标软件系统的确认,也可以作为控制软件开发进程的依据。39.在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为 1。(分数:2.00)填空项 1:_ (正确答案:多对多)解析:解析 一名学生可以选择多门课程,一门课程也可以由多名学生选择,因此是多对多的联系。40.人员基本信启、一般包括身份证号、姓名、性别、年龄等。其中可以作为主关键字的是 1。(分数:2.00)填空项 1:_ (正确答案:身份证号)解析:解析 主关键字是表中区别不同的记录的标识
31、,在该表中只有身份证号能具有这个作用,所以用其作为主关键字。41.工程中有 Form1、Form2 两个窗体,Form1 窗体外观如图 1所示。程序运行时,在 Form1中名称为Text1的文本框中输入_个数值(圆的半径),然后单击命令按钮“计算并显示”(其名称为 Command1),则显示 Form2窗体,且根据输入的圆的半径计算圆的面积,并在 Form2的窗体上显示出来,如图 2所示。如果单击命令按钮时,文本框中输入的不是数值,则用信息框显示“请输入数值数据!”,请填空。 (分数:6.00)填空项 1:_ (正确答案:6 Text1.Text)解析:7 Text1.Text 8 Form2
32、 解析 IsNumeric 是一个字符串函数,其参数是一个字符串或者数字,返回值是一个布尔值,如果这个参数是纯数字组成,将会返回 True,否则将返回 False,在这里作用是为了检验文本框中输入的是否为纯数据即数值数据,所以第 6个空应该填 Text1.Text;在判断完成以后要将 Text1中的文本内容转化为数字,因此第 7个空也应填 Text1.Text;最后输入的结果要在 Form2 中显示出来,所以第 8个空应该填 Form2,表示利用的是 Form2的 Print方法。42.设有整型变量 s,取值范围为 0100,表示学生的成绩。有如下程序段: If s=90 Then Leve1
33、=“A“ Else If s=75 Then Leve1=“B“ Else If s=60 Then Leve1=“C“ Else Leve1=“D“ End If 下面用Select Case结构改写上述程序,使两段程序所实现的功能完全相同,请填空。 Select Case s Case U9 /U=90 Leve1=“A“ Case 75 To 89 Leve1=“B“ Case 60 To 74 Leve1=“C“ Case U10 /U Leve1=“D“ U 11 /U(分数:6.00)填空项 1:_ (正确答案:9 Is)解析:10 Else 11 EndSelect 解析 在 S
34、elect判断语句中,如果是判断区间变量值,可以用“表达式 To 表达式”的形式;如果不是判断区间变量值,则关系运算表达式前面要加上 Is,所以第 9个空应该为 Is;Select 判断其余的情况应该用 Case Else来表示,所以第 10个空为 Else;情况语句以Select Case开头,以 End Select结束,所以第 11个空应该填 End Select。43.窗体上有名称为 Command1的命令按钮。事件过程及 2个函数过程如下: Private Sub Command1_Click() Dim x As Integer,y A8 Integer,z X=3 y=5 z=f
35、y(y) Print fx(fx(x),y End Sub Function fx(ByVal a As Integer) a=a+a fx=a End Function Function fy(ByRef a As Integer) a=a+a fy=a End Function 运行程序并单击命令按钮,则窗体上显示的两个值依次是U 12 /U和U 13 /U。(分数:4.00)填空项 1:_ (正确答案:12 12)解析:13 10 解析 函数 fy中的参数 a是按地址传递,函数 fx中的参数 a是按值传递,所以执行z=fy(y)后,y 的值为 10,z 的值为 10,x 的值为 3;而执
36、行 fx(fx(x)后,fx(fx(x)的值为 12。44.窗体上有名称为 Command1的命令按钮及名称为 Text1、能显示多行文本的文本框。程序运行后,如果单击命令按钮,则可打开磁盘文件 c:/test.txt,并将文件中的内容(多行文本) 显示在文本框中。下面是实现此功能的程序,请填空。 Private Sub Command1_Click() Text1=“ Number=FreeFile Open “c:/test.txt“ For Input As Number Do While NotEOF(U 14 /U) Line Input #Number,s Text1.Text=Text1.Text+U 15 /U+Chr(13)+Chr(10) Loop Close Number End Sub(分数:4.00)填空项 1:_ (正确答案:14 Number)解析:15 s 解析 EOF 函数的格式为 EOF(文件号),用于测试文件指针是否到达文件末尾,因此第 14个空应填文件号 Number; Line 函数返回文件中一行的数据,要将文件中的内容在文本框中显示,就要用Text1.Text连接上。再接回车键换行,所以第 15个空应该填文件中的内容 s。