(考试时间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
③调试并运行程序,关闭程序后按题目要求存盘。