1、国家二级( VB)机试模拟试卷 171及答案与解析 一、选择题 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 在 E-R图中,用来表示实体联系的图形是 ( )。 ( 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 设窗体文件中有下面的事件过程
4、: Private 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 arr()As Integer ReDim arr(3, 5) ( B) Dim arr()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 Intege
6、r, ByVal 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), gcd(16) ( D) Print gcd(8, gcd(12, 16) 18 若在窗体模块的声明部分声明了如下自定义类型和数组: Private Type rec Code As Integer Caption As String End Type
7、 Dim arr(5)As rec 则下面的输出语句中正确的是 ( )。 ( A) Print arr Code(2), arr Caption(2) ( B) Print arr Code, arr Caption ( C) Print 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
8、 100) 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“Text1“ Close #2 End Sub 调试时发现没有达到目的,为实现上述目的,应做的修改是 ( )。 ( A)把 Print“Text1“改为 Print #2, Text1 ( B)把 Print“Text1“改为 Print Text1 (
9、C)把 Print“Text1“改为 Write“Text1“ ( D)把所有 #2改为 #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_Mo
10、useDown ( D) MouseDown_Form1 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
11、 Print 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)
12、1 ( B) 2 ( C) 3 ( D) 4 25 为了对多个控件执行操作,必须选中这些控件。下列不能选中多个控件的操作是 ( )。 ( A)按住 Alt键,不要松开,然后单击每个要选中的控件 ( B)按住 Shift键,不要松开,然后单击每个要选中的控件 ( C)按住 Ctrl键,不要松开,然后单击每个要选中的控件 ( D)拖动鼠标画出一个虚线矩形,使 所选中的控件位于这个矩形内 26 在窗体上画一个文本框,其名称为 Text1,为了在程序运行后隐藏该文本框,应使用的语句为 ( )。 ( A) Text1 Clear ( B) Text1 Visible=False ( C) Text1 H
13、ide ( D) Text1 Enabled=False 27 以下能够触发文本框 Change事件的操作是 ( )。 ( A)文本框失去焦点 ( B)文本框获得焦点 ( C)设置文本框的焦点 ( D)改变文本框的内容 28 假定在图片框 Picture1中装入了 一个图片,在程序运行中,为了清除该图片 (注意,清除图片,而不是删除图片框 ),应采用的正确方法是 ( )。 ( A)单击图片框,然后按 Del键 ( B)执行语句 Picture1 Picture=LoadPicture(“) ( C)执行语句 Picture1 Picture=“ ( D)执行语句: Picture1 Cls 2
14、9 要想使列表框只允许单选列表项,应设置的属性为 ( )。 ( 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+1 If i10 Then Exit For Next Text1 Text=Str(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循环执行的次数为
16、1000次 ( B)在 For循环中产生的随机数小于或等于 100 ( C)当所产生的随机数为 12时结束所有循环 ( D)当所产生的随机数为 65、 68或 92时窗体关闭、程序结束 32 在窗体上画一个名为 Command1的命令按钮,然后编写如下代码: Option Base 1 Private Sub Command1_Click() Dim a a=Array(1, 2, 3, 4) j=1 For i=4 To 1 Step1 s=s+a(i)*j j=j*10 Next i Print s End Sub 运行上面的程序,其输出结果是 ( )。 ( A) 1234 ( B) 12
17、 ( C) 34 ( D) 432l 33 设有如下通用过程: 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行
18、(即 2个数的反序 ),而未输 出第 3行 (即 2个数之和的反序 ),程序需要修改。下面的修改方案中正确的是 ( )。 ( 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(
19、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) 39 假定有以下程序段: For i=1 To 3 For j=5 To 1 Step1 Print i*j Next j Next i 则语句 Print i*j的执行次数是 ( )。 ( A) 15 ( B) 16 ( C) 17 ( D) 18 40
20、在窗体上画两个文本框 (名称分别为 Text1和 Text2)和一个命令按钮 (名称为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 【试题解析】
21、 Msgbox的功能:显示消息提示框,在对话框中显示提示消息,等待用户单击按钮,单击不同的按钮返回不同的整数。 MsgBox函数格式:变量 =MsgBox(,样式 ,标题 ),注意 MsgBox函数带括号,有返回值; MsgBox语句格式: MsgBox(,样式 ,标题 ),有无括号都可以,无返回值。 选项 D中用 Call语句调用 MsgBox函数,要符合 Call语句的语法规则: Call函数名 (实参表 ),缺少括号,应该为 Call MsgBox(“VB“),语法才正确。故 D选项不能输出 “VB“,会出错。 15 【正确答案】 B 【试题解析】 标准模块中可以包含一个 Sub Mai
22、n过程,可以通过 “工程属性 ”对话框中将 Sub Main过程没置启动对象。故 B选项错误。 16 【正确答案】 A 【试题解析】 动态数组的使用时,先在窗体 层、标准模块或过程中声明一个没有下标的数组 (括号不能省略 )。不指定维数。然后,在过程中用 ReDim语句定义带下标的数组,给出数组的维数。注意:用 ReDim定义的数组,只能改变数组元素的个数,不能改变数组的维数和数据类型。 本题选项 B、 c中 ReDim语句改变了数组的数据类型,故错误。选项 D中声明数组时有下标,应该没有下标,故也错误。选项 A正确。 17 【正确答案】 D 【试题解析】 调用函数过程时的实参与函数过程的形参
23、必须是类型、顺序、个数相同。 本题中函数过程的形参有 2个,调用时实 参也要是 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。故
24、 B选项正确。 20 【正确答案】 A 【试题解析】 要把文本框中的内容写入文本文件中,首先要用 Open语句的 For Output模式打开文本文件并为文件制定一个文件号,然后,用 Print语句将文本写入文本文件,最后关闭文件。 本题中 Click事件过程中第 1、 3条语句正确。 第 2条语句 Print语句的格式是: Print #文件号,要写入的内容,原语句错误。 根据格式按选项 A修改正确,故 A选项正确。 21 【正确答案】 A 【试题解析】 当用户按下某 键时触发 KeyDown和 KeyPress事件,放开某键时触发 Key Up事件。故每输入一个字符,这 3个事件都会触发。
25、故 A选项正确。 22 【正确答案】 C 【试题解析】 事件过程名格式是:控件名一事件过程名。 Foml是窗体控件的名称, Win是窗体的标题,所以窗体的。 MouseDown事件过程名是:Form_MouseDown,故选 A。 23 【正确答案】 C 【试题解析】 当鼠标在图片框 P1中移动时,就会触发 P1的鼠标移动事件,即P1_MouseMove事件,故排陈 B选项;鼠标在图片框 Pl中移动时,立即在图片框中显示鼠标的位置坐标,说明是在图片框上输出数据,所以用 P1的 Print语句实现。故 C选项正确。 24 【正确答案】 B 【试题解析】 窗体的 BorderStyle属性是用来设
26、置窗体的边框样式的。属性值 1为 Fixed Single, 3为 Fixed Dialog, 4为 Fixed Toolwindow,设置为这 3个属性值都不能改变窗口大小。 2是 Sizable,表示窗体大小可以改变。故选 B。 25 【正确答案】 A 【试题解析】 按住 Alf键只能选中单个控件,不能同时选中 多个控件。故选 A。 26 【正确答案】 B 【试题解析】 文本框没有 Clear和 Hide方法,故 A、 C选项错误; Enabled属性设置文本框可用不可用,属性值为 True时可在文本框中输入数据,为 False时文本框为灰色,内容不能修改,故 D选项错误; Visible
27、属性用来设置文本框显示或隐藏,当属性值为 True时文本框显示,为 False时文本框隐藏,故 B选项正确。 27 【正确答案】 D 【试题解析】 改变文本框中的内容时就会触发它的 Change事件,故选 D。 28 【正确答案】 B 【试题解析】 A选项按 Del键不能删除图片; C选项中 Pictue属性值不能为空字符串,语法错误; D选项中 Cls方法只能清除图片上显示的内窬,不能清除图片。要将图片框中的图片清除,用 B选项方法可以。故 B选项正确。 29 【正确答案】 C 【试题解析】 列表框的 Style属性是设置列表框的外形; Selected属性在程序运行中设置或返回列表项的选中
28、状态; Enabled属性设置列表框可用不可用; MuhSelect用来设置选择列表项的方式。 0为默认,只允许单选列表项; 1为复选,叮同时选中一个或多个列表项,但要一个一个选中; 2也为复选,可一个一个选中歹 0表项,也呵连续选中。故选 C。 30 【正确答案】 B 【试题解析】 程序中 For循环的结束有两种情况,一种是循环完指定的次数,一种是达剑一定的条件后直接退出循环,由于在循环体中循环变量 i的值被修改:i=i+3,因此,每次循环开始时 i的取值为 0, 4, 8, i为 8时执行 i+3=11,n=n+1=3,这时 i的值大于 10,退出 For循环,因此 For循环执行了 3次
29、,即 n的值为 3。所以在文本框中会显示 3。 31 【正确答案】 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函数用来为数组元素赋值,即把一
30、个 数据集读入某个数组。其格式为:数组变量名 =Array(数组元素值 )。 Dim a语句没有变量类型名,则 a默认为 Variant类型,这里它作为数组变量使用。现在已知数组 a中元素的值依次为1、 2、 3、 4,则 for循环中各变量值变比如下: i=4时, s=s+a(4)*i=0+4*1=4, i=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, i=100*10=1000 i=1时, s=s+a(1)*j=234+1*1000=234+1000=12
31、34。循环结束。 s的值为 1234。 33 【正确答案】 C 【试题解析】 通用过程 Fun的主要功能在于 tStr=tStr&Mid(xStr, i, 1)&Mid(xSfr, strLi+1, 1) 这一句。其中 Mid(xstr, i, 1)的意思是从字符串的左边开始依次取一个字符,Mid(xstr, sfrLi+l, 1)的意思是从串的右边开始依次取一个字符。整个这条一语句的用意就是从一个字符串两端依次各取一对 字符连成一个字符串。因此当 Fun过程的参数为 “abcdef”时,返回值为 “afbecd”, ucase(“afbecd”)结果为“AFBECD”,这就是输出结果。 34
32、 【正确答案】 B 【试题解析】 原程序的错误在于没有把 n的值乘进去。而 B选项中把 For k=n1 To 2 Step一 1改为 For k=1 Ton1,依然没有把 n乘进去。 35 【正确答案】 D 【试题解析】 程序中过程 Fun的 For循环的功能是从参数字符串中依次取出一个字符经 LCase函数转为小写字母后存入另一个字符 串变量的首部,即将输入的字符串转为小写并倒序排列。函数 Len用于返回字符串的长度,过程中字符串的长度做为 For循环的终值。 Mid是字符串中部截取函数,用来从指定位置开始截取指定个数的字符。过程中使用 Mid(S, i, 1),通过循环依次取出字符串的字
33、符,然后使本次取出的字符连接到之前取出的字符前面,实现了字符串倒序排列。程序中输入字符串为 “abcdefg”,倒序并转为小写后为 “gfedrba”。 36 【正确答案】 B 【试题解析】 程序中计算 an的算法有误,由于已经将 a的值赋给了 p,在后边的For循环中 再乘 n次 a显然就多乘了一次 a,因此,要改正此程序或者将 p=a改为p=1,或者将 fork=1 to n改成 for k=1 to n一 1或 for k=2 to n。而 B选项将 p=p*a改为 p=pn将会导致 p=pn执行 n次,得不到正确结果。 37 【正确答案】 A 【试题解析】 在过程定义中过程的形式参数定
34、义时如果没有 ByVal指明参数的传递方式,那么默认为地址传递,这样过程中对形参的改变将影响到实参的值。本程序中过程定义语句 Private Sub pro(n As Integer)说明形参 n为按地 址传递的,而在过程内语句 n=n 10改变了形参的值,因此, a、 b的值就不再是最初输入的值了,表达式 a+b就不是期望的两个输入数的和。因此得不到正确结果。 只要把 Private Sub pro(n As Integer)改为 Private Sub pro(ByVal n As Integer),程序即可得到正确结果,因此 A选项正确。 38 【正确答案】 B 【试题解析】 程序中使用
35、 Str(C)将数值 1234转换成为一个字符串 “1234”,又使用 Trim函数去除了字符串首尾可能存在的空格,保证 了字符串中只有 1、 2、 3、4这 4个字符。在 For循环中从左边递次输出这些字符就需要使用 Left()函数,Left是左部截取函数,可以截取字符串左边指定个数的字符串,以 Left(cl, i)的形式即可每次循环取出期望的字符串。因此答案为 B。 39 【正确答案】 A 【试题解析】 外层 For循环从 1到 3是 3次,内层循环从 5到 1,是 5次。因此循环体执行的次数是 3 * 5=15次。 40 【正确答案】 B 【试题解析】 在文本框中显示的值即 n, x
36、的值。 x初始值已设为 0, n的初值没有定义,默认为 0。 各次循环 x, n的值如下: x=(x+2)*(x+3)=(0+2)*(0+3)=2*3=6, n=n+1=0+1=1 x=6,满足 x0 00001 e=e+x i=i+1 x=1 jc(i) Loop Text1 Text=e End Sub Function jc(n As Integer)As L0ng Dim i As Integer Dim t As Long t=1 For i=1 To n t=t*i Next jc=t End Function 步骤 3:调试并运行程序,关闭程序后按题目要求存盘。 (2)步骤 1:
37、打开本题工程文件。 步骤 2:打开代码编辑窗口,去掉程序中的注释符 “”,将问号改为正确的内容。 参考答案 Private Sub Command1_Click() Dim x As String Dim nunl As Integer i As Integer i=1 num=0 Do While i 【试题解析】 (1)在窗体中添加 Text控件,首先将 Text控件中的内容设置为空,然后进入 “计算 ”按钮的单击事件过程, Do While循环结构中调用求阶乘函数 jc,依次求变量 i的阶乘结果,将最后的计算结果,显示在 Text控件上。 (2)利用 Do While循环遍历 Text1
38、中的字符串,并使用 Mid(Text1, i, 1)取出Text1中相应位置的字符,判断该字符是否与 Text2中的字符相等,如果相等则将变量 num加 1,循环结束后根据 num的值,判断程序的查找结果。 四、综合应用题 43 【正确答案】 步骤 1:打开本题工程文件。 步骤 2:分析并编写程序代码。 程序提供代码 Private Function isprime(a As Integer)As Boolean Dim flag As Boolean flag=True b =2 Do While b =Int(a 2)And flag If Int(a b )=a b Then flag=
39、False Else b =b +1 End If Loop isprime=flag End Function 程序结束 参考答案 Private Sub C1_Click() Dim i As Integer For i=17999 To 1 Step一 1 If isprime(i)Then Text1=i Exit For End If Next End Sub Private Sub C2_Click() Open App Path&“ out5 txt“For Output As #1 Print #1 Text1 Text Close #1 End Sub 步骤 3:调试并运行程序,关闭程序后按题目要求存盘。 【试题解析】 函数过程 isprime(a)的功能是通过 Do Whik语句、 If判断语句和Int函数,判断参数 a是否为素数,如果是素数,则函数返回 True,否则函数返回False。在单击 “计算 ”按钮事件过程中,通过 For语句和调用函数过程 isprime(a),找出小于 18000的最大的素数,并将其显示在 Text1中;在单击 “存盘 ”按钮事件过程中,通过文件操作把 Text1中的计算结果存入考生文件夹下的 out5 txt文件中。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1