`

2009年3月全国计算机等级考试二级笔试试卷Visual Basic 语言程序及参考答案

阅读更多

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


一、选择题

(1)下列叙述中正确的是       
A) 栈是“先进先出”的线性表
B) 队列是“先进先出”的线性表
C) 循环队列是非线性结构
D) 有序性表既可以采用顺序存储结构,也可以采用链式存储结构
(2)支持子程序调用的数据结构是                            
A) 栈            B) 树            C) 队列       D)二叉树
(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是
     A)10            B)8            C)6           D)4
(4)下列排序方法中,最坏情况下比较次数最少的是
 A)冒泡排序   B)简单选择排序   C)直接插入排序   D)堆排序
(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是
 A)编译软件   B)操作系统  C)教务管理系统  D)汇编程序
(6)下面叙述中错误的是
A)软件测试的目的是发现错误并改正错误
B)对被调试的程序进行“错误定位”是程序调试的必要步骤
C)程序调试通常也称为Debug
D)软件测试应严格执行测试计划,排除测试的随意性
(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
 A)提高耦合性降低内聚性有利于提高模块的独立性
B)降低耦合性提高内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D)内聚性是指模块间互相连接的紧密程度
(8)数据库应用系统中的核心问题是
A)数据库设计      B)数据库系统设计
C)数据库维护       D) 数据库管理员培训
(9)有两个关系R,S如下:
R                     S
A B C  A B
a 3 2  a 3
b 0 1  b 0
c 2 1  c 2
 由关系R通过运算得到关系S,则所使用的运算为
A) 选择        B)投影        C) 插入        D)连接
(10)将E-R图转换为关系模式时,实体和联系都可以表示为
A) 属性        B)键          C) 关系         D) 域
(11)执行语句 Dim X, Y as Integer 后,
A)X 和Y 均被定义为整型变量
B)X和Y被定义为变体类型变量
C)X被定义为整型变量,Y被定义为变体类型变量
D)X被定义为变体类型变量,Y被定义为整型变量

(12)以下关系表达式中,其值为True的是
A)”XYZ”>”XYz”
B)”VisualBasic”<>”visualbasic”
C)”the”=”there”
D)”Integer”<”Int”

(13)执行以下程序段
 a$=”Visual Basic Programming”
b$=”C++”
c$=Ucase(left$(a$,7))&b$& Right$(a$,12)后,变量c$ 的值为
A)Visual Basic Programming 
B)VISUALC++ Programming
C)Visual C++ Programming 
D)VISUAL BASIC Programming 

(14)下列叙述中正确的是
A)MsgBox语句的返回值是一个整数
B)执行Msgbox语句并出现信息框后,不用关闭信息框即可执行其他操作
C)MsgBox语句的第一个参数不能省略
D)如果省加略MsgBox语句的第三个参数(Title),则信息框的标题为空 

(15)在窗体上画一个文本框(名称为text1)和一个标签(名称为label1),程序运行后,在文本框中每输入一个字符,都会立即在标签中显示文本框中字符的个数,以下可以实现实现上述操作的事件过程是
A)Private Sub Text1_Change()
Label1.Caption = Str(Len(Text1.Text))
End Sub
B)Private Sub Text1_Click()
Label1.Caption = Str(Len(Text1.Text))
End Sub
C)Private Sub Text1_Change()
Label1.Caption = text1.text
End Sub
D)Private Sub label1_Change()
Label1.Caption = Str(Len(Text1.Text))
End Sub

(16)在窗体上画两个单选按钮(名称分别为Option1、option2,标题分别为“宋体”和“黑体”)、1个复选框(名称为check1,标题为“粗体”)和1个文本框(名称为text1,text属性为“改变文字字体”),窗体外观如图所示。程序运行后,要求“宋体”单选按钮和“粗体”复选框被选中,则以下能够实现上述操作的语句序列是
A) Option1.value = False
Check1.value = True  
B) Option1.value = True
Check1.value = 0
C) Option1.value = True
Check1.value = 2
D) Option1.value = True
Check1.value = 1

(17)在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
c = 1234
c1 = Trim(Str(c))
For i = 1 To 4
  Print    
  Next
End Sub
程序运行后,单击命令按钮,要求在窗体上显示如下内容:
1
12
123
1234
则在横线上应填入的内容为
A)Right(c1,i)     B)Left(c1,i)   C)Mid(c1,I,1)   D) Mid(c1,i,i)

(18)假定有以下程序段
   For i=1 to 3
     For j=5 to 1 step -2
       Print i*j
     Next j
 Next i
则语句 Print i*j 的执行次数是
A)15      B)16      C)17       D)18

(19)在窗体上画两个文本框(名称分别为text1和text2)和一个命令按钮(名称为command1),然后编写如下事件过程:
Private Sub Command1_Click()
  x = 0
  Do While x < 50
  x = (x + 2) * (x + 3)
  n = n + 1
  Loop
  text1.Text = Str(n)
  text2.Text = Str(x)
End Sub程序运行后,单击命令按钮,在两个文本框中显示的值分别为
A)1和0    B)2和72    C)3和50     D)4和168
(20)阅读程序:
Private Sub Command1_Click()
 A=0
For j=1 to 15
  a=a+j mod 3
Next j
Print a 
End Sub
程序运行后,单击窗体,输出结果是
A)105   B)1   C)120    D)15

(21)以下说法中正确是的
A)当焦点在某个控件上时,按下一个字母键,就会执行该控件的keypress事件过程
B)因为窗体不接受焦点,所以窗体不存在自己的keypress事件过程
C)若按下的键相同,keypress事件过程中的keyascii参数与keydown事件过程中的keycode参数的值也相同
D)在keypress事件过程中,keyascii参数可以省略

(22)语句  dim a(-3 to 4,3 to 6)as integer 定义的数组的元素个数是
A)18    B)28    C)21     D)32

(23)在窗体上画一个命令按钮,其名称为command1,然后编写如下代码:
Option Base 1
Private Sub Command1_Click()
  Dim a
  a = Array(1, 2, 3, 4)
  j = 1
  For i = 4 To 1 Step -1
    s = s + a(i) * j
    j = j * 10
   Next i
   Print s
End Sub
程序运行后,单击命令按钮后,其输出结果是
A)4321      B)1234     C)34      D)12

(24)假定通过复制,粘贴操作建立了一个命令按钮数组Command1,以下说法中错误的是
A)数组中每个命令按钮的名称(name属性)均为Command1
B)若未做修改,数组中每个命令按钮的大小都一样
C)数组中各个按钮使用同一个click事件过程
D)数组中每个命令按钮的index属性值都相同

(25)在窗体上面画一个命令按钮,名称为Command1,然后编写如下代码:
Option Base 0
Private Sub Command1_Click()
   Dim A1(4) As Integer,A2(4) As Integer
   For k=0 To 2
       A1(k+1)=InputBox(“请输入一个整数”)
       A2(3-k)=A1(k+1)
   Next k
   Print A2(k)
 End Sub
程序运行后,单击命令按钮,在输入对话框中依次输入2、4、6,则输出结果为
A)0                B)1              C)2              D)3
(26)以下关于函数过程的叙述中,正确的是
  A)函数过程形参的类型与函数返回值的类型没有关系    
B)在函数过程中,过程的返回值可以有多个    
C)当数组作为函数过程的参数时,既能以值方式传递,也能以传址方式传递     
D)如果不指明函数过程参数的类型,则该参数没有数据类型

(27)在窗体上画两个标签和一个命令按钮,其名称分别为Label1、Label2和Command1,然后编写如下程序:
  Private Sub func(L As Label)
       L.Caption=”1234”
  End sub

  Private Sub Form_Load()
       Label2.Caption=10
  End sub

  Private Sub Command1_Click()
     A=Val(Label2.Caption)
     Call func(Label1)
     Label2.Caption=a
  End sub
程序运行后,单击命令按钮,则在两个标签中显示的内容分别为
A)ABCD和10                  B)1234和100    
C)ABCD和100                 D)1234和10

(28)在窗体上画一个命令按钮(名称为Command1),并编写如下代码:
 Functin Fun1(Byval a As Integer ,b As Integer) As Integer
      Dim t As Integer
      t=a-b
      b=t+a
      Fun1=t+b
 End Function

Private Sub Command1_Click()
     Dim x As Integer
     X=10
     Print Fun1(Fun1(x,(Fun1(x,x-1))),x-1)
End Sub
程序运行后,单击命令按钮,输出结果是
A)10        B)0          C)11     D)21

(29)以下关于过程及过程参数的描述中,错误的是
A)过程的参数可以是控件名称    
B)调用过程时使用的实参的个数应与过程形参的个数相同    
C)只有函数过程能够将过程中处理的信息返回到调用程序中     
D)窗体可以作为过程的函数
(30)有如下通用过程:
   Public Function Fun(xStr As String) As String
      Dim tStr As String ,strL As Integer
      tStr=””
      strL=Len(xStr)
      i=strL/2
      Do While i<=strL
          tStr=tStr & Mid(xStr,i+1,1)
          i=i+1
      Loop
      Fun=tStr & tStr
   End Function
  在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
Dim S1 As String
S1=”ABCDEF”
Text1.Text=Lcase(Fun(S1))
End Sub
程序运行后,单击命令按钮,文本框中显示的是
A)ABCDEF         B)abcdef         C)defded        D)defabc

(31)在窗体上画一个命令按钮和一个文本框(名称分别为Command1和Text1),并把窗体的Keyprewiew属性设置为True,然后编写如下代码:
Dim SaveAll As String
Private Sub Form_Load ()
   Show
   Text1.Text=””
   Text1.SetFocus
End Sub

Private Sub Command1_Click()
   Text1.Text=Lcase(SaveAll)+SaveAll
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
SaveAll=SaveAll+Chr(KeyAscii)
End Sub
程序运行后,直接用键盘输入:VB,再单击命令按钮,则文本框中显示的内容为
A)vbVB         B)不显示任何信息       C)VB         D)出错

(32)设有以下程序:
  Private Sub Form_Click()
      X=50
      For i=1 To 4
         Y=InputBox(“请输入一个整数”)
         Y=Val(y)
          If y Mod 5=0 Then
              a=a+y
              x=y
          Else
              a=a+x
          End If
        Next i
        Print a
     End Sub
   程序运行后,单击窗体,在输入对话框中依次输入15、24、35、46,输出结果为
  A)100        B)50          C)120            D)70
(33)以下关于菜单的叙述中,错误的是
   A)当前窗体为活动窗体时,用Ctrl+E键可以打开菜单编辑器    
B)把菜单项的Enabled属性设置为False,则可删除该菜单项    
C)弹出式菜单在菜单编辑器中设计     
D)程序运行时,利用控件数组可以实现菜单项的增加或减少
(34)以下叙述中错误的是
A)在程序运行时,通用对话框控件是不可见的   
 B)调用同一个通用对话框控件的不同方法(如ShowOpen 或ShowSave)可以打开不同的对话框窗口   
C)调用通用对话框控件的ShowOpen方法,能够直接打开在该通用对话框中指定的文件     D)调用通用对话框控件的ShowColor方法,可以打开颜色对话框窗口
(35)设在工程文件中有一个标准模块,其中定义了如下记录类型:
Type Books
     Name As String * 10
     TelNum As String * 20
End Type
在窗体上画一个名为Command1的命令按钮,要求当执行事件过程Command1_Click时,在顺序文件Person.txt中写入一条Books类型的记录。下列能够完成该操作的事件过程是
A)Private Sub Command1_Click()
Dim B As Books
Open “Person.txt” For Output  As #`1
B.Name=InputBox(“输入姓名”)
B.TelNum=InputBox(“输入电话号码”)
Write #1,B.Name,B.TelNum
Close #1
End Sub
B)Private Sub Command1_Click()
Dim B As Books
Open “Person.txt” For input  As #`1
B.Name=InputBox(“输入姓名”)
B.TelNum=InputBox(“输入电话号码”)
Print  #1,B.Name,B.TelNum
Close #1
End Sub
 C)Private Sub Command1_Click()
Dim B As Books
Open “Person.txt” For Output  As #`1
B.Name=InputBox(“输入姓名”)
B.TelNum=InputBox(“输入电话号码”)
Write #1,B
Close #1
End Sub
D)Private Sub Command1_Click()
Open “Person.txt” For input  As #`1
Name=InputBox(“输入姓名”)
TelNum=InputBox(“输入电话号码”)
Print #1, Name, TelNum
Close #1
End Sub

二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题纸上【1】-【15】序号的横线上,答在试卷上,在试卷上不得分,
   注意:以命令关键字填空的必须写完整。
(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有 【1】 个元素。
(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于  【2】 测试。
(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和  【3】 。
(4)数据库系统的核心是  【4】
(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是  【5 】框。
(6)窗体如图所示,其中汽车是名称为Image1的图像框,命令按钮的名称为Command1,计时器的名称为Timer1,直线的名称为Line1。程序运行时,单击命令按钮,则汽车每0.1秒向左移动100,车头到达左边的直线时停止移动。请填空完成下面的属性设置和程序,以便实现上述功能。

1 Timer1的Interval属性的值应事先设置为【6】
2 Private Sub Command1_Click()
        Timer1.Enabled=True
   End Sub

   Private Sub Timer1_Timer()
       If Image1.Left>=【7】Then
         Image1.Left=【8】-100
       End If
   End Sub

(7)设窗体上有一个名称为Combol 的组合框,并有以下程序:
Private Sub Combol_KeyPress(KeyAscii As Integer)
If【9】=13 Then                        ‘回车符的ASCII码是13
For k=0 To Combol.ListCount-1
If Combol.Text= Combol.List(k)  Then
Combol.Text=””
Exit For
End If
Next k
If Combol.Text <> “” Then
Combol.AddItem【10】
End If
End If
End Sub
程序的功能是:在组合框的编辑区中输入文本后按回车键,则检查列表中有无与此文本相同的项目,若有,则把编辑区中的文本删除,否则把编辑区中文本添加到列表的尾部。
请填空。

(8)在当前目录下有一个名为“myfile.txt”的文本文件,其中有若干行文本。下面程序的功能是读入此文件中的所有文本行,按行计算每行字符的ASCII码之和,并显示在窗体上。请填空。
Private Sub Commandl_Click()
Dim ch$,ascii As Integer
Open “myfile.txt” For【11】 As #1
While Not EOF(1)
Line Input #1,ch
ascii=toasill (【12】)
Print ascii
Wend 
Close #1
End Sub

Private Function toascii(mystr$) As Integer
n=0
For k=1 To 【13】
n=n+Asc(Mid(mystr,k,l))
Next k
Toascii=n
End Function

(9)本程序实现文本加密。先给定序列:a1,a2,……an,它们的取值范围是1~n,且互不相同。加密算法是:把原文本中第k个字符放到加密后的文本的第ak个位置处。若原文本长度大于n,则只对前n个字符加密,后面的字符不变;若原文本长度小于n,则在后面补字符“*”使文本长度为n后再加密。
例如:若给定序列a1,a2,…a7分别为2,5,3,7,6,1,4
当文本为“PROGRAM”时,加密后的文本为“APOMRRG”
当文本为“PROGRAMMING”,加密后的文本为“APOMRRGMING”
当文本为“THANK”时,加密后的文本为“TA*HKN”
下面的过程code实现这一算法。其中参数数组a()中存放给定序列(个数与数组a的元素个数相等)a1,a2,a3…的值,要加密的文本放在参数变量mystr中。过程执行完毕,加密后的文本仍放在变量mystr中。请填空。
Option Base 1
Private Sub code(a () As Integer,mystr As String)
Dim ch As string,cl As String
n=Ubound(a)-Len(mystr)
If n>0 Then
mystr= mystr& Strings(n,”*”)
End If
Ch=mystr
For k=【14】 To Ubound(a)
Cl=Mid(mystr,k,l)
n=【15】
Mid$(ch,n)=cl
Next k
Mystr=ch
End Sub

 

 


参考答案


1 选择题:
1-5: DDCDC
6-10:ABAAC
11-15:DBBCA
16-20:DBABD
21-25:ADBDC
26-30:ADBCC
31-35:AABCA

2 填空题
1、19
2、白盒
3、顺序结构
4、数据库管理系统
5、菱形
6、100
7、Line1.x1
8、Image1.Left
9、KeyAscii
10、Combo1.Text
11、Input
12、ch
13、Len(mystr)
14、1
15、a(k)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics