计算机等级考试二级VB笔试.docx
《计算机等级考试二级VB笔试.docx》由会员分享,可在线阅读,更多相关《计算机等级考试二级VB笔试.docx(22页珍藏版)》请在冰豆网上搜索。
计算机等级考试二级VB笔试
2012年3月全国计算机等级考试二级笔试试卷
VisualBasic语言程序设计
(考试时间90分钟,满分100分)
一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是()。
A)循环队列是队列的一种链式存储结构B)循环队列是队列的一种顺序存储结构
C)循环队列是非线性结构D)循环队列是一种逻辑结构
(2)下列叙述中正确的是
A)栈是一种先进先出的线性表B)队列是一种后进先出的线性表
C)栈与队列都是非线性结构D)以上三种说法都不对
【解析】栈是一种后进先出(LastInFirstOut)或先进后出(FirstInLastOut)的线性表,它的一端封闭(称为栈底),在另一端进行插入和删除操作,允许插入和删除的一端称为栈顶。
队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。
允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为排头(也称为队头),通常也用一个排头指针(front)指向排头元素的前一个位置。
显然,在队列这种数据结构中,最先插入的元素将最先能够被删除,最后插入的元素最后才能被删除。
因此,队列又称为“先进先出”(FirstInFirstOut,FIFO)或“后进后出”(LastInLastOut,LILO)的线性表,它体现了“先来先服务”的原则。
栈与队列都是线性结构。
答案:
D
(3)一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为
A)16B)10C)6D)4
【解析】设二叉树结点数为n,度为2的结点数为n2,度为1的结点数为n1,度为0(即叶子结点)的结点数为n0。
则有n=n2+n1+n0。
另外,在二叉树中,度为0的结点数是度为2的结点数加1,因此有n0=n2+1。
此题中,n=25,n0=5,则n2=n0-1=5-1=4,因此n1=n-n2-n0=25-4-5=16。
答案:
A
(4)在下列模式中,能够给出数据库物理存储结构与物理存取方法的是
A)外模式B)内模式C)概念模式D)逻辑模式
答案:
B
(5)在满足实体完整性约束的条件下
A)一个关系中应该有一个或多个候选关键字
B)一个关系中只能有一个候选关键字
C)一个关系中必须有多个候选关键字
D)一个关系中可以没有候选关键字
答案:
A
(6)有三个关系R、S和T如下:
R
S
T
A
B
C
A
B
C
A
B
C
a
1
2
a
1
2
b
2
1
b
2
1
d
2
1
c
3
1
c
3
1
则由关系R和S得到关系T的操作是
A)自然连接B)并C)交D)差
(7)软件生命周期中的活动不包括
A)市场调研B)需求分析C)软件测试D)软件维护
【解析】通常,将软件产品从提出、实现、使用、维护到停止使用甚至退役的过程称为软件生命周期。
任何一个软件产品或软件系统都要经历软件定义、软件开发、软件维护直至被淘汰这样一个全过程。
因此,软件生命周期可分为定义阶段、开发阶段和维护阶段。
定义阶段包括可行性研究和需求分析;开发阶段包括概要设计、详细设计、实现和测试;维护阶段包括使用、维护和退役。
因此软件生命周期—般包括可行性研究和需求分析、设计、实现、测试、交付使用以及维护等活动。
答案:
A
(8)下面不属于需求分析阶段任务的是
A)确定软件系统的功能需求B)确定软件系统的性能需求
C)需求规格说明书评审D)制定软件集成测试计划
【解析】需求分析阶段的任务是确定待开发软件的功能、性能、数据、界面等要求,从而确定系统的逻辑模型。
需求分析阶段的主要工作包括:
①需求获取:
确定对目标系统的各方面需求;②需求分析:
对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型;③编写需求规格说明书:
为用户、分析人员和设计人员之间进行交流提供方便。
④需求评审:
对需求分析阶段的工作进行复审,验证需求文档的一致性、可靠性、完善性和有效性。
软件测试属于软件生命周期中的软件开发阶段,不属于需求分析阶段。
软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试和系统测试。
答案:
D
(9)在黑盒测试方法中,设计测试用例的主要根据是
A)程序内部逻辑B)程序外部功能
C)程序数据结构D)程序流程图
【解析】黑盒测试也称为功能测试或数据驱动测试。
黑盒测试是对软件已试验的功能是否满足需求进行测试和验证,它主要根据需求规格说明所规定的功能来设计测试用例,检查程序的功能是否符合它的功能说明,它不考虑程序的内部结构和处理过程。
答案:
B
(10)在软件设计中不使用的工具是
A)系统结构图B)PAD图
C)数据流图(DFD图)D)程序流程图
【解析】软件设计一般分为两步完成,分别是概要设计和详细设计。
系统结构图是概要设计阶段使用的工具,而详细设计(过程设计)常见的工具有:
(1)图形工具:
程序流程图、N-S图(盒图)、PAD(ProblemAnalysisDiagram,问题分析图)
(2)表格工具:
判定表。
(3)语言工具:
PDL(过程设计语言)。
数据流图(DataFlowDiagram,DFD)是需求分析阶段结构化分析的常用工具。
需求分析阶段其他常用的结构化分析工具还有数据字典(DataDictionary,DD)、结构化语言、判定表和判定树等。
答案:
C
(11)以下合法的VB变量名是
A)caseB)name10C)t-nameD)x*y
答案:
B
【解析】变量命名规则:
(1)字母、数字、下划线。
(2)不能使用保留字。
(3)不能以数字开头。
本题中,case是保留字,t-name中是中划线,不是下划线。
x*y中的*不是字母、也不是数字、也不是下划线。
(12)设x是小于10的非负数。
对此叙述,以下正确的VB表达式是
A)0≤x<10B)0<=x<10
C)x≥0Andx<10D)x>=0Orx<=10
答案:
C
【解析】x是小于10的非负数。
即x大于等于0并且小于10。
A选项和B选项是数学的描述方式,不是VB的描述方式。
“x大于等于0并且小于10”中的“并且”要使用And而不是Or(或者)。
(13以下关于窗体的叙述中,错误的是
A)窗体的Name属性用于标识一个窗体
B)运行程序时,改变窗体大小,能够触发窗体的Resize事件
C)窗体的Enabled属性为False时,不能响应单击窗体的事件
D)程序运行期间,可以改变Name属性值
答案:
D
【解析】Name属性只能在设计阶段通过属性窗口设置,属于只读属性,不能在程序运行时修改其值。
(14)下面定义窗体级变量a的语句中错误的是
A)Dima%B)Privatea%
C)PrivateaAsIntegerD)Statica%
答案:
D
【解析】Static只能用在过程(窗体模块的过程或标准模块的过程)内部声明静态变量,不能用在窗体模块或标准模块的通用段。
(15)表达式Int(Rnd(0)*50)所产生的随机数范围是
A)(0,50)B)(1,50)C)(0,49)D)(1,49)
答案:
C
【解析】因为Rnd产生的随机数范围是0~0.999999,Int函数返回不大于其参数值的一个整数,例如Int(8.6)返回8而不是9。
Int(-8.6)返回-9而不是-8。
(16)设x=5,执行语句Printx=x+10,窗体上显示的是
A)15B)5C)TrueD)False
答案:
D
【解析】Print使用方式为:
Print输出列表。
在语句Printx=x+10中,x=x+10是一个表达式而不是一条语句。
作为表达式,x=x+10的值是“False”,因为在该表达式中,=作为关系运算符使用,而不是作为赋值运算符使用。
此处,=左边的x是5,=右边的值是15,=两边的值不同,所以是False。
只有当x=x+10作为语句时,才先计算=后面的值,然后把计算的值作为=左边的变量的值。
(17)设有如下数组声明语句:
Dimarr(-2To2,0To3)AsInteger
该数组所包含的数组元素个数是
A)20B)16C)15D)12
答案:
A
【解析】-2To2指的是-2、-1、0、1、2(共5),0To3指的是0、1、2、3(共4),因此元素个数是5×4=20
(18)现有由多个单选按钮构成的控件数组,用于区别该控件数组中各控件的属性是
A)NameB)IndexC)CaptionD)Value
答案:
B
(19)设有分段函数:
以下表示上述分段函数的语句序列中错误的是
A)SelectCasexB)Ifx<0Then
CaseIs<0y=5
y=5ElseIfx<=5Then
CaseIs<=5,Is>0y=2*x
y=2*xElse
CaseElsey=x*x+1
y=x*x+1EndIf
EndSelect
C)y=IIf(x<0,5,IIf(x<=5,2*x,x*x+1))D)Ifx<0Theny=5
Ifx<=5Andx>=0Theny=2*x
Ifx>5Theny=x*x+1
答案:
A
【解析】在条件CaseIs<0的情况下,CaseIs<=5,Is>0是错误的。
在条件CaseIs<0的情况下,CaseIs<=5,Is>0只需表示成CaseIs<=5即可。
(20)设程序中有如下语句:
x=InputBox("输入","数据",100)
Printx
运行程序,执行上述语句,输入5并单击输入对话框上的“取消”按钮,则窗体上输出
A)0B)5C)100D)空白
答案:
D
【解析】InputBox函数的功能是在输入对话框中显示提示(此处为“输入”),等待用户输入文本或单击按钮,并返回文本框内容。
如果用户单击“确定”或按下ENTER,则InputBox函数返回文本框中的内容。
如果用户单击“取消”按钮,则函数返回一个零长度字符串("")。
本题要注意的是InputBox函数返回的是String类型的数据,由于返回零长度字符串(""),所以在窗体上输出空白而不是0。
(21)现有如下一段程序:
OptionBase1
PrivateSubCommand1_Click()
Dima
a=Array(3,5,7,9)
x=1
Fori=4To1Step-1
s=s+a(i)*x
x=x*10
Next
Prints
EndSub
执行程序,单击Command1命令按钮,执行上述事件过程,输出结果是
A)9753B)3579C)35D)79
答案:
B
【解析】因为有OptionBase1语句,因此a
(1)=3,a
(2)=5,a(3)=7,(4)=9。
i
x
a(i)
s=s+a(i)*x
4
1
9
s=0+9*1=9
3
10
7
s=9+7*10=79
2
100
5
s=79+5*100=579
1
1000
3
s=579+3*1000=3579
(22)设有一个命令按钮Command1的事件过程以及一个函数过程,程序如下:
OptionBase1
PrivateSubCommand1_Click()
StaticxAsInteger
x=f(x+5)
Cls
Printx
EndSub
PrivateFunctionf(xAsInteger)AsInteger
f=x+x
EndFunction
连续单击命令按钮3次,第3次单击命令按钮后,窗体上显示的计算结果是
A)10B)30C)60D)70
答案:
D
【解析】Static在过程级别中使用,用于声明变量并分配存储空间。
在整个代码运行期间都能保留使用Static语句声明的变量的值。
本题中,x为Static类型的变量,其初值为0。
第一次单击按钮,x=f(5),调用Function过程,执行f=5+5,Function过程返回值为10,所以x=10。
第二次单击按钮时,x=f(10+5),调用Function过程,执行f=15+15,Function过程返回值为30,所以x=30。
第三次单击按钮时,x=f(30+5),调用Function过程,执行f=35+35,Function过程返回值为70,所以x=70。
窗体上显示70。
(23)以下关于菜单设计的叙述中错误的是
A)各菜单项可以构成控件数组
B)每个菜单项可以看成是一个控件
C)设计菜单时,菜单项的“有效”未选,即
,表示该菜单项不显示
D)菜单项只响应单击事件
答案:
C
【解析】表示该菜单项不显示,应该是
,而不是
。
(24)以下关于多窗体的叙述中,正确的是
A)任何时刻,只有一个当前窗体
B)向一个工程添加多个窗体,存盘后生成一个窗体文件
C)打开一个窗体时,其他窗体自动关闭
D)只有第一个建立的窗体才是启动窗体
答案:
A
【解析】如果工程中有多个窗体,存盘时每个窗体对应一个窗体文件。
所以B错误。
打开一个窗体,其他窗体不会自动关闭,只是成为非活动窗体。
所以C错误。
VB默认第一个窗体是启动窗体,但可以通过工程属性设置其他窗体为启动窗体。
所以D错误。
(25)窗体上有一个名称为CommonDialog1的通用对话框,一个名称为Command1的命令按钮,并有如下事件过程:
PrivateSubCommand1_Click()
CommonDialog1.DefaultExt="doc"
CommonDialog1.FileName="VB.txt"
CommonDialog1.Filter="All(*.*)|*.*|Word|*.Doc|"
CommonDialog1.FilterIndex=1
CommonDialog1.ShowSave
EndSub
运行上述程序,如下叙述中正确的是
A)打开的对话框中文件“保存类型”框中显示“All(*.*)”
B)实现保存文件的操作,文件名是VB.txt
C)DefaultExt属性FileName属性所指明的文件类型不一致,程序出错
D)对话框的Filter属性没有指出txt类型,程序运行出错
答案:
A
【解析】注意,通用对话框的FilterIndex属性取值从1开始,不是从0开始。
所以对于语句
CommonDialog1.Filter="All(*.*)|*.*|Word|*.Doc|"
12
在上图中,FilterIndex属性,All(*.*)为1,Word为2。
(26)设程序中有如下数组定义和过程调用语句:
Dima(10)AsInteger
......
Callp(a)
如下过程定义中,正确的是
A)PrivateSubp(aAsInteger)B)PrivateSubp(a()AsInteger)
C)PrivateSubp(a(10)AsInteger)D)PrivateSubp(a(n)AsInteger)
答案:
B
【解析】定义过程时,如果形参为数组,无需指明数组的长度,但必须把数组的标志(就是一对圆括号)写出。
所以C和D均错误,B正确。
A选项因为在定义过程时形参不是数组,所以是错误的。
(27)若要获得组合框中输入的数据,可使用的属性是
A)ListIndexB)CaptionC)TextD)List
答案:
C
【解析】组合框是由一个文本框和列表框组合而成,要获得组合框中输入的数据(即文本框中输入的数据),只需使用组合框的Text属性即可。
(28)在窗体上画两个名称分别为Text1、Text2的文本框,Text1的属性为“DataBase”,如图所示。
现有如下事件过程:
PrivateSubText1_Change()
Text2.Text=Mid(Text1,1,5)
EndSub
运行程序,在文本框Text1中原有字符之前输入a,Text2中显示的是
A)DataAB)DataBC)aDataD)aBase
答案:
C
【解析】在文本框Text1中原有字符之前输入a,此时文本框Text1的内容变为aDataBase。
对于文本框的Change事件而言,只要文本框的内容发生改变,即触发该事件。
对于Mid(Text1,1,5)而言,其功能是从第1个位置开始,截取5个字符。
Text1的值是字符串“aDataBase”,第1个位置是字符“a”,从“a”开始截取5个,所以结果是“aData”。
(29)有如下程序:
OptionBase1
PrivateSubCommand1_Click()
Dimarr(10)
arr=Array(10,35,28,90,54,68,72,90)
ForEachaInarr
Ifa>50Then
Sum=Sum+a
EndIf
Nexta
EndSub
运行上述程序时出现错误,错误之处是
A)数组定义语句不对,应改为DimarrB)没有指明For循环的终值
C)应在For语句之前增加Sum=0D)Nexta应改为Next
答案:
A
【解析】Array函数的功能是为一维数组初始化。
在使用该函数时,要求=左边的数组arr是下面的三种形式之一:
(1)arr不声明直接使用,即arr为Variant类型的变量。
(2)采用Dimarr的声明形式
(3)采用Dimarr()的声明形式
(30)要求产生10个随机整数,存放在数组arr中。
从键盘输入要删除的数组元素的下标,将该元素中的数据删除,后面元素中的数据依次前移,并显示删除后剩余的数据。
现有如下程序:
OptionBase1
PrivateSubCommand1_Click()
Dimarr(10)AsInteger
Fori=1To10'循环1
arr(i)=Int(Rnd*100)
Printarr(i);
Next
Print
X=InputBox("输入1-10的一个整数:
")
Fori=X+1To10'循环2
arr(i-1)=arr(i)
Next
Fori=1To10'循环3
Printarr(i);
Next
EndSub
程序运行后发现显示的结果不正确。
应该进行的修改是
A)产生随机数时不使用Int函数B)循环2的初值应为i=x
C)数组定义改为Dima(11)AsIntegerD)循环3的循环终值应改为9
答案:
D
【解析】删除一个元素后,数组中只有9个元素。
由于有OptionBase1,数组下标的下界从1开始,所以最后一个元素的下标是9,而不是10。
(31)使用驱动器列表框Drive1、目录列表框Dir1、文件列表框File1时,需要设置控件的同步,以下能够正确设置两个控件同步的命令是
A)Dir1.Path=Drive1.PathB)File1.Path=Dir1.Path
C)File1.Path=Drive1.PathD)Drive1.Drive=Dir1.Path
答案:
B
【解析】在程序运行时,驱动器列表框(DriveListBox)的Drive属性用来设置或返回选择的驱动器(缺省值是当前驱动器),目录列表框(DirListBox)的Path属性用来设置或返回所选择的目录(缺省值是当前目录),文件列表框(FileListBox)的Path属性用来设置或返回其当前的目录(缺省值是当前路径),
首先A和C可以排除,因为驱动器列表框没有Path属性,所以Drive1.Path的使用是错误的。
驱动器列表框的Drive属性,用来设置或返回所选择的驱动器名。
Drive属性只能用程序代码设置,不能通过属性窗口设置。
其格式为:
驱动器列表框名称.Drive[=驱动器名]
这里的“驱动器名”是指定的驱动器,如果省略,则Drive属性是当前驱动器。
如果所选择的驱动器在当前系统中不存在,则产生错误。
每次重新设置驱动器列表框的Drive属性时,都将引发Change事件。
驱动器列表框与目录列表框有着密切联系。
在一般情况下,改变驱动器列表框中的驱动器名后,目录列表框中的目录应当随之变为该驱动器上的目录,也就是使驱动器列表框和目录列表框产生同步(Synchronize)效果。
这可以通过一个简单的语句来实现。
当改变驱动器列表框的Drive属性时,将产生Change事件。
当Drive属性改变时,Drive_Change事件过程就发生反应。
因此,只要把Drive1.Drive的属性值赋给Dir1.Path,就可产生同步效果。
即:
PrivateSubDrive1_Change()
Dir1.Path=Drive1.Drive
EndSub
这样,每当改变驱动器列表框的Drive属性时,将产生Change事件,目录列表框中的目录变为该驱动器的目录。
综合上面的分析,选项D是错误的。
在实际应用中,驱动器列表框、目录列表框和文件列表框往往需要同步操作,这可以通过Path属性的改变引发Change事件来实现。
例如:
PrivateSubDir1_Change()
File1.Path=Dir1.Path
EndSub
该事件过程使窗体上的目录列表框Dir1和文件列表框File1产生同步。
因为目录列表框Path属性的改变将产生Change事件,所以在Dir1_Change事件过程中,把Dir1.Path赋给File1.Path,就可以产