1、二级 VISUAL+BASIC 笔试-420 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.程序流程图中带有箭头的线段表示的是( )A图元关系 B数据流C控制流 D调用关系(分数:2.00)A.B.C.D.2.结构化程序没计的基本原则不包括( )A多态性 B自顶向下C模块化 D逐步求精(分数:2.00)A.B.C.D.3.软件设计中模块划分应遵循的准则是( )A低内聚低耦合 B高内聚低耦合C低内聚高耦合 D高内聚高耦合(分数:2.00)A.B.C.D.4.在软件开发中,需求分析阶段产生的主要文档是( )A可行性分析报告 B软件需求规格说明
2、书C概要设计说明书 D集成测试计划(分数:2.00)A.B.C.D.5.算法的有穷性是指( )A算法程序的运行时间是有限的 B算法程序所处理的数据量是有限的C算法程序的长度是有限的 D算法只能被有限的用户使用(分数:2.00)A.B.C.D.6.对长度为 n 的线性表排序,在最坏的情况下,比较次数不是 n(n-1)/2 的排序方法是( )A快速排序 B冒泡排序C直接插入排序 D堆排序(分数:2.00)A.B.C.D.7.下列关于栈的叙述正确的是( )A栈按“先进先出”组织数据 B栈按“先进后出”组织数据C只能在栈底插入数据 D不能删除数据(分数:2.00)A.B.C.D.8.在数据库设计中,将
3、 E-R 图转换成关系数据模型的过程属于( )A需求分析阶段 B概念设计阶段C逻辑设计阶段 D物理设计阶段(分数:2.00)A.B.C.D.9.有三个关系 R、S 和 T 如下:(分数:2.00)A.B.C.D.10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )A课号,成绩 B学号,成绩C学号,课号 D学号,姓名,成绩(分数:2.00)A.B.C.D.11.以下叙述中错误的是( )A标准模块文件的扩展名是.basB标准模块文件是纯代码文件C在标准模块中声明的全局变量可以在整个工
4、程中使用D在标准模块中不能定义过程(分数:2.00)A.B.C.D.12.在 Visual Basic 中,表达式 3 * z/5 Mod 3 的值是( )A1 B0C3 D出现错误提示(分数:2.00)A.B.C.D.13.以下选项中,不合法的 Visual Basic 变量名是( )Aa5b B_xyzCa_b Dandif(分数:2.00)A.B.C.D.14.以下数组定义语句中,错误的是( )AStatic a(10)AS Integer BDim c(3,1 t0 4)CDim d(-10) DDim b(0 to 5,1 to 3) As Integer(分数:2.00)A.B.C
5、.D.15.现有语句:y=IIf(x0,x Mod 3,0),设 x=10,则 Y 的值是( )A0 B1C3 D语句有错(分数:2.00)A.B.C.D.16.为了使文本框同时具有垂直和水平滚动条,应先把 MultiLine 属性设置为 True,然后再把 Scrollbars属性设置为( )A0 B1C2 D3(分数:2.00)A.B.C.D.17.文本框 Text1 的 KeyDown 事件过程如下:Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer)End Sub其中参数 KeyCode 的值表示的是发生此事件时(
6、 )A是否按下了 Alt 键或 Ctrl 键 B按下的是哪个数字键C所按的键盘键的键码 D按下的是哪个鼠标键(分数:2.00)A.B.C.D.18.窗体上有一个名称为 Hscroll1 的滚动条,程序运行后,当单击滚动条两端的箭头时,立即在窗体上显示滚动框的位置(即刻度值)。下面能够实现上述操作的事件过程是( )APrivate Sub Hscroll1_Change()Print Hscroll1.ValueEnd Sub BPrivate Sub Hsetroll1_Change()Print Hscroll1.SmallChangeEnd SubCPrivate Sub Hscroll1
7、_Scroll()Print Hscroll1.ValueEnd Sub DPrivate Sub Hscroll1_Scroll()Print Hscroll1.SmallChangeEnd Sub(分数:2.00)A.B.C.D.19.若已把一个命令按钮的 Default 属性设置为 True,则下面可导致按钮的 Click 事件过程被调用的操作是( )A用鼠标右键单击此按钮 B按键盘上的 Esc 键C按键盘上的 Enter 键 D用鼠标右键双击此按钮(分数:2.00)A.B.C.D.20.要使两个单选按钮属于同一个框架,正确的操作是( )A先画一个框架,再在框架中画两个单选按钮B先画一个
8、框架,再在框架外画两个单选按钮,然后把单选按钮拖到框架中C先画两个单选按钮,再画框架将单选按钮框起来D以上三种方法都正确(分数:2.00)A.B.C.D.21.能够存放组合框的所有项目内容的属性是( )ACaption BTextCList DSelected(分数:2.00)A.B.C.D.22.设窗体上有一个标签 Label1 和一个计时器 Timer1,Timer1 的 Interval 属性被没置为 1000,Enabled属性被设置为 True。要求程序运行时每秒在标签中显示一次系统当前时间。以下可以实现上述要求的事件过程是( )APrivate Sub Timer1_Timer()
9、Label1.Caption=TrueEnd SubBPrivate Sub Timer1_Timer()Label1.Caption=Time$End SubCPrivate Sub Timer1_Timer()Label1.Interval=1End SubDPrivate Sub Timer1_Timer()For k=1 To Timer1.IntervalLabel1.Caption=TimerNext kEnd Sub(分数:2.00)A.B.C.D.23.设有如图所示窗体和以下程序:Private Sub Command1_Click()Text1.Text=“Visual Ba
10、sic“End SubPrivate Sub Text1_LostFocus()If Text1.Text“BASIC“ ThenText1.Text=“ “Text1.SetFocusEnd IfEnd Sub(分数:2.00)A.B.C.D.24.窗体上有一个名称为 Command1 的命令按钮,其事件过程如下:Private Sub Command1_Click()x=“VisualBasicProgramming“a=Right(x,11)b=Mid(x,7,5)C=Msgbox(a,b)End Sub运行程序后单击命令按钮,以下叙述中错误的是( )A信息框的标题是 Basic B信息
11、框中的提示信息是 ProgrammingCC 的值是函数的返回值 DMsgBox 的使用格式有错(分数:2.00)A.B.C.D.25.设工程文件包含两个窗体文件 Form1.frm、Form2.frm 及一个标准模块文件 Module1.bas,两个窗体上分别只有一个名称 Command1 的命令按钮。Form1 的代码如下:Public X As IntegerPrivate Sub Form_load()x=1y=5End SubPrivate Sub Command1_Click()Form2.ShowEnd SubForm2 的代码如下:Private Sub Command1_Cl
12、ick()Print Form1.x,yEnd SubModule1 的代码如下:Public y As Integer运行以上程序,单击 Form1 的命令按钮 Command1,则显示 Form2;再单击 Form2 上的命令按钮Command1,则窗体上显示的是( )A1 5 B0 5 C0 0 D程序有错(分数:2.00)A.B.C.D.26.窗体上有一个名称为 Text1 的文本框,一个名称为 Command1 的命令按钮。窗体文件的程序如下:Private Type xa As Integerb As IntegerEnd TypePrivate Sub Command1_Clic
13、k()Dim y As xy.a=InputBox(“ “)If y.a/2=y.a/2 Theny.b=y.a * y.aElsey.b=Fix(y.a/2)End IfText1.Text=y.bEnd Sub对以上程序,下列叙述中错误的是( )Ax 是用户定义的类型BInputBox 函数弹出的对话框中没有提示信息C若输入的是偶数,y.b 的值为该偶数的平方DFix(y.a/2)把 y.a/2 的小数部分四舍五入,转换为整数返回(分数:2.00)A.B.C.D.27.窗体上有一个名称为 CD1 的通用对话框控件和由四个命令按钮组成的控件数组 Command1,其下标从左到右分别为 0、1
14、、2、3,窗体外观如图所示。命令按钮的事件过程如下:Private Sub Command1_Click(Index As Integer)Select Case IndexCase 0CD1.Action=1Case 1CD1.ShowSaveCase 2CD1.Action=5Case 3EndEnd SelectEnd Sub(分数:2.00)A.B.C.D.28.窗体上有两个水平滚动条 HV、HT,还有一个文本框 Text1 和一个标题为“计算”的命令按钮Commandl1,如图所示,并编写了以下程序:Private Sub Command1_Click()Call Cale(HV.V
15、alue,HT.Value)End SubPublic Sub Cale(x AS Integer,y AS Integer)Text1.Text=x*yEnd Sub(分数:2.00)A.B.C.D.29.现有如下程序:Private Sub Command1_Click()S=0For i=1 to 5S=S+f(5+i)NextPrint SEnd SubPublic Function f(x As Integer)If x10 Thentx+1Elsetx+2End Iff=tEnd Function运行程序,则窗体上显示的是( )A38 B49 C61 D70(分数:2.00)A.B
16、.C.D.30.窗体上有一个用菜单编辑器设计的菜单(见上图)。运行程序,并在窗体上单击鼠标右键,则弹出一个快捷菜单,如图所示。以下叙述中错误的是( )(分数:2.00)A.B.C.D.31.窗体上有一个名称为 Picture1 的图片框控件,一个名称为 Label1 的标签控件,如下图所示。现有如下程序:Public Sub Display(x As Control)If Type Of x is Label Thenx.Caption=“计算机等级考试“Elsex.Picture=Load Picture(“pic.jpg“)End IfEnd SubPrivate Sub Label1_C
17、lick()Call Display(Label1)End SubPrivate Sub Picture1_Click()Call Display(Picture1)End Sub(分数:2.00)A.B.C.D.32.窗体上有两个名称分别为 Text1、Text2 的文本框。Text1 的 KeyUp 的事件过程如下:Private Sub Text1_KeyUp(KeyCode As Integer,shift As Integer)Dim C As stringText2.Text=Chr(Asc(c)+2)End Sub当向文本框 Text1 中输入小写字母 a 时,文本框 Text2
18、 中显示的是( )AA Ba CC Dc(分数:2.00)A.B.C.D.33.设窗体上有一个文体框 Text1 和一个命令按钮 Command1,并有以下事件过程:Private Sub Command1_Click()Dim S As String,ch As StringS=“ “For k=1 To Len(Text1)ch=Mid(Text1,k,1)S=ch+SNext kText1.Text=SEnd Sub程序执行时,在文本框中输入“Basic”,然后单击命令按钮,则 Text1 中显示的是( )ABasic BcisaB CBASIC DCISAB(分数:2.00)A.B.C
19、.D.34.某人编写了如下程序,用来求 10 个整数(整数从键盘输入)中的最大值:Private Sub Command1_Click()Dim a(10) As Integer,max As IntegerFor k=1 To 10a(K)=InputBox(“输入一个整数“)Next kMax=0For k=1 To 10If a(k)max ThenMaxa(k)End IfNext kPrint maxEnd Sub运行程序时发现,当输入 10 个正数时,可以得到正确结果,但输入 10 个负数时结果是错误的,程序需要修改,下面的修改中可以得到正确运行结果的是( )A把 If a(k)m
20、ax Then 改为 If a(k)max ThenB把 maxa(k)改为 a(k)maxC把第 2 个循环语句 For k1 TO 10 改为 For k=2 TO 10D把 max=0 改为 max=a(10)(分数:2.00)A.B.C.D.35.已知在 4 行 3 列的全局数组 score(4,3)中存放了 4 个学生 3 门课程的考试成绩(均为整数)。现需要计算每个学生的总分,某人编写程序如下:Option Base 1Private Sub Command1_Click()Dim sum As IntegerSum=0For i=1 To 4For j=1 To 3Sum=sum
21、+score(i,j)Next jPrint“第“i“个学生的总分是:“;sumNext iEnd Sub运行此程序时发现,除第 1 个人的总分计算正确外,其他人的总分是错误的。程序需要修改,以下修改方案中正确的是( )A把外层循环语句 For i=1 To 4 改为 For i=1 To 3内层循环语句 For j=1 TO 3 改为 For j=1 TO 4B把 sum=0 移到 For i=1 TO 4 和 For j=1 TO 3 之间C把 sum=sum+score(i,j)改为 sum=sum+score(j,i)D把 sum=sum+score(i,j)改为 sum=score(
22、i,j)(分数:2.00)A.B.C.D.二、填空题(总题数:10,分数:30.00)36.软件测试用例包括输入值集和 1 值集。(分数:2.00)填空项 1:_37.深度为 5 的满二叉树有 1 个叶子结点。(分数:2.00)填空项 1:_38.设某循环队列的容量为 50,头指针 Front=5(指向队头元素的前一位置),尾指针 rear=29(指向队尾元素),则该循环队列中共有 1 个元素。(分数:2.00)填空项 1:_39.在关系数据库中,用来表示实体之间联系的是 1。(分数:2.00)填空项 1:_40.在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中, 1 负责数据
23、的模式定义与数据的物理存取构建。(分数:2.00)填空项 1:_41.设有以下的循环:要求程序运行时执行 3 次循环体。请填空。x=1DOx=x+2Print xLoop Until_(分数:2.00)填空项 1:_42.窗体上命令按钮 Command1 的事件过程如下:Private Sub Command1_Click()Dim total As Integertotal=s(1)+s(2)Print totalEnd SubPrivate Function s(m As Integer)As IntegerStatic x As IntegerFor i=1 To mx=x+1Next
24、iS=xEnd Function运行程序,第 3 次单击命令按钮 Command1 时,输出结果为_。(分数:2.00)填空项 1:_43.在窗体上画一个名称为 Command1 的命令按钮,然后编写如下程序:Option Base 1Private Sub Command1_Click()Dim a(10)As IntegerFor i=1 To 10a(i)=iNextCall swap (_)For i=1 To 10Print a(i)NextEnd SubSub swap(b()As Integer)n=_For i=1 To n/2t=b(i)b(i)=b(n)b(n)=t_ Ne
25、xtEnd Sub上述程序的功能是,通过调用过程 swap,调换数组中数值的存放位置,即 a(1)与 a(10)的值互换,a(2)与 a(9)的值互换。请填空。(分数:6.00)填空项 1:_44.在窗体上画一个通用对话框,其名称为 CommonDialog1,然后画一个命令按钮,并编写如下事件过程:Private Sub Command1 Click()CommonDialog1.Filter=“All Files(*.*)|*.*|Text Files“_“(*.txt)|*.txt|Batch Files(*.bat)I*.bat“CommonDialog1 Filterlndex=1C
26、ommonDialog1.ShowOpenMsgBox CommonDialog1.File NameEnd Sub程序运行后,单击命令按钮,将显示一个“打开”对话框,此时在“文件类型”框中显示的是_;如果在对话框中选择 d 盘 temp 目录下的 tel.txt 文件,然后单击“确定”按钮,则在 MsgBox 信息框中显示的提示信息是_。(分数:4.00)填空项 1:_45.以下程序的功能是:把程序文件 smtextltxt 的内容全部读入内存,并在文本框 Textl 中显示出来。请填空。Private Sub Command1_Click()Dim inData As StringText
27、1.Text=“ “Open“smtext1.txt“_As_DO While_Input # 2,inDataText1.Text=Text1.TextsumNext iEnd Sub运行此程序时发现,除第 1 个人的总分计算正确外,其他人的总分是错误的。程序需要修改,以下修改方案中正确的是( )A把外层循环语句 For i=1 To 4 改为 For i=1 To 3内层循环语句 For j=1 TO 3 改为 For j=1 TO 4B把 sum=0 移到 For i=1 TO 4 和 For j=1 TO 3 之间C把 sum=sum+score(i,j)改为 sum=sum+scor
28、e(j,i)D把 sum=sum+score(i,j)改为 sum=score(i,j)(分数:2.00)A.B. C.D.解析:解析 内层循环是用来计算 3 门课程的考试成绩的,即将三者累加,外层循环是用来遍历四个学生的,内层循环结束一次即结束一个学生的总分计算,跳出内循环,进入下一个考生的成绩计算。而在计算完一个考生的总分后,必须要将用来存放总分的变量 sum 归零,以便计算下一个考生的总分。故应该选B。二、填空题(总题数:10,分数:30.00)36.软件测试用例包括输入值集和 1 值集。(分数:2.00)填空项 1:_ (正确答案:输出)解析:解析 测试用例由输入值集和与之对应的输出值
29、集两部分组成。37.深度为 5 的满二叉树有 1 个叶子结点。(分数:2.00)填空项 1:_ (正确答案:16)解析:解析 深度为 K 的满二叉树的叶子结点的数目为 2K-1。38.设某循环队列的容量为 50,头指针 Front=5(指向队头元素的前一位置),尾指针 rear=29(指向队尾元素),则该循环队列中共有 1 个元素。(分数:2.00)填空项 1:_ (正确答案:24)解析:解析 在循环队列中,头指针指向的是队头元素的前一个位置,根据题意从第 6 个位置开始有数据元素,所以队列中的数据元素的个数为 29-5=24。39.在关系数据库中,用来表示实体之间联系的是 1。(分数:2.0
30、0)填空项 1:_ (正确答案:关系)解析:解析 在关系数据库中,用关系来表示实体之间的联系。40.在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中, 1 负责数据的模式定义与数据的物理存取构建。(分数:2.00)填空项 1:_ (正确答案:数据定义语言)解析:解析 在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,数据定义语言负责数据的模式定义与数据的物理存取构建。41.设有以下的循环:要求程序运行时执行 3 次循环体。请填空。x=1DOx=x+2Print xLoop Until_(分数:2.00)填空项 1:_ (正确答案:x=7(或 x5 或 x6 或
31、x-6))解析:解析 D0 循环是每执行一次就加 2,执行 3 次后分别打印出 3、5、7,执行 3 次后就结束循环,此时的 x 为 7,故要使循环结束,需将循环结束条件设为 x7。42.窗体上命令按钮 Command1 的事件过程如下:Private Sub Command1_Click()Dim total As Integertotal=s(1)+s(2)Print totalEnd SubPrivate Function s(m As Integer)As IntegerStatic x As IntegerFor i=1 To mx=x+1Next iS=xEnd Function运
32、行程序,第 3 次单击命令按钮 Command1 时,输出结果为_。(分数:2.00)填空项 1:_ (正确答案:16)解析:解析 由于 x 是静态变量,会保存上次调用时的值,第一次单击:s(1)1,m=1,x=01;s(2)3,m=2,x=123。第二次单击:s(1)4,m=1,x=34;s(2)=6,m=2,x=456。第三次单击:s(1)=7,m=1,x=67;s(2)=9,m=2,x=789。第三次单击结果为 total 即 s(1)+s(2)7+916。43.在窗体上画一个名称为 Command1 的命令按钮,然后编写如下程序:Option Base 1Private Sub Com
33、mand1_Click()Dim a(10)As IntegerFor i=1 To 10a(i)=iNextCall swap (_)For i=1 To 10Print a(i)NextEnd SubSub swap(b()As Integer)n=_For i=1 To n/2t=b(i)b(i)=b(n)b(n)=t_ NextEnd Sub上述程序的功能是,通过调用过程 swap,调换数组中数值的存放位置,即 a(1)与 a(10)的值互换,a(2)与 a(9)的值互换。请填空。(分数:6.00)填空项 1:_ (正确答案:a() UBound(b) nn-1)解析:解析 结合下面的
34、程序可知函数 swap 的形式参数是一个数组,结合题目易知应该是 a 数组。UBound(arrayname,dimension)函数是返回指定数组维数的最大可用下标。由于要将整个数组的元素进行诸如 a(1)和 a(10)的对换,故必须要得其最大下标。For 循环就是将数组中的元素进行对换,由上知 n 中放的是数组的最大下标,即最后一个元素的下标,于是 For 循环中的循环变量 i 从 1 开始到 n/2,利用中间变量 t,将 b(i)与 b(n)进行对换,由于是对应对换的,故每对换一次 n 也应该向前推进一位,即 n=n-1。44.在窗体上画一个通用对话框,其名称为 CommonDialog
35、1,然后画一个命令按钮,并编写如下事件过程:Private Sub Command1 Click()CommonDialog1.Filter=“All Files(*.*)|*.*|Text Files“_“(*.txt)|*.txt|Batch Files(*.bat)I*.bat“CommonDialog1 Filterlndex=1CommonDialog1.ShowOpenMsgBox CommonDialog1.File NameEnd Sub程序运行后,单击命令按钮,将显示一个“打开”对话框,此时在“文件类型”框中显示的是_;如果在对话框中选择 d 盘 temp 目录下的 tel.
36、txt 文件,然后单击“确定”按钮,则在 MsgBox 信息框中显示的提示信息是_。(分数:4.00)填空项 1:_ (正确答案:A11 Files(*.*)d:/temp/tel.txt)解析:解析 文件对话框的属性 Filer 用来指定在对话框中显示的文件类型,该属性值由一对或多对文本字符串组成,每对字符串用管道符“|”隔开,在“|”前面的部分称为描述符,后面的部分一般为通配符和文件扩展名,称为“过滤器”,一般格式是:窗体.对话框名.Filer=描述符 1 | 过滤器 1 | 描述符 2 | 过滤器 2在对话框中选择了相应的文件,单击确定后,则在 MsgBox 中显示所选文件的路径。45.
37、以下程序的功能是:把程序文件 smtextltxt 的内容全部读入内存,并在文本框 Textl 中显示出来。请填空。Private Sub Command1_Click()Dim inData As StringText1.Text=“ “Open“smtext1.txt“_As_DO While_Input # 2,inDataText1.Text=Text1.Text&inDataLoopClose # 2End Sub(分数:6.00)填空项 1:_ (正确答案:For Input#2,NOT EOF(2))解析:解析 打开一个存在的文件,以便读出其中的内容。语句的一般格式是:Open“文件名“For Input As#文件号。文件号:为被打开的文件指定一个文件号,在以后访问该文件时,以文件号来代表文件。文件号的取值为1511 之间的整数。每个文件号对应唯一的一个文件,不能将已使用的文件号再指定给其他文件。由下面的程序可知应该是#2。EOF 函数用于测试文件的结束状态,格式为:EOF(文件号),NOT EOF(2)即当文件号为 2 的文件没有结束时,执行 Do While 循环体,由下面的 Do While 中的 Input#2,inData 知文件号是 2,故是 NOT EOF(2)。