2010年3月VB全国计算机等级考试试题与答案

 

20103月全国计算机等级考试二级笔试试卷

 Visual Basic数据库程序设计

 (考试时间90分钟,满分100)

一、选择题(每小题2分,共70)

下列各题A)B)C)D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。

 

(1)下列叙述中正确的是
A)
对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n
B)
对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为
(n/2)
C)
对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为
(log2n)
D)
对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)

   

(2)算法的时间复杂度是指
A)
算法的执行时间                        B)算法所处理的数据量
C)
算法程序中的语司或指令条数            D)算法在执行过程中所需要的基本运算次数

   

(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是
A)
编辑软件          B)操作系统          C)教务管理系统      D)浏览器

   

(4)软件(程序)调试的任务是
A)
诊断和改正程序中的错误                B)尽可能多地发现程序中的错误
C)
发现并改正程序中的所有错误            D)确定程序中错误的性质

   

(5)数据流程图(DFD)
A)
软件概要设计的工具                    B)软件详细设计的工具
C)
结构化方法的需求分析工具              D)面向对象方法的需求分析工具

   

(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于
A)
定义阶段                              B)开发阶段

C)维护阶段                              D)上述三个阶段

   

(7)数据库管理系统中负责数据模式定义的语言是
A)
数据定义语言                          B)数据管理语言

C)数据操纵语言                          D)数据控制语言

 

(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是
A)
文件              B)数据库            C)字段              D)记录

   

(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的
A)
需求分析阶段                          B)逻辑设计一阶段

C)概念设计阶段                          D)物理设计阶段

   

(10)有两个关系RT如下:

 

R

 

 

 

T

 

A

B

C

 

A

B

C

a

1

2

 

c

3

2

b

2

2

 

d

3

2

c

3

2

 

 

 

 

d

3

2

 

 

 

 

    则由关系R得到关系T的操作是
A)
选择              B)投影              C)                D)

 

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

 

(12)x是整型变量,与函数Ⅱf(x>0,-x,x)有相同结果的代数式是
A)|x|
B)-|x|
C)x
D)-x

(13)设窗体文件中有下面的事件过程:
Private Sub Command1_Click()
Dim s
a%=100
Print a
End Sub
其中变量as的数据类型分别是
A)
整型,整型
B)
变体型,变体型
C)
整型,变体型
D)
变体型,整型

(14)下面哪个属性肯定不是框架控件的属性
A)Text
B)Caption
C)Left
D)Enabled

15)下面不能在信息框中输出“VB”的是
A)MsgBox "VB"
B)x=MsgBox("VB")
C)MsgBox("VB")
D)Call MsgBox "VB"

(16)窗体上有一个名称为Option1的单选按钮数组,程序运行时,当单击某个单选按钮时,会调用下面的事件过程
Private Sub Option1_C1ick(Index As Integer)

End Sub
下面关于此过程的参数Index的叙述中正确的是
A)Index
1表示单选按钮被选中,为O表示未选中
B)Index
的值可正可负
C)Index
的值用来区分哪个单选按钮被选中
D)Index
表示数组中单选按钮的数量

(17)设窗体中有一个文本框Text1,若在程序中执行了Text1.SetFocus,则触发
A)Text1
SetFocus事件
B)Text1
GotFocus事件
C)Text1
LostFocus事件
D)
窗体的GotFocus事件

(18)VB中有3个键盘事件:KeyPressKeyDownKeyUp,若光标在Text1文本框中,则每输入一个字母
A)
3个事件都会触发
B)
只触发KeyPress事件
C)
只触发KeyDownKeyUp事件
D)
不触发其中任何一个事件

(19)下面关于标准模块的叙述中错误的是
A)
标准模块中可以声明全局变量
B)
标准模块中可以包含一个Sub Main过程,但此过程不能被设置为启动过程
C)
标准模块中可以包含一些Public过程
D)
一个工程中可以含有多个标准模块

(20)设窗体的名称为Form1,标题为Win,则窗体的MouseDown事件过程的过程名是
A)Form1_MouseDown
B)Win_MouseDown
C)Form_MouseDown
D)MouseDown_Form1

(21)下面正确使用动态数组的是
A)Dim arr() As Integer
    …
  
  ReDim arr(3,5)
B)Dim arr() As Integer
  
  …
  
  ReDim arr(50)As String
C)Dim arr()
  
  …
  
  ReDim arr(50) As Integer
D)Dim arr(50) As Integer
  
  …
    ReDim arr(20)

(22)下面是求最大公约数的函数的首部
Function gcd(ByVal x As Integer, ByVal y As Integer) As Integer
若要输出812163个数的最大公约数,下面正确的语句是
A)Print gcd(8,12)
gcd(12,16)gcd(16,8)
B)Print gcd(8,12,16)
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所示的规律继续输出数据,则接在上述程序段后面的程序段应该是
  A)For i=1 To 5
  
     For j=1 To 3
  
       Print a(j,i);
  
     Next
  
     Print
  
   Next
  
B)For i=1 To 3
  
     For j=1 To 5
  
       Print a(j,i);
  
     Next
  
     Print
  
   Next
  
C)For j=1 To 5
  
     For i=1 To 3
  
       Print a(j,i);
  
     Next
  
     Print
  
   Next
  
D)For i=1 To 5
  
     For j=1 To 3
  
       Print a(i,j);
  
     Next
  
     Print
     Next

  (24)窗体上有一个Text1文本框,一个Command1命令按钮,并有以下程序
  Private Sub Commandl_Click()
  
    Dim n
  
    If Text1.Text<>"23456" Then
          n=n
1
          Print "口令输入错误" & n & "
"
  
    End If
  End Sub


  希望程序运行时得到左图所示的效果,即:输入口令,单击确认口令命令按钮,若输入的口令不是123456”,则在窗体上显示输入错误口令的次数。但上面的程序实际显示的是右图所示的效果,程序需要修改。下面修改方案中正确的是
  A)Dim n语句的下面添加一句:n=O
  B)Print "口令输入错误" & n & ""改为Print "口令输入错误" +n+"
"
  C)Print "口令输入错误" & n & ""改为Print "口令输入错误"&Str(n)&"
"
  D)Dim n改为Static n

  (25)要求当鼠标在图片框P1中移动时,立即在图片框中显示鼠标的位置坐标。下面能正确实现上述功能的事件过程是
  A)Private Sub P1_MouseMove(Button AS Integer,Shift As Integer,X As Single, Y As Single)
  
        Print X,Y
  
End Sub
  
B)Private Sub P1_MouseDown(Button AS Integer,Shift As Integer,X As Single, Y As Single)
  
        Picture.Print X,Y
  
End Sub
  
C) Private Sub P1_MouseMove(Button AS Integer,Shift As Integer,X As Single, Y As Single)
  
        P1.Print X,Y
  
End Sub
  
D)Private Sub Form_MouseMove(Button AS Integer,Shift As Integer,X As Single, Y As Single)
  
        P1.Print X,Y
  End Sub

  (26)计算二的近似值的一个公式是
  某人编写下面的程序用此公式计算并输出π的近似值:
  Private Sub Comand1_Click()
      PI
1
      Sign
1
  
    n=20000
  
    For k=3 To n
  
        Sign=-Sign/k
  
        PI=PI+Sign/k
  
    Next k
  
    Print PI*4
  
End Sub
  运行后发现结果为3.22751,显然,程序需要修改。下面修改方案中正确的是

  A)For k=3 To n 改为 For k=1 To n
  B)n=20000改为
n=20000000
  C)For k=3 To n改为
For k=3 To n Step 2
  D)PI=1改为PI=0

  (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)10103的和

  (28)若在窗体模块的声明部分声明了如下自定义类型和数组
  Private Type rec
  
    Code As Integer
  
    Caption As String
  
End Type
  
Dim arr(5) As rec
  则下面的输出语句中正确的是

  A)Print arr.Code(2),arr.Caption(2)
  
B)Print arr.Code,arr.Caption
  
C)Print arr(2).Code,arr(2).Caption
  D)Print Code(2),Caption(2)

  (29)设窗体上有一个通用对话框控件CD1,希望在执行下面程序时,打开如图所示的文件对话框
  Private Sub Comand1_Click()
      CD1.DialogTitle="打开文件
"
  
    CD1.InitDir="C:\"
      CD1.Filter="所有文件|*.*|Word文档|*.doc|文本文件
|*.Txt"
  
    CD1.FileName=""
  
    CD1.Action=1
  
    If CD1.FileName=""Then
          Print"未打开文件
"
  
    Else
          Print"要打开文件
"& CD1.FileName
  
    End If
  End Sub


  但实际显示的对话框中列出了C:\下的所有文件和文件夹,文件类型一栏中显示的是所有文件。下面的修改方案中正确的是
  A)CD1.Action=1改为CD1.Action=2
  B)“CD1.Filter=”后面字符串中的所有文件改为文本文件

  C)在语句CD1.Action=1的前面添加:
CD1.FilterIndex=3
  D)CD1.FileName=""改为CD1.FileName="文本文件"

  (30)下面程序运行时,若输入395,则输出结果是
  Private Sub Comand1_Click()
  
    Dim x%
      x=InputBox("请输入一个3位整数
")
  
    Print x Mod 10,x\100,(x Mod 100)\10
  
End Sub
  
A)3 9 5
  
B)5 3 9
  
C)5 9 3
  D)3 5 9

  (31)窗体上有List1List2两个列表框,List1中有若干列表项(见图),并有下面的程序:
  Private Sub Comand1_Click()
  
    For k=List1.ListCount-1 To 0 Step -1
  
     If List1.Selected(k) Then
  
        List2.AddItem List1.List(k)
  
        List1.RemoveItem k
  
     End If
  
    Next k
  End Sub


  程序运行时,按照图示在List1中选中2个列表项,然后单击Commandl命令按钮,则产生的结果是
  A)List2中插入了外语物理两项
  B)List1中删除了外语物理两项
  C)同时产生A)B)的结果
  D)List1中最后1个列表项删除并插入到List2

  (32)设工程中有2个窗体: Form1Form2Form1为启动窗体。Form2中有菜单。其结构如表。要求在程序运行时,在Form1的文本框Text1中输入口令并按回车键(回车键的ASCII码为13)后,隐藏Form1,显示Form2。若口令为“Teacher”,所有菜单项都可见;否则看不到成绩录入菜单项。为此,某人在Form1窗体文件中编写如下程序:
  Private Sub 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


  程序运行时发现刚输入口令时就隐藏了Form1,显示了Form2,程序需要修改。下面修改方案中正确的是
  A)Form1Text1文本框及相关程序放到Form2窗体中
  B)Form1.HideForm2.Show两行移到2End If之间
  C)If KeyAscii=13 Then改为 If KeyAscii="Teaeher" Then
  D)2Form2.input.Visible中的“Form2”删去

  (33)某人编写了下面的程序,希望能把Text1文本框中的内容写到out.txt文件中
  Private Sub Comand1_Click()
  
    Open "out.txt" For Output As #2
  
    Print "Text1"
   
  
Close #2
  
End Sub
  调试时发现没有达到目的,为实现上述目的,应做的修改是

  A)Print "Text1"改为Print #2,Text1
  B)Print "Text1"改为
Print Text1
  C)Print "Text1"改为
Write "Text1"
  D)把所有#2改为#1

  (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=1 To n-1
  
            if a(j)                  t=a(j):a(j)=a(j+1):a(j+1)=t
  
            End If
  
        Next j
  
    Next i
  
End Sub
  程序运行时,单击命令按钮后显示的是

  A)12345
  
B)54321
  
C)01234
  D)43210

  (35)下面程序运行时,若输入Visual Basic Programming”,则在窗体上输出的是
  Private Sub Comand1_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 m  m=count(k)
  
End If
  
Next k
  
Print m
  
End Sub
  
A)0
  
B)1
  
C)2
  D)3

 

二、填空题(每空2,30)

请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。

(1)一个队列的初始状态为空。现将元素ABCDEF54321依次入队,然后再依次退队,则元素退队的顺序为   1  

   

(2)设某循环队列的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有   2   个元素。

   

A

B

C

D

E

F

G

H

(3)设二叉树如下:

 

 

 

 

 

 

 

 

    对该二叉树进行后序遍历的结果为   3  

   

(4)软件是   4  、数据和文档的集合。

    

(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学号和课号,则关系模式选课可定义为:选课(学号,   5   ,成绩)

 

(6)为了使复选框禁用(即呈现灰色),应把它的Value属性设置为   6  

(7)在窗体上画一个标签、一个计时器和一个命令按钮,其名称分别为Labl1Timer1Command1,如图1所示。程序运行后,如果单击命令按钮,则标签开始闪烁,每秒钟欢迎二字显示、消失各一次,如图2所示。以下是实现上述功能的程序,请填空。
  Private Sub Form_Load()
      Label1.Caption="欢迎
"
  
    Timer1.Enabled=False
      Timer1.Interval=  
7  
  End Sub
  
Private Sub Timer1_Timer()
      Label1.Visible=  
8  
  End Sub
  
Private Sub command1_Click()
      9  
 
  End Sub

  (8)有如下程序:
  Private Sub Form_Click()
  
    n=10
      
i=0
      
Do
          
i=i+n
          
n=n-2
  
    Loop While n>2
  
    Print i
  
End Sub
  程序运行后,单击窗体,输出结果为   10 

  (9)在窗体上画一个名称为Command1的命令按钮。然后编写如下程序:
  Option Base 1
  
Private Sub Command1_Click()
  
    Dim a(10) As Integer
  
    For i=1 To 10
  
        a(i)=i
  
    Next
      Call swap (   11  
)
  
    For i=1 To 10
  
        Print a(i);
  
    Next
  
End Sub
  
Sub swap(b() As Integer)
  
     n=Ubound(b)
  
    For i=1 To n / 2
  
        t=b(i)
  
        b(i)=b(n)
  
        b(n)=t
            12 

      Next
  
End Sub
  上述程序的功能是,通过调用过程swap,调换数组中数值的存放位置,即a(1)a(10)的值互换,a(2)a(9)的值互换,……。请填空。

  (10)在窗体上画一个文本框,其名称为Text1,在属性窗口中把该文本框的MultiLine属性设置为True,然后编写如下的事件过程:
  Private Sub Form_Click()
  
    Open "d:\test\smtext1.Txt" For Input As #1
      Do While Not   13

          Line Input #1, aspect$
  
        Whole$=whole$+aspect$+Chr$(13)+Chr$(10)
  
    Loop
  
    Text1.Text=whole$
      14

      Open "d:\test\smtext2.Txt" For Output As #1
      Print #1,  15

      Close #1
  
End Sub
  运行程序,单击窗体,将把磁盘文件smtext1.txt的内容读到内存并在文本框中显示出来,然后把该文本框中的内容存入磁盘文件smtext2.txt。请填空。

 

20103全国计算机等级考试二级Visual Basic程序设计笔试答案(西赛)

一、选择题

   1.ADBAC   6.BADCA   11.DBCAD   16.CBABA   21.ADADC   26.CACCB   31.CBABD

 

二、填空

1.ABCDEF4321    2.15            3.EDBGHFCA              4.程序                  5.课号

6.2             7.700           8.Not Label1.Visible    9.Timer1.Enabled=True   10.28

11.a() a     12.n=n-1        13.EOF(1)           14.Close # 1    15.Text1.Text Text1