1、国家二级( VB)机试模拟试卷 145及答案与解析 一、选择题 1 下列数据结构中,属于非线性结构的是 ( )。 ( A)循环队列 ( B)带链队列 ( C)二叉树 ( D)带链栈 2 下列数据结构中,能够按照 “先进后出 ”原则存取数据的是 ( )。 ( A)循环队列 ( B)栈 ( C)队列 ( D)二叉树 3 对于循环队列,下列叙述中正确的是 ( )。 ( A)队头指针是固定不变的 ( B)队头指针一定大于队尾指针 ( C)队头指针一定小于队尾指针 ( D)队头指针可以大于队尾指针, 也可以小于队尾指针 4 算法的空间复杂度是指 ( )。 ( A)算法在执行过程中所需要的计算机存储空间
2、( B)算法所处理的数据量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的临时工作单元数 5 软件设计中划分模块的一个准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 6 下列选项中不属于结构化程序设计原则的是 ( )。 ( A)可封装 ( B)自顶向下 ( C)模块化 ( D)逐步求精 7 软件详细设 计产生的图如下: 该图是 ( )。 ( A) N-S图 ( B) PAD图 ( C)程序流程图 ( D) E-R图 8 数据库管理系统是 ( )。 ( A)操作系统的一部分 ( B)在操作系统支持下的系统软件 ( C
3、)一种编译系统 ( D)一种操作系统 9 在 ER图中,用来表示实体联系的图形是 ( )。 ( A)椭圆形 ( B)矩形 ( C)菱形 ( D)三角形 10 有三个关系 R、 S和 T如下: 其中关系 T由关系 R和 S通过某种操作得到,该操作为 ( )。 ( A)选择 ( B)投影 ( C)交 ( D)并 11 在 VB集成环境中要结束一个正在运行的工程,可单击工具栏上的一个按钮,这个按钮是 ( )。12 设 x是整型变量,与函数 IIf(x0,一 x, x)有相同结果的代数式是 ( )。 ( A) x ( B)一 x ( C) x ( D)一 x 13 设窗体文件中有下面的事件过程: Pf
4、ivte Sub Command1_Click() Dim s a =100 Print a End Sub 其中变量 a和 s的数据类型分别是 ( )。 ( A)整型,整型 ( B)变体型,变体型 ( C)整型,变体型 ( D)变体型,整型 14 下面不能在信息框中输出 “VB”的是 ( )。 ( A) MsgBox“VB“ ( B) x=MsgBox(“VB“) ( C) MsgBox(“VB“) ( D) Call MsgBox“VB“ 15 下面关于标准模块的叙述中,错误的是 ( )。 ( A)标准模块中可以声明全局变量 ( B)标准模块中可以包含一个 Sub Main过程,但此过程不
5、能被设置为启动过程 ( C)标准模块中可以包含一些 Public过程 ( D)一个工程中可以含有多个标准模块 16 下面正确使用动态数组的是 ( )。 ( A) Dim art()A8 Integer ReDim art(3, 5) ( B) Dim art()As Integer ReDim arr(50)As String ( C) Dim arr() ReDim arr(50)As Integer ( D) Dim arr(50)As Integer ReDim arr(20) 17 下面是求最大公约数的函数的首部: Function gcd(ByVal x As Integer, By
6、Val y As Integer)As Integer 若要输出 8、 12、 16这 3个数的最大公约数,下面正确的语句是 ( )。 ( A) Print gcd(8, 12), gcd(12, 16), gcd(16, 8) ( B) Print gcd(8, 12, 16) ( C) Print gcd(8), gcd(12), god(16) ( D) Print gcd(8, gcd(12, 16) 18 若在窗体模块的声明部分声明了如下自定义类型和数组: Privme Type rec Code As Integer Caption As String End Type Dim a
7、rr(5)As tee 则下面的输出语句中正确的是 ( )。 ( A) Print arr Code(2), art Caption(2) ( B) Print arr Code, arr Caption ( C) Prim arr(2) Code, arr(2) Caption ( D) Print Code(2), Caption(2) 19 下面程序运行时,若 输入 395,则输出结果是 ( )。 Private Sub Command1_Click() Dim x x=InputBox(“请输入一个 3位整数 “) Print x Mod 10, x 100, (x Mod 100)
8、10 End Sub ( A) 3 9 5 ( B) 5 3 9 ( C) 5 9 3 ( D) 3 5 9 20 某人编写了下面的程序,希望能把 Text1文本框中的内容写到 out txt文件中: Private Sub Command1_Click() Open“out txt“For Output As #2 Print“Tlextl“ Close #2 End Sub 调试时发现没有达到目的,为实现上述目的,应做的修改是 ( )。 ( A)把 Print“Text1“改为 Print #2, Text1 ( B)把 Print“Text1“改为 Print Text1 ( C)把 P
9、rint“Text1“改为 Write“Text1“ ( D)把所有 #改为 #1 21 VB中有 3个键盘事件: KeyPress、 KeyDown、 KeyUp,若光标在 Text1文本框中,则每输入一个字母 ( )。 ( A)这 3个事件都会触发 ( B)只触发 KeyPress事件 ( C)只触发 KeyDown、 KeyUp事件 ( D)不触发其中任何一个事件 22 设窗体的名称为 Form1,标题为 Win,则窗体的 MouseDown事件过程的过程名是 ( )。 ( A) Form1_MouseDown ( B) Win_MouseDown ( C) Form_MouseDown
10、 ( D) MouseDown_Forml 23 要求 当鼠标在图片框 P1中移动时,立即在图片框中显示鼠标的位置坐标。下面能正确实现上述功能的事件过程是 ( )。 ( A) Private Sub P1_MouseMove(Button As Integer, Shift As Integer, X As Single,Y As Single) Print X, Y End Sub ( B) Private SUb P1_MouseDown(Button As Integer, shift As Integer, X As Single, Y As Single) Picture Print
11、 X, Y End Sub ( C) Private SUb P1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) P1 Print X, Y End Sub ( D) Private SUb Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As single) P1 Print X, Y End Sub 24 为了使窗体的大小可以改变,必须把它的 BorderStyle属性设置为 ( )。 ( A) 1 ( B
12、) 2 ( C) 3 ( D) 4 25 为了对多个控件执行操作,必须选中这些控件。下列不能选中多个控件的操作是 ( )。 ( A)按住 Ah键,不要松开,然后单击每个要选中的控件 ( B)按住 Shift键,不要松开,然后单击每个要选中的控件 ( C)按住 Ctrl键,不要松开,然后单击每个要选中的控件 ( D)拖动鼠标画出一个虚线矩形,使所选中的控件位于这个 矩形内 26 在窗体上画一个文本框,其名称为 Text1,为了在程序运行后隐藏该文本框,应使用的语句为 ( )。 ( A) Text1 Clear ( B) Text1 Visible=False ( C) Text1 Hide (
13、D) Text1 Enabled=False 27 以下能够触发文本框 Change事件的操作是 ( )。 ( A)文本框失去焦点 ( B)文本框获得焦点 ( C)设置文本框的焦点 ( D)改变文本框的内容 28 假定在图片框 Picturel中装入了一个图片,在程序运行 中,为了清除该图片 (注意,清除图片,而不是删除图片框 ),应采用的正确方法是 ( )。 ( A)单击图片框,然后按 Del键 ( B)执行语句 Picturel Picture=LoadPicture(“) ( C)执行语句 Picturel Picture=“ ( D)执行语句: Picturel Cls 29 要想使列
14、表框只允许单选列表项,应设置的属性为 ( )。 ( A) Style ( B) Selected ( C) MuhiSelect ( D) Enabled 30 在窗体上域一个名称为 Text1的文本框和一个名称为 Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim i As Integer, n As Integer For i=0 To 50 i=i+3 n=n+l If i10 Then Exit For Next Text1 Text=sty(n) End Sub 程序运行后,单击命令按钮,在文本框中显示的值是 ( )。
15、 ( A) 2 ( B) 3 ( C) 4 ( D) 5 31 在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim I, Num Randomize Do For I=1 To 1000 Num=Int(Rnd*100) Print Num: Select Case Num Case 12 Exit For Case 58 Exit Do Case 65 68, 92 End End Select Next I Loop End Sub ( A) Do循环执行的次数为 1000次 ( B)在 For循环中产生的随机数小于或等于 10
16、0 ( C)当所产生的随机数为 12时结束所有循环 ( D)当所产生的随机数为 65、 68或 92时窗体关闭、程序结束 32 在窗体上画一个名为 Command1的命令按钮,然后编写如下代码: Option Base l Private Sub Command1_Click() Dim a a=Array(1, 2, 3, 4) j=1 For i=4 To I Step-1 s=s+a(i)*j j=j*10 Next i Print s End Sub 运行上面的程序,其输出结果是 ( )。 ( A) 1234 ( B) 12 ( C) 34 ( D) 4321 33 设有如下通用过程:
17、 Public Function Fun(xStr As String)As String Dim tStr As String, strL As Integer tStr=“ strL=Len(xStr) i=1 Do While i0) Print n Mod 10; n=n 10 Wend Print End Sub 此程序功能是:输入 2个正整数,反序输出这 2个数的每一位数字,再反序输出这 2个数之和的每一位数字。例如:若输入 123和 234,则应该输出: 3 2 1 4 3 2 7 5 3 但调试时发现只输出了前 2行 (即 2个数的反序 ),而未输出第 3行 (即 2个数之和的
18、反序 ),程序需要修改。下面的修改方案中正确的是 ( )。 ( A)把过程 pro的形式参数 n As Integer改为 ByVal n As Integer ( B)把 Call pro(a+b)改为 pro a+b ( C)把 n=n 10改为 n=n 10 ( D)在 pro b语句之后增加语句 c =a+b,再把 Call pro(a+b)改为 pro c 38 在窗体上画一个名称为 Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() C=1234 c1=Trim(Str(c) For i=1 To 4 Print Next
19、End Sub 程序运行后,单击命令按钮,要求在窗体上显示如下内容: 1 12 123 1234 则在横线处应填入的内容为 ( )。 ( A) Right(c1, i) ( B) Left(c1, i) ( C) Mid(c1, i, 1) ( D) Mid(c1, i, i) 39 假定有以下程序段: For i=1 To 3 For j=5 To 1 Step一 1 Print i*j Next j Next i 则语句 Print i*j的执行次数是 ( )。 ( A) 15 ( B) 16 ( C) 17 ( D) 18 40 在窗体上画两个文本框 (名称分别为 Text1和 Text
20、2)和一个命令按钮 (名称为Command1),然后编写如下事件过程: Private Sub Command1_Click() x=0 Do While x0条件成立,即 x为正数,就返回一 x,即 x的负数,否则返回 x(它本身 ),两种情况都是返回负数。根据这一点,选项 B符合要求。故 B选项正确。 13 【正确答案】 C 【试题解析】 变量 s定义时没有指明数据类型,默认为 Variant变体型。变量 a是用整型的类型符号声明,并同时赋值 100,所以变量 a的数据类型为整型。故C选项正确。 14 【正确答案】 D 【试题解析】 Msgbox的功能:显示消息提示框,存埘话框中显示提示消
21、息,等待用户单击按钮,单击不同的按钮返回不同的整数。 MsgBox函数格式:变量 =MsgBox(,样式 ,标题 ),注意 MsgBox函数带括号,有返回值; MsgBox语句格式: MsgBox(,样式 ,标题 ),有无括号都可以,无返回值。 选项 D中用 Call语句调用 MsgBox函数,要符合 Call语句的语法规则: Call函数名 (实参表 ),缺少括号,应该为 Call MsgBox(“VB“),语法才正确。故 D选项不能输出 “VB“,会出错。 15 【正确答案】 B 【试题解析】 标准模块中可以包含一个 Sub Main过程,可以通过 “工程属性 ”对话框中将 Sub Mai
22、n过程设置启动对象。故 B选项错误。 16 【正确答案】 A 【试题解析】 动态数组的使 用时,先在窗体层、标准模块或过程中声明一个没有下标的数组 (括号不能省略 ),不指定维数。然后,在过程中用 ReDim语句定义带下标的数组,给出数组的维数。注意:用 BeDim定义的数组,只能改变数组元素的个数,不能改变数组的维数和数据类型。 本题选项 B、 C中 BeDim语句改变了数组的数据类型,故错误。选项 D中声明数组时有下标,应该没有下标,故也错误。选项 A正确。 17 【正确答案】 D 【试题解析】 调用函数过程时的实参与函数过程的形参必须是类型、顺序、个数相同。 本题中函数过程的形参有 2个
23、,调用时实参也要是 2个,故排除选项 B和 C。 选项 A虽然语法没错误,但不符合题意。 选项 D是正确的。调用函数过程时可以嵌套调用。 18 【正确答案】 C 【试题解析】 定义一个自定义类型的数组,数组元素表示为:数组名 (下标 )成员名,故选 C。 19 【正确答案】 B 【试题解析】 本题中 x定义为整型变量,通过输入对话框输入 395,按 “确定 ”按钮后, InputBox函数把返回值 395赋给变量 x。表达式 395 Mod 10,结果是 5,395、 100结果为 3, (395 Mod 100) 10的结果为 9。故 B选项正确。 20 【正确答案】 A 【试题解析】 要把
24、文本框中的内容写入文本文件中,首先要用 Open语句的 For Output模式打开文本文件,并为文件制定一个文件号,然后,用 Print语句将文本写入文本文件,最后关闭文件。 本题中 Click事件过程中第 1、 3条语句正确。 第 2条语句 Print语句的格式是: Print#文件号,要写入的内容,原语句错误。 根据格式按选项 A修改正确,故 A选项正确。 21 【正确答案】 A 【试题解析】 当用户按下某键时触发 KeyDown和 Key Press事件,放开某键时触发 KeyUp事件。故每输入一个字符,这 3个时间都会触发。故 A选项正确。 22 【正确答案】 C 【试题解析】 事件
25、过程名格式是:控件名一事件过程名。 Form1是窗体控件的名称, Win是窗体的标题,所以窗体的 MouseDown事件过程名是:Form1_MouseDown,故选 A。 23 【正确答案】 C 【试题解析】 当鼠标在图片框 P1中移动时,就会触发 P1的鼠标移动事件,即P1_MouseMove事件,故排除 B选项 ;鼠标在图片框 P1中移动时,立即在图片框中显示鼠标的位置坐标,说明是在图片框上输出数据,所以用 P1的 Print语句实现。故 C选项正确。 24 【正确答案】 B 【试题解析】 窗体的 BorderStyle属性是用来设置窗体的边框样式的。属性值 1为 Fixed Singl
26、e, 3为 Fixed Dialog, 4为 Fixed ToolWindow,设置为这 3个属性值都不能改变窗口大小。 2是 Sizable表示窗体大小可以改变。故选 B。 25 【正确答案】 A 【试题解析】 按住 Alt键只能选中单个 控件,不能同时选中多个控件。故选A。 26 【正确答案】 B 【试题解析】 文本框没有 Clear和 Hide方法,故 A、 C选项错误; Enabled属性设置文本框可用不可用,属性值为 True时可在文本框中输入数据,为 False时文本框为灰色,内容不能修改,故 D选项错误; Visible属性用来设置文本框显示或隐藏,当属性值为 True时文本框显
27、示,为 False时文本框隐藏,故 B选项正确。 27 【正确答案】 D 【试题解析】 改变文本框中的内容时就会触发它的 Change事件,故选 D。 28 【正确答案】 B 【试题解析】 A选项按 Del键不能删除图片; C选项中 Pietue属性值不能为空字符串,语法错误; D选项中 Cls方法只能清除图片上显示的内容,不能清除图片。要将图片框中的图片清除,用 B选项方法可以。故 B选项正确。 29 【正确答案】 C 【试题解析】 列表框的 Style属性是设置列表框的外形; Selected属性在程序运行中设置或返回列表项的选中状态; Enabled属性设置列表框可用不可用; MultS
28、elect用来设置选择列表项的方式。 0为默认, 只允许单选列表项; 1为复选,可同时选中一个或多个列表项,但要一个一个选中; 2也为复选,可一个一个选中列表项,也可连续选中。故选 C。 30 【正确答案】 B 【试题解析】 程序中 For循环的结束有两种情况,一种是循环完指定的次数,一种是达到一定的条件后直接退出循环。由于在循环体中循环变量 i的值被修改:i=i+3,因此,每次循环开始时 i的取值为 0, 4, 8, i为 8时执行 i=i+3=11。n=n+1=3,这时 i的值大于 10,退出 For循环,因此 For循环执行了 3次,即 n的值为 3。所以在文本框中会显示 3。 31 【
29、正确答案】 D 【试题解析】 程序 Do循环中嵌套了 For循环, Do循环没有设置结束条件,而是在 For循环体中的 Select语句中设置了退出 Do循环和: For循环及结束程序的分支,因此 Do循环的次数无法确定。随机函数 Rnd产生 0, 1)之问的一个数,包括 0但不包含 1,因此 Rnd*100的范围是大于等于 0小于 100。随机数为 65、 68或 92时结束程序关闭窗体。为 58时退出 Do循环,为 12时推出 For玄幻进入下一次 Do循环。 32 【正确答案】 A 【试题解析】 Array函数用来为数 组元素赋值,即把一个数据集读入某个数组。其格式为:数组变量名 =Ar
30、ray(数组元素值 )。 Dim a语句没有变量类型名,则 a默认为 Variant类型,这里它作为数组变量使用。现在已知数组 a中元素的值依次为1、 2、 3、 4,则 For循环中各变量值变化如下: i=4时, s=s+a(4)*j=0+4*1=4, j=1*10=10 i=3时, s=s+a(3)*j=4+3*10=4+30=34, j=10*10=100 i=2时, s=s+a(2)*j=34+2*100=34+200=234, j=100*10=1000 i=1时, s=s+a(1)*j=234+1*1000=234+1000=1234。循环结束。 s的值为 1234。 33 【正确
31、答案】 C 【试题解析】 通用过程 Fun的主要功能在于 tStr=tStr&Mid(xStr, i, 1)&Mid(xStr, strL一 i+1, 1) 这一句。其中 Mid(xStr, i, 1)的意思是从字符串的左边开始依次取一个字符,Mid(xStr, strL一 i+1, 1)的意思是从串的右边开始依次取一个字符。整个这条一语句的用意就是从一个字 符串两端依次各取一对字符连成一个字符串。因此当Fun过程的参数为 “abcdef”时,返回值为 “afbecd”, Ucase(“afbeed”)结果为“AFBECD”,这就是输出结果。 34 【正确答案】 B 【试题解析】 原程序的错误
32、在于没有把 n的值乘进去。而 B选项中把 For k=n1 To 2 Step1改为 For k=1 Ton一 1,依然没有把 n乘进去。 35 【正确答案】 D 【试题解析】 程序中过程 Fun的 For循环的功能是从参数字符串中依次取出一个字符经 kase函数转为小写字 母后存入另一个字符串变量的首部,即将输入的字符串转为小写并倒序排列。函数 kn用于返回字符串的长度,过程中字符串的长度做为 For循环的终值。 Mid是字符串中部截取函数,用来从指定位置开始截取指定个数的字符。过程中使用 Mid(S, i, 1),通过循环依次取出字符串的字符,然后使本次取出的字符连接到之前取出的字符前面,
33、实现了字符串倒序排列。程序中输入字符串为 “abcdefg”,倒序并转为小写后为 “gfdcba”。 36 【正确答案】 B 【试题解析】 程序中计算 a“的算法有误,由于已经将 a的值赋给了 p,在 后边的For循环中再乘 n次 a显然就多乘了一次 a,因此,要改正此程序或者将 p=a改为p=1,或者将 fork=1 to n改成 for k=1 to n1或 for k=2 to n。而 B)选项将 p=p*a改为 p=pn将会导致 p=pn执行 n次,得不到正确结果。 37 【正确答案】 A 【试题解析】 在过程定义中过程的形式参数定义时如果没有 ByVal指明参数的传递方式,那么默认为
34、地址传递,这样过程中对形参的改变将影响到实参的值。本程序中过程定义语句 Private Sub pro(n As Integer)说明形参 n为按地址传递的,而在过程内语句 n=n 10改变了形参的值,因此, a、 b的值就不再是最初输入的值了,表达式 a+b就不是期望的两个输入数的和。因此得不到正确结果。 只要把 Private Sub pm(n As Integer)改为 Private Sub pro(ByVal n As Integer),程序即可得到正确结果,因此 A选项正确。 38 【正确答案】 B 【试题解析】 程序中使用 Str(c)将数值 1234转换成为一个字符串 “123
35、4”,又使用 Trim函数去除了字符串首尾可 能存在的空格,保证了字符串中只有 1、 2、 3、4这 4个字符。在 For循环中从左边递次输出这些字符就需要使用 Left()函数,Left是左部截取函数,可以截取字符串左边指定个数的字符串,以 Left(c1, i)的形式即可每次循环取出期望的字符串。因此答案为 B。 39 【正确答案】 A 【试题解析】 外层 For循环从 1到 3是 3次,内层循环从 5到 1,是 5次。因此循环体执行的次数是 3*5=15次。 40 【正确答案】 B 【试题解析】 在文本框中显示的值即 n, x的值。 x初始值已设为 0, n的初值没有定 义,默认为 0。
36、各次循环 x, n的值如下: x=(x+2)*(x+3)=(0+2)*(0+3)=2*3=6, n=n+1=0+1=1 x=6,满足 x“Then If List1 ListIndex=一 1 Then List1 AddItem Text1 Text Else List1 List(List1 ListIndex)= Text1 Text List1 ListIndex= 一 1 End If Text1 Text=“ End If End Sub 步骤 3:调试并运行程序,关闭程序后按题目要求存盘 (2)步骤 1:打开本题项目工程。 步骤 2:打开代码编辑窗口,去掉程序中的注释符 “”,将
37、问号改为正确的内容。 参考答案 (阴影部分是需考生填入的内容 ) PriVate Sub Command1_Click() Dim a(10)As Integer Dim i As Integer Text1 Taxt=“ Randomsize For i =1 To 10 a(i)=Int(Rnd*100+1) Text1 Text=Text1 Text&a(i)&“ Next i Call Exchange(a) Text2 Text=“ For i=1 To 10 Text2 Text=Text2 Text&a(i)&“ Next i End Sub PriVate Sub Exchan
38、ge(ByRef Data()As Integer) Dim i As Ingeger, m As Integer, index As Integer Dim t As Inteqer Dim f As Inteqer f=LBound(Data) index=LBound(Data) m=Data(index) For i=f+1 To UBound(Data) If Data(i) m Then m=Data(i) index=i End It Next i t=Data(f) Data(f) =Data(index) Data(index)=t End Sub 步骤 3:调试并运行程序,
39、关闭程序后按题目要求存盘。 【试题解析】 (1)本题主要考查对列表框控件的使用,包括向列表框中增加项目,从列表框中删除项目,修改列表框中选中项目的值。 第一个空使用列表框的 Text属性,该属性的值为最后一次选中的表项的文本。 第二个空使用列表框的 List1ndex属性,该属性的值是已选中的表项的位置。 第三个空判断 Text1文本框中的内容是否为空。 第四个空表示当列表框中无选中项目时,将 Text1中的内容添加到列表框的最后。 第五个空表示将。 Text1文本框中的文本替换为列表框中选中的项目,使用列表框的 List和 ListIndex属性。 (2)本题主要考核对数组中元素的基本操作,
40、利用循环语句找出数组中的最大值,并将保存最大值和其所对应的下标,然后将最大值与数组中的第一个元素进行互换操作。 四、综合应用题 43 【正确 答案】 步骤 1:打开本题 T程文件。 步骤 2:分析并编写程序代码。 程序提供代码 Option Base 1 Dim a(12, 10)As Long, 8(12)As Long Private Sub Command1_Click() Open App Path&“ in5 dat”For Input A8 #1 For i=l To 12 For j=1 To 10 Input #1, a(i, j) Next j Next i Close#1 End Sub