购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2015年9月全国计算机等级考试《二级Visual Basic语言程序设计》真题及详解

(考试时间120分钟满分100分)

一、选择题(每小题1分,共40分)

1.下列关于算法复杂度叙述正确的是( )。

A.最坏情况下的时间复杂度一定高于平均情况的时间复杂度

B.时间复杂度与所用的计算工具无关

C.对同一个问题,采用不同的算法,则它们的时间复杂度是相同的

D.时间复杂度与采用的算法描述语言有关

2.设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。则栈中的元素个数为( )。

A.30

B.29

C.20

D.19

3.下列关于二叉树的叙述中,正确的是( )。

A.叶子结点总是比度为2的结点少一个

B.叶子结点总是比度为2的结点多一个

C.叶子结点数是度为2的结点数的两倍

D.度为2的结点数是度为1的结点数的两倍

4.某二叉树的前序遍历为ABCDEFG,中序遍历为DCBAEFG,则该二叉树的深度(根结点在第1层)为( )。

A.2

B.3

C.4

D.5

5.结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是( )。

A.三种基本结构不可以嵌套使用

B.顺序结构是按语句在程序中的先后顺序逐条执行,没有分支,没有转移

C.选择结构是根据不同的条件执行不同分支中的语句

D.循环结构是根据条件决定是否重复、重复执行多少次循环体语句

6.下面对软件特点描述错误的是( )。

A.软件没有明显的制作过程

B.软件是一种逻辑实体,不是物理实体,具有抽象性

C.软件的开发、运行对计算机系统具有依赖性

D.软件在使用中存在磨损、老化问题

7.软件设计中划分模块的一个准则是( )。

A.低内聚低耦合

B.高内聚低耦合

C.低内聚高耦合

D.高内聚高耦合

8.设有关键码序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值B在序列中的序号是( )。

A.1

B.3

C.7

D.9

图5

9.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。

A.一对一

B.一对多

C.多对一

D.多对多

10.数据库的故障恢复一般是由( )来执行恢复。

A.电脑用户

B.数据库恢复机制

C.数据库管理员

D.系统普通用户

11.在Visual Basic集成环境中要结束一个正在运行的工程,可单击工具栏上的一个按钮,这个按钮是(

A.

B.

C.

D.

12.设x=3.3,y=4.5,表达式x-Int(x)+Fix(y)的值是( )。

A.3.5

B.4.8

C.4.3

D.4.7

13.以下关于窗体的叙述中错误的是( )。

A.窗体的Name属性用于标识一个窗体

B.运行程序时,改变窗体大小能够触发窗体的Resize事件

C.窗体的Enabled属性为False时不能响应单击窗体的事件

D.程序运行期间可以改变Name属性值

14.下面定义窗体级变量a的语句中错误的是( )。

A.Dim a%

B.Private a%

C.Private a AS Integer

D.Static a%

15.下面不能在信息框中输出“VB”的是( )。

A.MsgBox"VB"

B.x=MsgBox("VB")

C.MsgBox("VB")

D.Call MsgBox"VB"

16.以下关于事件、事件驱动的叙述中,错误的是( )。

A.事件是可以由窗体或控件识别的操作

B.事件可以由用户的动作触发

C.一个操作动作只能触发一个事件

D.事件可以由系统的某个状态的变化而触发

17.在窗体上画一个文本框(其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

上述程序的运行结果是( )。

A.在文本框Text1中输出45

B.在文本框Text1中输出0

C.出错

D.在文本框Text1中输出不定值

18.用来设置文字字体是否斜体的属性是( )。

A.FontUnderline

B.FontBold

C.FontSlope

D.FontItalic

19.在窗体上画一个名称为Command1的命令按钮,单击命令按钮时执行如下事件过程:

Private Sub Command1_Click( )
        a$="software and hardware"
        b$=Right(a$,8)
        c$=Mid(a$,1,8)
        MsgBox a$,b$,c$,1
End Sub

则在弹出的信息框标题栏中显示的标题是( )。

A.software and hardware

B.hardware

C.software

D.1

20.为了使文本框只具有垂直滚动条,应先把MultiLine属性设置为True,然后再把ScrollBars属性设置为( )。

A.0

B.1

C.3

D.4

21.以下说法中错误的是( )。

A.如果把一个命令按钮的Default属性设置为True,则按回车键与单击该命令按钮的作用相同

B.可以用多个命令按钮组成命令按钮数组

C.命令按钮只能识别单击(Click)事件

D.通过设置命令按钮的Enabled属性,可以使该命令按钮有效或禁用

22.窗体上有一个名为List1的列表框和一个名为Command1的命令按钮,并有下面的事件过程:

Private Sub Command1_Click( )
            n%=List1.ListIndex
            If n>0 Then
                    ch$=List1.List(n)
                    List1.List(n)=List1.List(n-1)
                    List1.List(n-1)=ch
            End If
End Sub

程序运行时,选中一个列表项,然后单击Command1按钮,则产生的结果是( )。

A.若选中的不是最前面的列表项,则选中的列表项与它前一个列表项互换位置

B.选中的列表项与它前面的列表项互换位置

C.若选中的不是最后面的列表项,则选中的列表项与它后一个列表项互换位置

D.选中的列表项与它后面的列表项互换位置

23.以下关于图片框控件的说法中,错误的是( )。

A.可以通过Print方法在图片框中输出文本

B.图片框控件中的图形可以在程序运行过程中被清除

C.图片框控件中可以放置其他控件

D.用Stretch属性可以自动调整图片框中图形的大小

24.如果执行一个语句弹出如下图所示的窗口,则这个语句是( )。

A.InputBox("输入框","请输入VB数据")

B.x=InputBox("输入框","请输入VB数据")

C.InputBox("请输入VB数据","输入框")

D.x=InputBox("请输入VB数据","输入框")

25.窗体上有一个名为Frame1的框架,如下图所示。若要把框架上显示的“Frame1”改为汉字“框架”,下面正确的语句是( )。

A.Frame1.Name="框架"

B.Frame1.Caption="框架"

C.Frame1.Text="框架"

D.Frame1.Value="框架"

26.以下叙述中错误的是( )。

A.在通用过程中,多个形式参数之间可以用逗号作为分隔符

B.在Print方法中,多个输出之间可以用逗号作为分隔符

C.在Dim语句中,所定义的多个变量可以用逗号作为分隔符

D.当一行中有多个语句时,可以用逗号作为分隔符

27.有如下过程代码:

Sub var_dim( )
      Static numa As integer
      Dim numb As Integer
      numa=numa+2
      numb=numb+1
      pring numa;numb
End Sub

连续三次调用var_dim过程,第三次调用时的输出是( )。

A.2 1

B.2 3

C.6 1

D.6 3

28.下列描述错误的是( )。

A.过程级变量是指在过程或函数内部定义的变量,这种变量的作用域是整个过程或函数体,只能在该过程或该函数体被引用

B.某一函数若要引用在其他函数中定义的变量,只要将变量定义为Static型即可

C.窗体级变量在该窗体中的每个过程都可以引用

D.若要使某一窗体内定义的窗体级变量能够在另一窗体内应用,只需要Public声明

29.以下关于单选按钮和复选框的叙述中,正确的是( )。

A.单选按钮和复选框都能从多个选项中选择一项

B.单选按钮和复选框被选中时,选中控件的Value属性值为True

C.是否使用框架控件将单选按钮分组,对选项没有影响

D.是否使用框架控件将复选框分组,对选项没有影响

30.以下程序的功能是随机产生10个两位的整数:

Option Base 1
Private Sub Command1_Click()
            Dim a (10) As Integer
            Dim i As Integer
            Randomize
            For i=1 To 10
                    a(i)=Int(Rnd*100)+1
                    Print a(i)
            Next i
End Sub

运行以上程序,发现有错误,需要对产生随机数的语句进行修改。以下正确的修改是( )。

A.a(i)=Int(Rnd*100)

B.a(i)=Int(Rnd*90)+10

C.a(i)=Int(Rnd*100)+10

D.a(i)=Int(Rnd*101)

31.设窗体上有一个水平滚动条HScroll1和一个命令按钮Command1,及下面的事件过程:

Private Sub Form_Load()
            HScroll1.Min=0
            HScroll1.Max=100
End Sub
Private Sub Command1_Click()
            HScroll1.Value=70
End Sub

序运行时单击命令按钮,则滚动条上滚动块位置的图示是( )。

A.

B.

C.

D.

32.设有以下函数过程:

Function fun (a As Integer,b As integer)
              Dim c As Integer
              If a < b Then
                        c=a:a=b:b=c
              End If
                        c=0
              Do
                        c=c+a
              Loop Until c Mod b=0
              fun=c
End function

若调用函数fun时的实际参数都是自然数,则函数返回的是( )。

A.a、b的最大公约数

B.a、b的最小公倍数

C.a除以b的余数

D.a除以b的商的整数部分

33.设a=4,b=5,c=6,执行语句Print a<b And b<c后,窗体上显示的是( )。

A.True

B.False

C.出错信息

D.0

34.窗体上有Text1、Text2两个文本框及一个命令按钮Command1,编写下列程序:

Dim y As Integer
Private Sub Command1_Click()
               Dim x As Integer
               x=2
               Text1.Text=Fun2(Funl(x),y)
               Text2.Text=Fun1(x)
End Sub
Private Function Fun1(x As Integer)As Integer
                x=x+y:y=x+y
                Fun=x+y
End Function
Private Function Fun2(x As Integer,y As Integer)As Integer
                Fun2=2*x+y
End Function

当单击1次和单击2次命令按钮后,文本框Text1和Text2内的值分别是( )。

A.2 4

2 4

B.2 4

4 8

C.10 10

58 58

D.4 4

8 8

35.设有如下程序:

Option Base 1
Private Sub Form_Click()
         Dim a(5)As String,i As Integer
         For i=1 To 5
           a(i)=Chr(Asc("A")+i)
           Call f(a,i)
         Next i
End Sub
Sub f(ta()As String,n As Integer)
         Dim i As Integer
         For i=1 To n
            Print ta(i)
         Next i
         Print
End Sub

对上述程序,以下叙述中正确的是( )。

A.程序有错,因为在过程f的定义中数组参数格式不正确

B.程序可正常运行,输出内容的第一行是一个字母“A”

C.程序可正常运行,输出内容的第一行是一个字母“B”

D.程序可正常运行,输出内容的第一行是数字65

36.如果要在窗体上使用2组单选按钮,每组都可以有一个被选中,则应该做的是( )。

A.把1组单选按钮画在窗体的左边,另1组画在右边

B.先画2组单选按钮,再画2个框架控件把2组单选按钮分别框起来

C.先画2个框架控件,再把2组单选按钮分别画在不同的框架中

D.因为1个窗体中只有1个单选按钮可以被选中,所以需要使用2个窗体

37.窗体上有一个名称为Label1的标签;一个名称为Timer1的计时器,其Enabled和Interval属性分别为True和1000。编写如下程序:

Dim n As integer
Private Sub Timer1_Times()
          ch=Chr(n+Asc("A"))
          Label1.Caption=ch
          n=n+1
          n=n Mod 4
End Sub

运行程序,将在标签中( )。

A.不停地依次显示字符“A”,“B”,“C”,“D”,直至窗体被关闭

B.依次显示字符“A”,“B”,“C”,“D”各一次

C.每隔1秒显示字符“A”一次

D.每隔1秒依次显示26个英文字母中的一个

38.在窗体上画一个命令按钮(名称为Command1),然后编写如下代码:

Private Sub Command1_Click()
         Dim a
         a=Array(1,2,3,4)
         i=3:j=1
         Do While i>=0
                s=s+a(i)*j
                i=i-1
                j=j*10
         Loop
         print s
End Sub

运行程序后单击命令按钮,则输出结果是( )。

A.4321

B.123

C.234

D.1234

39.编写如下事件过程:

Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)
              Print Chr(KeyCode)
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
              Print Chr(KeyAscii)
End Sub

在一般情况下(即不按住Shift键和锁定大写键时)运行程序,若按t键,则程序输出的结果是( )。

A.TF

B.tT

C.Tt

D.tt

40.以下事件过程可以将打开对话框的标题改为“新时代”的是( )。

A.

Private Sub Command2_Click()
              CommonDialog1.DialogTitle="新时代"
              CommonDialog1.ShowOpen
End Sub

B.

Private Sub Command2_Click()
                CommonDialog1.DialogTitle="新时代"
                CommonDialog1.ShowFont
End Sub

C.

Private Sub Command2_Click()
                 CommonDialog1.DialogTitle="新时代"
                 CommonDialog1.Show
End Sub

D.

Private Sub Command2_Click()
                 CommonDialog1.DialogTitle="新时代"
                 CommonDialog1.ShowColor
End Sub

二、基本操作题(共18分)

(1)在名称为Forml,标题为“框架”的窗体上画一个名称为Framel,且没有标题的框架。框架内含有两个单选按钮,名称分别为Opt1和Opt2、标题分别为“字体”、“大小”,如图1所示。

图1

注意:存盘时必须存放在考生文件夹下,工程文件名为sjtl.vbp,窗体文件名为sjtl.frm。

答: 步骤1:建立窗体,在窗体中添加一个框架,两个单选按钮并设置控件的属性,程序中用到的控件及属性如表1所示。

表1

步骤2:调试并运行程序,关闭程序后按题目要求存盘。

(2)考生文件夹下的工程文件sjt2.vbp中有一个由直线Line1、Line2和Line3组成的三角形,直线Line1、Line2和Line3的坐标值如下所示:

名称X1 Y1 X2 Y2

Line1 600 1200 1600 300

Line2 600 1200 2600 1200

Line3 1600 300 2600 1200

要求画一条直线Line4以构成三角形的高,且该直线的初始状态为不可见。再画两个命令按钮,名称分别是Cmd1、Cmd2,标题分别为“显示高”、“隐藏高”,如图2所示。

图2

请编写适当的事件过程使得在运行时,单击“显示高”按钮,则显示三角形的高;单击“隐藏高”按钮,则隐藏三角形的高。

注意:要求程序中不得使用变量,每个事件过程只能写一条语句。不得修改已经存在的控件,最后将修改后的文件按原文件名存盘。

答: 步骤1:打开本题工程文件,在要求的位置添加一个线条并设置其属性。程序中用到的控件及属性如表2所示。

表2

步骤2:在窗体中添加两个命令按钮并设置其属性,属性如表3所示。

表3

步骤3:编写程序代码。

Private Sub Cmd1_Click()
          Line4.Visible=True
End Sub
Private Sub Cmd2_Click()
          Line4.Visible=False
End Sub

步骤4:调试并运行程序,关闭程序后按题目要求存盘。

三、简单应用题(共24分)

(1)在考生文件夹下有一个工程文件sjt3.vbp。窗体上有名称为Timer1的定时器,以及名称为Line1和Line2的两条水平直线。请用名称为Shape1的形状控件,在两条直线之间画一个宽和高都相等的形状,其显示形式为圆,并设置适当属性使其满足以下要求:①圆的顶端距窗体Form1顶端的距离为360;②圆的颜色为红色(红色对应的值为:&H000000FF&或&HFF&),如图3所示。

图3

程序运行时,Shape1将在Line1和Line2之间运动。当Shape1的顶端到达Line1时,会自动改变方向而向下运动;当Shape1的底部到达Line2时,会改变方向而向上运动。文件中给出的程序不完整,请去掉程序中的注释符,把程序中的?改为正确内容,使其实现上述功能。

注意:不能修改程序的其他部分和已给出控件的属性。最后将修改后的文件按原文件名存盘。

答: ①打开本题工程文件,设置形状控件的Top属性为360,FillStyle属性为0,FillColor属性为&H000000FF&,Shape属性为3。

②分析并编写程序代码。程序提供代码如下:

Dim s As Integer, h As Long
Private Sub Form_Load()
     ‘Timer1.Enabled=?
s=-40
End Sub
Private Sub Timer1_Timer()
     Shape1.Move Shape1.Left,Shape1.Top+s
     ‘If Shape1.Top<=?Then
           s=-s
      End If
      ‘If Shape1.Top+?>=Line2.Y1 Then
           s=-s
      End If
End Sub

程序结束

【参考答案】

第1个?处填入:True

第2个?处填入:Line1.Y1

第3个?处填入:Shape1.Height

③调试并运行程序,关闭程序后按题目要求存盘。

(2)在考生文件夹下有一个工程文件sjt4.vbp,包含了所有控件和部分程序,如图4所示。

图4

程序功能如下:①单击“读数据”按钮,可将考生文件夹下in4.dat文件中的100个整数读到数组a中;②单击“计算”按钮,可根据从名称为Combol的组合框中选中的项目,对数组a中的数据计算平均值,并将计算结果四舍五入取整后显示在文本框Text1中。“读数据”按钮的Click事件过程已经给出,请为“计算”按钮编写适当的事件过程以实现上述功能。

注意:不得修改已经存在的控件和程序,在结束程序运行之前,必须进行一次计算,且必须用窗体右上角的关闭按钮结束程序,否则无成绩。最后,程序按原文件名存盘。

答: ①打开本题工程文件。

②分析并编写程序代码。程序提供代码如下:

Dim a(100)As Integer
Private Sub Command1_Click()
           Dim k As Integer
           Open App.Path & "\in4.dat"For Input As #1
           For k=1 To 100
                   Input #1,a(k)
           Next k
           Close #1
End Sub
Private Sub Command2_Click()
‘考生编写
End Sub
Private Sub Form_Unload(Cancel As Integer)
           Open App.Path & "out4.dat"For Output As#1
           Print #1, Combo1.Text;Text1.Text
           Close#1
End Sub

程序结束

【参考答案】

Private Sub Command2_Click()
          ‘考生编写
          Dim k As Long
          Dim m As Long
          Dim q As Long
          Dim p As Long
          Dim r As Long
          Dim n As Long
          For k=1 To 100
              If a(k)Mod 2=0 Then
                       m=m+a(k)
                       q=q+1
              Else
                       n=n+a(k)
                       p=p+1
              End If
              Next k
              r=Int((m+n)/(p+q)+0.5)
              m=Int(m/q+0.5)
              n=Int(n/p+0.5)
              Select Case Comobo1.Text
                        Case"所有偶数"
                               Text1=m
                        Case"所有奇数"
                               Text1=n
                        Case"所有数"
                               Text1=r
              End Select
End Sub

③调试并运行程序,关闭程序后按题目要求存盘。

四、综合应用题(共18分)

在考生文件夹下有一个工程文件sit5.vbp,含三个窗体,标题分别为“启动”、“注册”、“登录”,运行时显示“启动”窗体,单击其上按钮时弹出对应窗体进行注册或登录。注册信息放在全局数组users中,注册用户数(最多10个)放在全局变量n中(均已在标准模块中定义)。注册时用户名不能重复,且“口令”与“验证口令”须相同,注册成功则在“启动”窗体的标签中显示“注册成功”,否则显示相应错误信息。登录时,检验用户名和口令,若正确,则在“启动”窗体的标签上显示“登录成功”,否则显示相应错误信息。

标准模块中函数finduser的功能是:在users数组中搜索用户名(即参数ch),找到则返回该用户名在users中的位置,否则返回0。已经给出了所有控件和程序,但程序不完整,请去掉程序中的注释符,把Form2、Form3窗体文件中的?改为正确的内容。

注意:不得修改已经存在的程序和控件的属性。最后,程序按原文件名存盘。

答: ①打开本题工程文件。

②分析并编写程序代码。程序提供代码如下:

Form1
Private Sub Command1_Click()
            Form2.Text1=""
            Form2.Text2=""
            Form2.Text3=""
            Label1.Caption=""
            Form2.Show
End Sub
Private Sub Command2_Click()
            Form3.Text2=""
            Label1.Caption=""
            Form3.Show
End Sub
Form2
Private Sub Command1_Click()
            Text1=""
            Text2=""
            Text3=""
End Sub
Sub writeusers()
            ‘n=n+?
             users(n,1)=Text1
             users(n,2)=Text2
End Sub
Private Sub Command2_Click()
             If Text=""Then
                  MsgBox("必须输入用户名!")
                  Text1.SetFocus
             ‘ElseIf finduser(Trim$(Text1))>?Then
                  MsgBox("此用户名已经存在!")
              ElseIf Text2<>Text3 Then
                  MsgBox("口令验证错误!")
              Else
                  writeusers
                  ‘?="注册成功"
                  Form2.Hide
              End If
End Sub
Form 3
Private Sub Command1_Click()
              k=finduser(Trim$(Text1))
              ‘If k=?Then
                   MsgMox("没有注册!")
              ‘ElseIf Trim$(Text2)<>users(?)Then
                   MsgBox("口令错误!")
               Else
                    Form1.Lable1.Caption="登录成功!"
                    Form3.Hide
               End If
End Sub

程序结束

【参考答案】

Form2中第1个?处:1

Form2中第2个?处:0

Form2中第3个?处:Form1.Label1

Form3中第1个?处:0

Form3中第2个?处:k,2

③调试并运行程序,关闭程序后按题目要求存盘。 OzgcTn0+HxnvnSbiae4OXQ5aYjbWNXkiwtAUxlqS+CumJL+9Pc7hFIp9Z4h496RP

点击中间区域
呼出菜单
上一章
目录
下一章
×