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)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值