1、国家二级 VB机试(数据类型及运算)模拟试卷 29及答案与解析 一、选择题 1 假定一个工程由一个窗体文件 Forml和两个标准模块文件 Modell和 Model2组成Modell的代码如下: Public x As Integer: Public Y As Integer Sub S10 x=1 S2 End Sub Model2的代码如下: Sub Main() S1 End Sub Sub S2() y=10 Forml show End Sub 其中 Sub Main被设置为启动过程。程序运行后,各模块的执行顺序是 ( A) FormlModellModel2 ( B) Modell
2、Model2Forml ( C) Model2ModellForml ( D) Model2FormlModell 2 在窗体 (名称为 Forml)上画一个名称为 Textl的文本框和一个名称为 Commandl的命令按钮,然后编写一个事件过程。程序运行后,如果在文本本框中输入一个字符,则把命令按钮的标题设置为 “计算机等级考试 ”。以下能实现上述操作的时间过程是 ( A) Private Sub Textl_Change() Commandl Caption=”计算机等级考试 ” End Sub ( B) Private Sub Textl_Change() Caption=”计算机等级考
3、试 ” End Sub ( C) Private Sub Textl_Change() Textl Caption=”计算机等级考试 ” End Sub ( D) Private Sub Textl_Change() Textl Text=”计算机等级 考试 ” End Sub 3 在窗体上画一个列表框和一个命令按钮,其名称分别为 listl和 Commandl,然后编写如下事件过程: Private Sub Form_load() Listl Addltem”Iteml”: Listl Addltem”Item2”: Listl Addltem”Item3” End Sub Private
4、Sub Commandl_Click() List1 List(List1 ListCount)=”AAAA” End Sub 程序运行后,单击命令按钮,其结果为 ( A)把字符串 “AAAA”添加到列表框中,但位置不能确定 ( B)把字符串 “AAAA”添加到列表框的最后 (即 “Item3”的后面 ) ( C)把列表框原有的最后一项改为 “AAAA” ( D)把字符串 “AAAA”插入到列表框的最前面 (即 “Iteml”的前面 ) 4 在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Commandl_Click For i=1 To 5 a(i)=Chr(Asc(
5、”A”)+(i一 1) Next i For Each b In a Print b; Next End Sub 程序运行后,单击命令按钮,输出结果是 ( A) ABCDE ( B) 1 2 3 4 5 ( C) abcde ( D)出错信息 5 设窗体上有一个名为 Textl的文本框,并编写如下程序: Private Sub Form_load() Show Textl Text=“: Text1 SetFocus End Sub Private Sub Form_MouseUp(Button As Integer,_shift As integer X As Single, Y As In
6、teger) Print”程序设计 ” End Sub Private Sub Text_KeyDown(keyCod As Integer,shift As Integer) Print”Visual Basic”: End Sub 程序运行后,如果在文本框中输入字母 “a”,然后单击窗体,则在窗体上显示的内容是 ( A) Visual Basic ( B)程序设计 ( C) Visual Basic程序设计 ( D) a程序设计 6 假定有下表所列的菜单结构: 要求程序运行后,如果单击菜单项 “大图标 ”,则在该菜单前添加一个 “”。以下正确的是 ( A) Private Sub bigi
7、con_Click() bigicon Checked=False End Sub ( B) Private Sub bigicon_Click() Me appear bigicon Checked=True End Sub ( C) Private Sub bigicon_Click() bigicon Checked=True End Sub ( D) Private Sub bigicon_Click() appear bigicon Checked=True End Sub 7 以下能从字符串 “VisualBasic”中直接取出子字符串 “Basic”的函数是 ( A) Left
8、( B) Mid ( C) String ( D) Instr 8 在菜单编辑器中建立 1个名称为 Menu()的菜单项,将其 “可见 ”属性设置为False,并建立其若干子菜单,然后编写如下过程 Private Sub Form_MousDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button=1 Then PopupMenu Menu() End If End Sub 则以下叙述中错误的是 ( A)该过程的作用是弹出一个菜单 ( B)单击鼠标右键时弹出菜单 ( C) Menu()是在菜单编辑器
9、中定义的弹出菜单的名称 ( D)参数 X、 Y指明鼠标当前位置的坐标 9 设有如下的用户定义类型: Type Student Number As String: Name As String: Age As Integer End Type 则以下正确引用该类型成员的代码是 ( A) Student name=”李明 ” ( B) Dim S As Student S name=”李明 ” ( C) Dim S As Type Student S name=”李明 ” ( D) Dim S As Type S name=”李明 ” 10 在窗体上画一个命令按钮和两个标签,其名称分别为 Comm
10、andl、 Labell和Label2,然后编写如下事件过程: Private Sub Commandl_Click() a=0 For i=1 To 10 a=a+1: b=0 Forj=1 To 10 a=a+1: b=b+2 Nextj Label1 Caption=Str(a): Label2 Caption=Str(b) End Sub 程序运行后,单击命令按钮,在标签 Label1和 Label2中显示的内容分别是 ( A) 10和 20 ( B) 20和 110 ( C) 200和 110 ( D) 110和 20 11 为达到把 a、 b中的值交换后输出的目的,某人编程如下:
11、Private Sub Commandl_Click() a =10: b =20 Call swap(a, b) Print a,b End Sub Private Sub swap(ByVal a As Integer, ByVal b As Integer) c=a: a=b: b=c End Sub 在运行时发现输出结果错了,需要修改。下面列出的错误原因和修改方案中正确的是 ( A)调用 swap过程的语句错误,应改为: Call swap(a, b) ( B)输出语句错误,应改为: print”a”, ”b” ( C)过程的形式参数有错,应改为 swap(ByRef, a Integ
12、er, ByRefb Integer) ( D) swap中 3条赋值语句的顺序 是错误的,应改为 a=b: b=c: c=a 12 设有如图所示窗体和以下程序: Pirint Sub Commandl_Click() Text 1 Text=”Visual Basic”End SubPrivate Sub Text_LostFocusO If Text 1 Text”BASIC”Then Textl Text=”: Text SetFocus End IfEnd Sub 程序运行时,在 Textl文本框中输入 “Basic”(如图所示 ),然后单击 Command按钮,则产生的结果是 ( A
13、)文 本框中无内容,焦点在文本框中 ( B)文本框中为 “Basic”,焦点在文本框中 ( C)文本框中为 “Basic”,焦点在按钮上 ( D)文本框中为 “Visual Basic”,焦点在按钮上 13 在窗体上画一个名称为 Textl的文本框和一个名称为 Commandl的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim I As Integer,n As Integer For i=0 To 50 i=i+3: n=n+1 Ifi10 Then Exit For Next Text 1 Text=Str(n) End Sub 程序运行后
14、,单击命令按钮,在文本框中显示的值是 ( A) 2 ( B) 3 ( C) 4 ( D) 5 14 设有以下函数过程: Function fun(a As Integer, b As Integer) Dim C As Integer Ifa4 X=X*Y: Y=Y+1 Loop Print X ( A) 1 ( B) 4 ( C) 8 ( D) 20 17 下面函数的功能应该是:删除字符串 str中所有与变量 ch相同的字符,并返回删除后的结果。例如:若 str=“ABCDABCD”, ch=“B”,则函数的返回值为:“ABCDCD” Function delchar(str As Stri
15、ng, ch As String)As String Dim k As Integer, temp As String, ret As String Ret=” For k=-I To Len(str) Temp=Mid(str, k, 1) If temp=ch Then ret=ret temp End If Next k delchar=ret End Function 但实际上函数有错误,需要修改。下面的修改方案中正确的是 ( A)把 ret=ret temp改为 ret=temp ( B)把 Iftemp=ch Then改为 Iftemp=5 x=a*b Print b; x a=a
16、+b: b=b+a Loop End Sub 程序运行后,单击窗体,输出结果是 ( A) 1 1 2 3 ( B) 1 1 2 4 ( C) 1 1 3 8 ( D) 1 1 3 6 21 表达式 Int(Rnd(0)*50)所产生的随机数范围是 ( A) (0, 50) ( B) (1, 50) ( C) (0, 49) ( D) (1, 49) 22 现有如下一段程序: Option Base1 Private Sub Commandl_Click() Dim a a=Array(3, 5, 7, 9): x=1 For i=4 To 1 Step-1 s=s+a(i)*x: x=x*10
17、 Next Print s End Sub 执行程序,单击 Commandl命令按钮,执行上述事件过程,输出结果是 ( A) 9753 ( B) 3579 ( C) 35 ( D) 79 23 设有如下程序: Sub f(x As Integer, ByVal y As Integer) x=2*x: y=y+x End Sub Private Sub Commandl_Click() Dim a As Integer, b As Integer a=6: b=35 Call f(a, b) Print a,b End Sub 程序运行后,单击命令按钮 Commandl,输出结果为 ( A)
18、6 47 ( B) 12 47 ( C) 6 35 ( D) 12 35 24 以下不能输出 “Program”的语 句是 ( A) Print Mid(”VBProgram”, 3, 7) ( B) Print Right(”VBProgram”, 7、 ) ( C) Print Mid(”VBProgram”, 3、 ) ( D) Print Left(”VBProgram”, 7) 25 执行以下程序段 a$=“Visual Basic Programming”: b$=”C+”c$=UCase(Left$(a$,7)&b$&RightS(aS, 12) 变量 c$的值为 ( A) Vi
19、sual BASIC Programming ( B) VISUAL C+Programming ( C) Visual C+Programming ( D) VISUAL BASIC Programming 26 可以产生 3050(含 30和 50)之间的随机整数的表达式是 ( A) Int(Rnd*21+30) ( B) Int(Rnd*20+30) ( C) Int(Rnd*50-Rnd*30) ( D) Int(Rnd*30+50) 27 能够产生 1到 50之间 (含 1和 50)随机整数的表达式是 ( A) Int(Rnd*51) ( B) Int(Rnd(50)+1) ( C)
20、 Int(Rnd*50) ( D) Int(Rnd*50+11 28 表达式 Sgn(0 25)的值是 ( A) -1 ( B) 0 ( C) 1 ( D) 0 5 29 要计算 x的平方根并放入变量 y,正确的语句是 ( A) y=Exp(x) ( B) y=Sgn(x) ( C) y=Int(x) ( D) y=Sqr(x) 30 Print Right(“VB Programming“2)语句的输出结果是 ( A) VB ( B) Programming ( C) ng ( D) 2 31 以下表达式与 Int(3 5)的值相同的是 ( A) CInt(3 5) ( B) Val(3 5
21、) ( C) Fix(3 5) ( D) Abs(3 5) 32 以下能对正实数 d的第 3位小数四舍五入的表达式是 ( A) 0 01*Int(d+0 005) ( B) 0 01*Int(100*(d+0 005) ( C) 0.01*Int(100*(d+0 05) ( D) 0 01*Int(d+0 05) 33 语句: Print Asc(Chr$(Mid$(”98765432”, 4, 2)的输出是 ( A) 65 ( B) A ( C) 8765 ( D) W 34 语句: Print Int(Rnd*5+20)的输出不可能是 ( A) 20 ( B) 22 ( C) 24 (
22、D) 25 国家二级 VB机试(数据类型及运算)模拟试卷 29答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 本题考查启动顺序。本题中,设置 Main为启动过程,而 Main位于 Model2当中,因此最先运行的是 Model2中的 Mian过程;在 Mian过程中调用S1过程,而 S1位于 Modell模块中,因此接下来运行的是 Modell模块;在 S1过程中会调用 S2过程; S2过程中设置 Foml show来启动 Froml,因此最后运行的是 Foml。 【知识模块】 数据类型及运算 2 【正确答案】 A 【试题解析】 本题考查控件属性和事件代码。题目要求在文本框输入字符
23、的时候设置命令按钮的标题属性,因此需要在文本框的 Change事件代码设置命令按钮的Caption属性。 【知识模块】 数据类型及运算 3 【正确答案】 B 【试题解析】 本题考查控件的属性和方法。在窗体 的 Load事件代码里面,使用列表框的 AddItem方法为 Listl列表框增加三项;在命令按钮的 Click事件代码里面,此时列表框 Listl的 ListCount属性为 3,因此List1 List(Listl ListCount)=”AAAA”实际是 Listl Listf31=”AAAA”,即向列表框的最后添加一项。 【知识模块】 数据类型及运算 4 【正确答案】 A 【试题解析
24、】 本题考查常用函数和 For循环。在第一个循环里面,给数组 a的元素赋值,第一个元素的值为 “A”,第二个元素值为 “B”, 以此类推;接下来第二个For循环打印输出数组 a里面的元素值。 【知识模块】 数据类型及运算 5 【正确答案】 C 【试题解析】 本题考查控件属性和事件响应。在文本框输入字母 “a”会触发文本框的 KevDown事件,在该事件代码里面输出 “Visual Basic”字符串;接下来单击窗体,会触发窗体的 MouseUp事件,在该事件代码里面输出 “程序设计 ”。 【知识模块】 数据类型及运算 6 【正确答案】 C 【试题解析】 本题考查菜单的基本知识。在菜单前添加一个
25、 “”这是设置菜单的Checked属性。 【知识模块】 数据类型及运算 7 【正确答案】 B 【试题解析】 本题考查常用函数。常用的字符串截取方式是 Mid、 LeR和Right, Mid(a, M, N)功能是从 a字符串左起第 M位下标开始取值 (包含 M位 ),共取 N位字符; Right(a, M)表示从右起第一位开始取值,向左取 M位; Left(a,N)表示从 a字符串左起第一位开始取值,向右取 N位。 【知识模块】 数据类型及运算 8 【正确答案】 B 【试题解析】 在窗体的 MouseDown事件过程中,判断是否是 鼠标左键,如果是则弹出菜单,选项 B)错误。 【知识模块】 数
26、据类型及运算 9 【正确答案】 B 【试题解析】 本题考查用户定义类型,用户类型需要先定义,然后才能使用。选项 A)没有定义 Student类型的变量,错误;选项 B)先定义 Student类型变量,然后使用,正确;选项 C)定义 Student类型变量 s的时候多写了 Type,错误;选项D)定义 Student类型变量错误。 【知识模块】 数据类型及运算 10 【正确答案】 D 【试题解析】 本题考查循环。 Commandl的 Click事件代码里面有两个 For循环,而且是嵌套关系。在外层的 For循环里面, a增加 1,然后 b置 0,进入内层循环,在内层循环中 a增加 1, b增加
27、2,最后输出 a和 b的值。每次外循环的时候 b的值清 0,然后执行内层循环,因此 b的值就是最后一次执行内层循环后的值,内层循环执行 10次,故 b最后的值为 20; a是统计循环执行的次数,内层循环执行 1010=100次,外层循环执行 10次,故 a最后的值为 110。 【知识模块】 数据类型及运算 11 【正确答案】 C 【试题解析】 本题考查函数参数传递。 VB有两种参 数传递方式:传值 ByVal和传地址 ByRef, Byval方式形参的修改不会影响到实参, ByRef方式修改形参相当于修改实参。题目要求在调用 swap过程后,修改形参影响实参,参数应该使用ByRef方式。 【知
28、识模块】 数据类型及运算 12 【正确答案】 A 【试题解析】 本题考查控件属性和事件过程。单击 Commandl命令按钮,执行命令按钮的 Click事件过程,在 Command1的 Click事件过程中,设置文本框的Text1 Text属性为 “Visual Basic”。同时,由于鼠标从文本框移 动到命令按钮,文本框失去焦点,触发文本框的 LostFocus事件,在该事件代码里面,判断文本框内容是否为 “BASIC”,由于在前面的 Commandl的事件过程中设置了文本框的 Text属性为 “Visual Basic”,和 “BASIC”不相等,因此该 if判断条件成立,接下来把文本框的
29、Text清空,并设置文本框获取输入焦点。 【知识模块】 数据类型及运算 13 【正确答案】 B 【试题解析】 本题考查循环控件结构。在 Commandl的 Click事件过程中,变量I是循环控制变量,变量 n记录循环的次 数。在 For循环中, i每次增加 3, n增加1,接下来通过 if判断 i是否大于 10,如果大于 10则结束循环。 I和 n的变化过程为: 3和 1、 7和 2、 11和 3,当 I为 11时, if条件成立循环结束。 【知识模块】 数据类型及运算 14 【正确答案】 B 【试题解析】 本题考查循环结构的使用。在 fun函数中,首先判断 a和 b的大小,并把 a和 b中大
30、的保存在 a当中,小的保存在 b当中。然后进入循环,在循环体内部, c如果不能整除 b则每次增加 a,这是求 a和 b的最小公倍数。 【知识模块】 数据类型及运算 15 【正确答案】 C 【试题解析】 本题考查常用内部函数, Mid、 Right和 L,eft是常用的字符串截取函数。在事件过程代码中, b$=Right(a$, 8)表示从 a字符串的最右边开始取 8个字符,因此 b变量为 “hardware”, c$=Mid(a$, 1, 8)表示从 a字符串的第一个字符开始取长度为 8的子字符串,即 b为 “software”。 MsgBox a$, b$, c$, 1是弹出对话框,其中对话
31、框的标题为 b,提示内容为 a。 【知识模块】 数据类型及运算 16 【正确答案】 B 【试题解析】 本 题考查循环控制结构。 X和 Y的初值分别为 1和 4,循环的结束条件是 Y大于 4。在循环体内, X=X*Y, Y自增 1, Y的初值为 4,循环结束条件为 Y大于 4,因此循环执行一次后 Y变成 5,循环结束,此时 X=1*4=4。 【知识模块】 数据类型及运算 17 【正确答案】 B 【试题解析】 本题考查常用函数和循环结构的使用。在 delchar函数中, Ret变量保存要返回的字符串,通过一个循环来查处要删除的字符,在循环体内,逐个取出字符,并判断是否是需要删除的字符,如果是则把该
32、字符保存到 Ret中,最后返回 Ret。显 然程序的功能是返回字符串 str中由 ch组成的字串,和题目要求不符,应该把 If判断里面的等于改成不等于,这样只要不是 ch就保存到 Ret中,相当于删除了 ch字符。 【知识模块】 数据类型及运算 18 【正确答案】 B 【试题解析】 本题考查 For Each循环结构,语法是: For Each elementAs data, typeIn group 结构图 Nextelement element在 For Each语句中是必选项,变体类型变量,用于遍历集合的元 素。 【知识模块】 数据类型及运算 19 【正确答案】 A 【试题解析】 本题考
33、查函数调用。 Fun函数有两个参数,第一个参数是 Integer类型数组,第二个参数是 String字符串,返回值为 Integer。选项 A)正确, x(O)是Integer类型变量,参数 x是 Integer类型数组,参数 “ch”是字符串;其余选项均错误。 【知识模块】 数据类型及运算 20 【正确答案】 D 【试题解析】 本题考查循环结构的使用。本题的循环比较简单,可以直接计算循环体内变量的变化过程。第一次 进入循环, x=a*b=1,第一次输出 1和 1,然后a=a+b=2, b=b+a=3;再次进入循环, x=a*b=6,第二次 Print输出 3和 6,然后a=a+b=5, b=
34、b+a=8;此时 a=5,循环结束。 【知识模块】 数据类型及运算 21 【正确答案】 C 【试题解析】 本题考查常用函数的使用。 Rnd函数返回小于 1但大于或等于 0的值,因此 Int(Rnd(0)*50)是产生 0-49的整数。 【知识模块】 数据类型及运算 22 【正确答案】 B 【试题解析】 本题考查数组的使用和循环 结构。在 Commandl的 Click事件过程中,首先定义变量 a,然后通过 Atray函数给变量 a赋值。在循环内, s保存累加和, x表示权重,每次扩大 10倍,随着循环次数增加 x越来越大。循环结束后, s的值为 3579。 【知识模块】 数据类型及运算 23
35、【正确答案】 D 【试题解析】 本题考查函数调用和传参类型。 VB中默认的参数传递类型为ByRef是按地址传递参数的, f过程的两个参数,参数 x是 ByRef,参数 y是BYVal,因此在 f过程中修改形参 x会同步修改实参,修改形参 y不会导致实参的修改。 【知识模块】 数据类型及运算 24 【正确答案】 D 【试题解析】 本题考查的考点是有关取子串函数的。在 VB中有三种取子串函数: Left函数用于在字符串左端开始取 n个字符; Right函数用于在字符串右端开始取 n个字符 (注意子串中字符的顺序与母串中相同 ); Mid函数可以实现在任何位置取任何长度的子串,其中长度省略的话将会一
36、直取到串尾。本题中选项 D)的结果是 VBprogr,不符合题意。 【知识模块】 数据类型及运算 25 【正确答案】 B 【试题解析】 本题考查的考点是有关取子串函 数的。在 VB中有 3种取子串函数: LeR函数用于在字符串左端开始取 n个字符; Right函数用于在字符串右端开始取 n个字符 (注意子串中字符的顺序与母串中相同 ); Mid函数可以实现在任何位置取任何长度的子串,其中长度省略的话将会一直取到串尾。 UCase函数用于把字符串转换成大写表示。 【知识模块】 数据类型及运算 26 【正确答案】 A 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0的随
37、机数。为了生成某个指定范围内的随机整数,可使用以下公式: Int(upperboundlowerbound+1)*Rnd+lowerbound),其中 upperbound是随机整数范围的上限, lowerbound是随机整数范围的下限。本题中 upperbound为50, lowerbound为 30。 【知识模块】 数据类型及运算 27 【正确答案】 D 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0的随机数。为了生成某个指定范围内的随机整数,可使用以下公式: Int(upperbound一 lowerbound+1)*Rnd+lowerbound),其中 u
38、pperbound是随机整数范围的上限, lowerbound是随机整数范围的下限。本题中 upperbound为50, lowerbound为 1。 【知识模块】 数据类型及运算 28 【正确答案】 C 【试题解析】 Sgn函数会返回参数的符号,如果参数为正数返回 1,为负数返回 -1。 【知识模块】 数据类型及运算 29 【正确答案】 D 【试题解析】 Exp函数是求指数函数; Sgn函数是求符号函数; Int函数是取整函数,平方根函数 (Sqr)可以返回 N的算术平方根, N必须大于或等于 0。 【知识模块】 数据类型及运算 30 【正确答案】 C 【试题解析】 Right()函数用于取
39、出已有字符串最右边指定个数的字符串,本题中取出的是最后两位字符。 【知识模块】 数据类型及运算 31 【正确答案】 C 【试题解析】 Int函数的作用是去返回不大于参数的最大整数,例如Int(4 6)=4, Int(-4 6)=一 5: Fix函数的作用是去掉参数的小数部分只保留整数部分,在参数为正数的时候, Int函数和 Fix函数的返回值是相同的。 【知识模块】 数据类型及运算 32 【正确答案】 B 【试题解析】 Int函数会返回不大于参数的最大整数,要对第 3位小数进行四舍五入,需要先将 d自加 0 005,这样如果第三位小数大于 5就将进位;接下来乘以 100,这样第 3位小数就变成
40、了第一位小数,对其做 Int函数留下整数部分,最终再乘以 0 01得到结果。 【知识模块】 数据类型及运算 33 【正确答案】 A 【试题解析】 Mid函数可以实现在任何位置取任何长度的子串,其中长度省略的话将会一直取到串尾,本题中是从第 4位取长度为 2的子串即 “65”。 Chr函数可以将 ASCII码转成对应的字符, ASC函数将字符转换成对应的 ASCII码。 【知识模块】 数据类型及运算 34 【正确答案】 D 【试题解析】 随机数函数 Rnd用于产生一个小于 1但大于或等于 0的随机数值, Int函数会返回不大于参数的最大整数值。由于 Rnd函数的值不能到达 1,所以整个表达式也不可能到达 25。 【知识模块】 数据类型及运算