江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
全国等级VB2007年4月考试真题

2007年4月全国计算机等级考试二级笔试试卷
Visual Basic语言程序设计


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

  (1)下列叙述中正确的是(B)
  A)算法的效率只与问题的规模有关,而与数据的存储结构无关
  B)算法的时间复杂度是指执行算法所需要的计算工作量
  C)数据的逻辑结构与存储结构是一一对应的
  D)算法的时间复杂度与空间复杂度一定相关
 
  (2)在结构化程序设计中,模块划分的原则是(D)
  A)各模块应包括尽量多的功能
  B)各模块的规模应尽量大
  C)各模块之间的联系应尽量紧密
  D)模块内具有高内聚度、模块间具有低耦合度
 
  (3)下列叙述中正确的是(A)
  A)软件测试的主要目的是发现程序中的错误
  B)软件测试的主要目的是确定程序中错误的位置
  C)为了提高软件测试的效率,最好由程序编制者自己来完成软件的测试工作
  D)软件测试是证明软件没有错误
 
  (4) 下面选项中不属于面向对象程序设计特征的是(C)
  A)继承性    
  B)多态性    
  C)类比性    
  D)封装性
 
  (5) 下列对队列的叙述正确的是(D)
  A)队列属于非线性表
  B)队列按“先进后出”原则组织数据
  C)队列在队尾删除数据
  D)队列按“先进先出”原则组织数据
 
  (6) 对下列二叉树(C)
                           A


           B                        C
 
   D                   E    F                  X
        
      Y                         Z
  进行前序遍历的结果为
  A)DYBEAFCZX                
  B)YDEBFZXCA
  C)ABDYECFXZ                
  D)ABCDEFXYZ
 
  (7)某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为(A)
  A)n+1        
  B)n-1            
  C)2n         
  D)n/2

 (8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是(B)
  A)并           
  B)交          
  C)投影       
  D)笛卡儿乘积
 
  (9)在E—R图中,用来表示实体之间联系的图形是(C)
  A)矩形          
  B)椭圆形       
  C)菱形        
  D)平行四边形
 
  (10)下列叙述中错误的是(A)
  A)在数据库系统中,数据的物理结构必须与逻辑结构一致
  B)数据库技术的根本目标是解决数据共享问题
  C)数据库技术是指己有数据管理系统的基础上建立数据库
  D)数据库系统需要操作系统的支持
 
  (11)下面可以正确定义2个整形变量和1个字符串变量的语句的是(D)
  A)Dim n,m AS Interger,s AS String  
  B)Dim a%,b$,c AS String
  C)Dim a AS Integer,b,c AS String   
  D)Dim x%,y AS Integer,z AS String
 
  (12)下列表述中不能判断x是否为偶数的是(D)
  A)x/2=Int(x/2)    
  B)x Mod 2=0   
  C)Fix(x/2)=x/2    
  D)x\2=0
 
  13)设在名称为Myform的窗体上只有1个名称为C1的命令按钮,下面叙述中正确的是(B)
  A)窗体的Click事件过程的过程名是Myform_Click
  B)命令按钮的Click事件过程名是C1_Click
  C)命令按钮的Click事件过程的过程名是Command1_Click
 
  (14)设窗体上有1个滚动条,要求单击滚动条右端的◢按钮一次,滚动条移动一定的刻度值,决定此刻度的属性是(C)
  A)Max       
  B)Min       
  C)SmallChange      
  D)LargeChang
 (15)1个二维数组可以存放1个矩形.在程序开始有语句Option Base 0,则下面定义的数组中正好可以存放1个4*3矩阵(即只有12个元素)的是(B)
  A)Dim a(-2 To 0,2) AS Integer     
  B)Dim a(3,2) AS Ingeger
  C)Dim a(4,3)AS Ingeger     
  D)Dim a(-1 To -4,-1 To -3)AS Ingeger
 
  (16)若设置了文本框的属性PasswordChar=”$”,则运行程序时向文本框中输入8个任意字符后,文本框中显示的是(A)
  A)8个”$”          
  B)1个”$”      
  C)8个”*”     
  D)无任何内容
 
  (17)设在窗体上有1个名称为Combo1的组合框,含有5个项目,要删除最后一项,正确的语句是(B)
  A)Combo1.RemoveItem Combo1.Text      
  B) Combo1.RemoveItem4
  C) Combo1.RemoveItem Combo1.ListCount 
  D) Combo1.RemoveItem5
 
  (18)工程中有2个窗体,名称分别为Form1.Form2,Form1为启动窗体,该窗体上有命令按钮Command1,要求程序运行后单击该命令按钮时显示Form2,则按钮的Click事件过程应该是(A)
  A)Private Sub Command1_Click( )   B) Private Sub Command1_Click( )
         Form2.Show                               Form2.Visible
     End   Sub                                   End   Sub
  C) Private Sub Command1_Click( )   D)Private Sub Command1_Click( )
        Load  Form2                                Form2.Load
      End   Sub                                   End   Sub
 
  (19)若在某窗体模块中有如下事件过程(D)
  Private Sub Command1_Click(Index AS Integer)
     ……
    End Sub
    则以下叙述中正确的是
  A)   此事件过程与不带参数的事件过程没有区别
  B)   有1个名称为Command1的窗体,单击此窗体则执行此事件过程
  C)   有1个名称为Command1的空件数组,数组中有多个不同类型控件
  D)   有1个名称为Command1的空件数组,数组中有多个相同类型控件
 
  (20)以下循环语句中在任何情况下都至少执行一次循环体的是(C)
   A)Do While <条件>               B)While <条件>
        循环体                        循环体
     Loop                           Wend

  C)Do                             D)Do Until <条件>
        循环体                        循环体
    Loop Until <条件>                   Loop

  (21)在窗体上有1个名为Cd1的通用对话框,为了在运行程序时打开保存文件对话框,则在程序总应使用的语句是(A)
  A)Cd1.Action=2                   
  B)Cd1.Action=1
  C)Cd1.ShowSave=Ture             
  D)Cd1.ShowSave=0
 (22)下面关于菜单的叙述中错误的是(B)
   A)各级菜单中的所有菜单项的名称必须唯一
   B)同一子菜单中的菜单项名称必须唯一,但不同子菜单中的菜单项名称可以相同
   C)弹出式菜单也用菜单编辑器编辑

  (23)已知有下面的过程(D)
     Private Sub proc1(a As Integer,b As String,Optional x As Boolean)
       ……
     End Sub
     正确调用此过程的语句是
  A)Call procl(5)                    
  B)Call proc1 5,”abc”,False
  C)proc1(12,”abc”,True)              
  D)proc1  5, “abc”
 
  (24)在窗体上有一个文件名称为Text1的文本框和1个名称为Command1的命令按钮,要求在程序执行时,每单击命令按钮一次,文本框向右移动一定距离。下面能够正确实现上述功能的程序是(C)
     A)Private Sub Command1_Click()     B) Private Sub Command1_Click()
          Text1.Left=100                      T  ext1.Left= Text1.Left-100
        End Sub                                  End  Sub 
     C)Private Sub Command1_Click()     D) Private Sub Command1_Click()
        Text1.Move.Text.Left+100                Text1.Move.Text.Left
        End Sub                                    End Sub

  (25)某人创建了1个工程,其中的窗体名称为Form1;之后又添加了1个名为Form2的窗体,并希望程序执行时先显示Form2窗体,那么,他需要做的工作是(A)
  A)在工程属性对话框中把“启动对象”设置为Form2
  B)在Form1的Load事件过程中加入语句 Load  Form2
  C)在Form2的Load事件过程中加入语句Form2.Show
  D)在Form2的TabIndex属性设置为1,把Form1的TabIndex属性设置为2

  (26)窗体上有1个名称为Text1的文本框和1个名称为Command1的命令按钮。要求程序运行时,单击命令按钮,就可以把文本框中的内容写到文件out.txt中,每次写入的内容附加到文件原有内容之后。下面能够实现上述功能的程序是(C)
  A)Private Sub Command1_Click()     B) Private Sub Command1_Click()
       Open “out.txt” For Inpit As#1         Open “out.txt” For Outpit As#1
       Print#1,Text1.Text                          Print#1,Text1.Text
       Close#1                                       Close#1
       End Sub                                        End Sub
    C) Private Sub Command1_Click()     D) Private Sub Command1_Click()
      Open “out.txt” For Append As#1       Open “out.txt” For Random As#1
      Print#1,Text1.Text                              Print#1,Text1.Text
      Close#1                           Close#1
      End Sub                                             End Sub

  (27)为计算1+3+5+……+99的值,某人编程如下
     k=1
     s=0
     While k<=99
       k=k+2    :   s=s+k 
      Wend 
     Print  s
  在调试时发现运行结果有错误,需要修改。下列错误原因和修改方案中正确的是(D)
  A)While …Wend循环语句错误,应改为For k=1 To 99 …Next k
  B)循环条件错误,应改为Whlie k<99
  C)循环前的赋值语句k=1错误,应改为k=0
  D)循环中两条赋值语句的顺序错误,应改为s=s+k : k=k+2

  (28)下面程序在调试时出现了死循环
     Private Sub Command1_Click()
         n=InputBox(“请输入一个整数”)
         Do
            If n Mod 2=0 Then
               n=n+1
            Else
               n=n+2  
            Else If
         Loop Until n=1000
  End Sub
  下面关于死循环的叙述中正确的是(D)
  A)只有输入的n是偶数时才会出现死循环,否则不会
  B)只有输入的n是奇数时才会出现死循环,否则不会
  C)只有输入的n是大于1000的整数时才会出现死循环,否则不会
  D)输入任何整数都会出现死循环

(29)在窗体上有1个名称为CommonDialog1的通用对话框和1个名称为Command1的命令按钮,以及其他一些控件。要求在程序运行时,单击Command1按钮,则显示打开文件对话框,并在选择或输入了1个文件名后,就可以打开该文件。以下是Command1_Click事件过程的两种算法
    算法1:
    Private Sub Command1_Click()
        CommonDialog1.ShowOpen
        Open CommonDialog1.FileName For Input As#1
   End Sub
 
  算法2:
   Private Sub Command1_Click()
       CommonDialog1.ShowOpen
       IfCommonDialog1.FileName<>””Then
        Open CommonDialog1.FileName For Input As#1
       End If
  End Sub
  下面关于这两种算法的叙述中正确的是(B)
  A)   显示打开文件对话框后若未选择或输入任何文件名,则算法2会出错,算法1不会
  B)   显示打开文件对话框后若未选择或输入任何文件名,则算法1会出错,算法2不会
  C)   两种算法的执行结果完全一样
  D)   算法1允许输入的文件名中含有空格,而算法2不允许

  (30)窗体上有1个名称为List的列表框,其中已经输入了若干个项目(如图所示):还有2个文本框,名称分别为Text1、Text2, 1个名称为  Command1的命令按钮,并有以下程序
       Private Sub Command1_Click()
           Dim str As String, s  As String, k As Integer
           s=Text1
           Str=””
           For k=List1.ListCount-1 to 0 Step-1
              If InStr(List.List(k),s)>0 then 
                   str=str&List.List(k)&” ”
              End If
         Next k
         If str=””Then
             Text2=”没有匹配的项目”
         Else
             Text2=str
          End  If
    End Sub
 
  程序运行时,在Text1中输入“京”,单击命令按钮,则在Text2中显示的内容是(C)
  A) 京                 
  B) 北京 南京
  C) 南京                
  D) 没有匹配的项目

  (31)在窗体上画1一个名称为Command1的命令按钮,并编写以下程序
  Private Sub Command1_Click()
      Print fun(“ABCDEFG”)
  End Sub 
    Function fun(st As String) As String 
     stlen=Len(st)
     temp=””
     For k
     fun=temp
  End Function
  程序运行时,单击命令按钮,则窗体上显示的是(B)
  A)ABCDEFG    
  B)AGBFCE   
  C)GFEDCBA    
  D)AGBFCED

  (32)在窗体上先后画2个图片框,名称分别为Picture1和banana,banana中添加了香蕉图片(见图1),且将banana.DragMode属性设置为1。要求程序运行时,可以用鼠标把banana拖拽到Picture1中(见图2)。能实现此功能的事件过程是(C)
  A) Priate Sub Form_DragDrop(Source As Control,X As Single,Y As Single banana.Move Picture1.Left+X,Picture1.Top+Y)  
       End Sub 
  B)Private Sub banana _DragDrop(Source As Control,X As Single,Y As Single )
       Source.Move Picture1.Left+X.Picture1.Top+Y
    End Sub 
  C) B)Private Sub Picture1_DragDrop(Source As Control,X As Single,Y As Single )
       Source.Move Picture1.Left+X.Picture1.Top+Y
    End Sub 
  D) B)Private Sub Picture1_DragDrop(Source As Control,X As Single,Y As Single )
       banana.Move banana.Left+X, banana.Top+Y
    End Sub 

  (33)在窗体上画1个名称为Command1的命令按钮,然后编写如下事件过程
    Option Base 1
    Pribate Sub Command1_Click()
         Dim a(5.5) As Integer
         For i=1 To 5 
             a(I,j)*5\10
           Next j 
         Next i 
         S=0
         For i=1 To 5
             S=s+a(i,i)
         Next i
         Print s
    End Sub
  程序运行后,单击命令按钮,输出结果是(A)
  A) 15             
  B)13             
  C)11           
  D)9

  (34)在窗体上从左到右有Text1、Text2两个文本框(见图),要求程序运行时,在Text1中输入1个分数后按回车键,则判断分数的合法性,若分数为0~100中的1个数,周围光标移到Text2中;否则光标不动,并弹出对话框显示“分数错”,下面程序中正确的是(D)
  A)Private Sub Text1__KeyPress(KeyAscii AS Integer)
       If  KeyAscii=13 Then        ‘回车符的ACSII码是13
    a=Val(Text1)
    If a>=0 or a<=100 Then
      Text2.SetFocus
  Else
        Text1. SetFocus   ;  MsgBox(“分数错”)
  End If
  End If
  End  Sub
  B) Private Sub Text1__KeyPress(KeyAscii AS Integer)
       If  KeyAscii=13 Then        ‘回车符的ACSII码是13
    a=Val(Text1)
    If a>=0 And a<=100 Then
      Text1.SetFocus
  Else
        Text2. SetFocus   ;  MsgBox(“分数错”)
  End If
  End If
  End  Sub
  C) Private Sub Text1__KeyPress(KeyAscii AS Integer)
       If  KeyAscii=13 Then        ‘回车符的ACSII码是13
    a=Val(Text1)
    If a<0 And a>100 Then
      Text2.SetFocus
  Else
        Text1. SetFocus   ;  MsgBox(“分数错”)
  End If
  End If
  End  Sub
  D) Private Sub Text1__KeyPress(KeyAscii AS Integer)
       If  KeyAscii=13 Then        ‘回车符的ACSII码是13
    a=Val(Text1)
    If a>=0 And a<=100 Then
      Text2.SetFocus
  Else
        Text1. SetFocus   ;  MsgBox(“分数错”)
  End If
  End If
  End  Sub
 
   (35)在窗体上画2个命令按钮,名称分别为Command1、command2,并编写如下程序
     Const n=5,m=4
     Dim a(m,n)
     Private Sub Command1_Click()
        K=1
        For i=1 To m
            For j=1 To n
               a(i,j)=k
               k=k+1
            Next j
        Next i
 
  Private Sub Command2_Click()
       Summ=0
       For i=1 To m
          For j=1 To n
            If i=1 Or i=m Then
                Summ=summ+a(i,j)
             Else
                If j=I Or j=n Then
                    Summ=summ+a(i,j)
                End If
            End If
         Next j
  Next i
  Print summ
  End Sub
   过程Command1_Click()的作用是二维数组a 中存放1个 m行n列的矩阵;过程Command2_Click()的作用是(A)
  A)   计算矩阵外围一圈元素的累加和
  B)   计算矩阵除外一圈以外的所有元素的累加和
  C)   计算矩阵第1列和最后一列元素的累加和
  D)   计算矩阵第1行和最后一行元素的累加和

二、填空题(每空2分,共30分)
   请将每一个空的正确答案写在答题纸上[1]~[15]序号的横线上,答在试卷上,答在试卷上不得分,
   注意:以命令关键字填空的必须写完整
  (1)    在深度为7的满二叉树中,度为2的结点个数为___63_____。

  (2)    软件测试分为白箱(盒)测试和黑箱(盒)测试,等价类划分法属于__黑箱(或黑盒) 测试。

  (3)    在数据库系统中,实现各种数据管理功能的核心软件称为    数据库管理系统(DBMS)_____。

  (4)    软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于   开发_____阶段。

  (5)在结构化分析使用的数据流图(DFD)中,利用  数据字典  对其中的图形元素进行确切解释。

  (6)1+ + + +…….n  最大的n。请填空
     Private Sub Command1__Click()
        Dim s ,m,n AS Integer
        m=Val(InputBox(“请输入一个大于100的整数”))
        n=    0   
        s=0
        Do While s           N=n+1
           S=s+n*n
  Loop
  Print  “满足不等式的最大n是    n-1    
  End  Sub

  (7)下面程序的功能是把文件file11.txt中重复字符去掉后(即若有多个字符相同,则只保留1个)写入文件file2.txt。请填空。
  Private Sub Command1__Click()
  Dim inchar AS String,temp AS String,outchar AS String
  Outchar=” ”
  Open=”file1.txt” For Input AS #1
  Open=”file2.txt” For Output AS     #2    
  n=LOF(    1   )
  inchar=Input$(n,1)
  For k=1 To n
     temp=Mid(inchar,k,1)
     If InStr(outchar,temp)=    0     Then
        outchar=outchar &  temp
  End If
  Next k
  print #2,       outchar    
  close #2
  close #1
  End Sub
 
  (8)在窗体上先画1个名为Text1的文本框和平个名为Label1的标签,再画1个名为OP1的有4个单选按钮数组,其Index属性按季度顺序为0∽3(见图1)。在文件sales.txt中按月份顺序存有某企业某年12个月的销售额。要求在程序执行时,鼠标单击1个单选按钮,则Text1中显示相应季度的销售总额,并把相应的文字显示在标签上。图2是单击“第3季度”单选按钮产生的结果。请填空。
 
  Dim sales(12) As Long
  Private Sub Form__Load()
     open “sales.txt” For Input AS #1
     For k=1 To 12
        Input #1,sales(k)
  Next  k
  Close #1
  End Sub 
 
  Private Sub     Op1_Click       (Index, AS Integer)
  Dim sum AS Long ,k AS Ingeger,month AS Ingeger
        sum=0
  month=Index*     3     
  For k=1 To 3
  month=month+1
  sum=sum+sales(month)
  Next k
  Label1.Caption=Opl(Index).  Caption         & “销售总额:”
  Text1=sum
  End Sub
 
 
  (9)某人编写如下函数来判断a是否为素数,若是,则函数返回True;否则返回False
  Function Prime(a As Integer)AS Boolean
  Dim k As Interger,isprime AS Boolean
  If a<2 Then
    isprime=False
  Else
    isprime=True
     k=2
  Do While k     If a Mod k=0 Then
       isprime=False
  ELSE
     k=k+1
  End IF
  LOOP
  End If 
    prime=isprime
  End Function
  在测试时发现有1个非素数也被判断为素数,这个错判的数是   4         

2007年4月全国计算机等级考试二级VB语言笔试试题答案

选择题:

1-10   cdacd cabaa

11-20   ddbcd abadc

21-30   bbdca cddbc

31-35   bcada


填空:

63    黑盒测试    DBMS     开发阶段    数据词典    0    N-1 #2 1 0 
outchar    op1_click 3    caption 4