1、国家二级 VB机试(选择题)模拟试卷 174及答案与解析 一、选择题 1 以下关于变量作用域的叙述中,错误的是 ( A)在标准模块声明部分用 Public声明的变量的作用域为整个工程文件 ( B)在标准模块声明部分用 Private声明的变量的作用域为该标准模块 ( C)在窗体的声明部分不能用 Private声明变量 ( D)在过程中不能使用 Public声明变量 2 下列符号常量的声明中不合法的是 ( A) Const a As Single=3 5 ( B) Const a As Double=5+8 ( C) Const a As Integer=“25” ( D) Const a=“O
2、K” 3 在窗体模块的声明部分声明变量时,不能使用的关键字是 ( A) Dim ( B) Public ( C) Private ( D) Static 4 下面变量定义中错误的是 ( A) Public mod As Integer ( B) Static buf ( C) Dim ch As String*10 ( D) Dim a!(-5 To-1) 5 如果要定义一个窗体级变量,定义变量语句的位置应该是 ( A)在使用该变量的 过程中 ( B)在该窗体模块所有过程的前面 ( C)在该窗体模块所有过程的后面 ( D)在某个标准模块中 6 下列说法中,错误的是 ( A)变量名长度不能超过
3、255个字符 ( B)变量名的第一个字符可以是字母或数字 ( C)变量名只能由字母、数字和下划线组成 ( D)变量名不能使用保留字 7 在标准模块中,将 a定义为全局整型变量的语句是 ( A) Static a As Integer ( B) Dim a As Integer ( C) Private a As Integer ( D) Public a As Integer 8 下列说法中,错误的是 ( A)变量名长度不能超过 127个字符 ( B)变量名的第一个字符必须是字母 ( C)变量名不能使用保留字 ( D)变量名只能由字母、数字和下划线组成 9 下面能够将某个变量声明为局部变量的是
4、 ( A)在窗体模块的声明部分,用关键字 Static声明这个变量 ( B)在窗体模块的声明部分,用关键字 Dim声明这个变量 ( C)在需要使用这个变量的过程中,用关键字 Pfivate声明这个变量 ( D)在需要使用这个变量的过程中,用关键字 Public声明这个变 量 10 有如下过程代码: Sub vat dim() Static numaAs Integer DimnumbAs Integer numa=numa+2: numb=numb+1: print numa; numb End Sub 连续 3次调用 ear dim过程,第 3次调用时的输出是 ( A) 2 1 ( B) 2
5、 3 ( C) 6 1 ( D) 6 3 11 标准模块中有如下程序代码: Public x As Integer,y As Integer Sub vat pub(), x=10: y=20 End Sub 在窗体上有 1个命令按钮,并有如下事件过程: Private Sub Commandl Click() Dim x As Integer Call vat Dub x=x+100: y=y+100: Prim x; y End Sub 运行程序后单击命令按钮,窗体上显示的是 ( A) 100 100 ( B) 100 120 ( C) 110100 ( D) 110 120 12 窗体上
6、有一个 Textl文本框,一个 Cornmandl命令按钮,并有以下程序: Private Sub Commandl click()Dim nIf Text1 Text “1 23456”Thenn=n+1: Print“口令输入错误 ” n&”次 ” End IfEnd Sub 希望程序运行时得到左图所示的效果,即:输入口令,单击 “确认口令 ”命令按钮,若输入的口令不是 “123456”,则在窗体上显示输入错误口令的次数。但上而的程序实际显示的是右图所示的效果,程序需要修改。下面修改方案中 ( A)在 Dim n语句的下面添加一句: n=0 ( B)把 Print“口令输入错误 “& n
7、&”次 ”改为 Print”口令输入错误 “+n+”次 ” ( C) 把 Print”口令输入错误 “& n &”次 ”改为 Print”口令输入错误 ”&Str(n)&”次 ” ( D)把 Dinl n改为 Static n 13 工程文件中包含一个模块文件和一个窗体文件。模块文件的程序代码是:Public x As Integer Pdvate y As Integer窗体文件的程序代码是: Dim aAs IntegerPrivate SUb Commandl Click() Private Sub Form_Load() a=a+5: b=b+5: x=x+5: y=y+5 DimbA
8、s Integer Print a; b; x; y a=2: b=3: x=10: y=20End Sub End Sub 运行程序,单击窗体上的命令按钮,则 ( A) 5 5 15 5 ( B) 7 5 15 25 ( C) 7 8 15 5 ( D) 7 5 1 5 5 14 编写如下程序: Private Sub Command1_Click()Function proc(i As Integer) Dim m As Intege,nAs Integer Dim aAs Integer,Static b As Integer n=2a=a+1: b=b+1 For m=l To 3 p
9、roc=a*b+i Print proc(n); End Function Next m End Sub 程序运行后,单击命令按钮 Command1,输出结果为 ( A) 3 3 3 ( B) 3 4 5 ( C) 3 5 6 ( D) 1 2 3 15 窗体上查冬称为 Commandl的命令按钮,名称分别为 Label1、 Label2、 Label3的标签。编写如下程序: Private x As Integer Private Sub Commandl_Click() Static y As Integer Dim z As Integer n=5: z=z+n: y=y+n: x=x+
10、y Labell=x: Label2=y: Label3=z End Sub 运行程序,连续 3次单击命令按钮后, 3个标签中分别显示的是 ( A) 5 5 5 ( B) 15 10 5 ( C) 15 15 15 ( D) 30 15 5 16 在窗体上画一个命令按钮,然后编写如下程序: Sub inc(a As Integer) Private Sub Command1 Click() Static x As Integerinc 2: inc 3: inc 4 x=x+a Print x; End Sub End Sub 程序运行后,第一次单击命令按钮时的输出结果为 ( A) 2 3 4
11、 ( B) 2 5 9 ( C) 11, 14 18 ( D) 4 9 16 17 设窗体上有一个 Commandl命令按钮,还有以下程序代码: Private Sub Command1_Click()Private SUb proe(a As Integer) Static x As Integer Static x As Integer x=x+1 x=x+a: a=x Call proc(x)End Sub Print x, End Sub 程序运行后, 3次单击命令按钮,则产生的输出是 ( A) 1 2 3 ( B) 1 3 5 ( C) 1 3 7一 ( D) 2 4 6 18 编写
12、如下程序: Private Sub Commandl_Click() Dim n As Integer: Static s As Integer For n=1 To 3 s=s+n Next Print s End Sub 程序运行后,第三次单击命令按钮 Command1时,输出结果为 ( A) 3 ( B) 6 ( C) 9 ( D) 18 19 以下不能输出 “Program”的语句是 ( A) Print Mid(”VBProgram”, 3, 7) ( B) Print Right(”VBProgram”, 7) ( C) Print Mid(”VBProgram”, 3) ( D)
13、 Print Left(VBProgram”, 7) 20 执行以下程序段 a$=”Visual Basic Programming”: b$=“C+” c$=UCase(Left$(a$,7)&b$&RightS(a$, 1 2) 变量 c$的值为 ( A) Visual BASIC Programming ( B) VISUAL C+Programming ( C) Visual C+Programming ( D) VISUAL BASIC Programming 21 可以产生 30 50(含 30和 50)之间的随机整数的表达式是 ( A) Int(Rnd*21+30) ( B) I
14、nt(Rnd*20+30) ( C) Int(Rnd*50-Rnd*30) ( D) Int(Rnd*30+50) 22 能够产生 1到 50之间 (含 1和 50)随机整数的表达式是 ( A) Int(Rnd*51) ( B) Int(Rnd(50)+1) ( C) Int(Rnd*50) ( D) Int(Rnd*50+1) 23 表达式 Sgn(0 25)的值是 ( A) 1 ( B) 0 ( C) 1 ( D) 0 5 24 要计算 x的平方根并放入变量 y,正确的语句是 ( A) y=Exp(x) ( B) y=Sgn(x) ( C) y=Int(x) ( D) y=Sqr(x) 2
15、5 Print Right(“VB Programming”, 2)语句的输出结果是 ( A) VB ( B) Programming ( C) ng ( D) 2 26 以下表达式与 Int(3 5)的值相同的是 ( A) CInt(3 5) ( B) Val(3 5) ( C) Fix(3 5) ( D) Abs(3 5) 27 以下能对正实数 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) 28 语句:
16、 Print Asc(Chr$(Mid$(“98765432”, 4, 2)的输出是 ( A) 65 ( B) A ( C) 8765 ( D) W 29 语句: Print Int(Rnd*5+20)的输出不可能是 ( A) 20 ( B) 22 ( C) 24 ( D) 25 30 产生 100以内 (不含 100)2位随机整数的 Visual Basic表达式是 ( A) Int(Rnd(1)*91)+10 ( B) Int(Rnd(1)*90)+10 ( C) Int(Rnd(1)*91)+11 ( D) Int(Rnd(1)*90)+11 国家二级 VB机试(选择题)模拟试卷 174
17、答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域为该变量所在的过程,定义时使用 Dim、 Static关键字; 模块 (Module)变量:模块变量包括窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗体内的所有过程,其作用域为该变量 所在的窗体;标准模块变量 是在标准模块中定义的变量,变量的声明和使用与窗体模块中窗体变量类似。 区别是标准模块是只含有程序代码的应用程序文件,其扩展名为 bas: 全局 (Public)变量:全局变量
18、也称为全程变量,在标准模块的声明部分声明。全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 2 【正确答案】 C 【试题解析】 声明符号常量用来代替数值或字符串。一般格式为: Const常置名=表达式【,常量名 =表达式】,其中要求表达式的类型和常量的类型是 相同或者相容的。 ”25“是一个字符串常量,无法赋值给整型符号常量 a。 【知识模块】 数据类型及运算 3 【正确答案】 D 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域为该变量所
19、在的过程,定义时使用 Dim、 Static关键字; 模块 (Module)变量:模块变量包括窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗体内的所有过程,其作用域为该变量所在的窗体;标准模块变量是在标准模块中 定义的变量,变量的声明和使用与窗体模块中窗体变量类似。区别是标准模块是只含有程序代码的应用程序文件,其扩展名为 bas: 全局 (Public)变量:全局变量也称为全程变量,在标准模块的声明部分声明。全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 4 【正确答案】 A 【试题解析】 定义变量时需要使用 As类型或者类型说明符来指明变量
20、的数据类型,如果不指明则为隐式声明,该变量为变体型; mod是关键字表示求余运算,根据标识符命名规则不能作为变量名。 【知识模块】 数据类型及运算 5 【正确答案】 B 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域:该变量所在的过程,定义时使用 Dim、 Static关键字; 模块 (Module)变量:模块变量包括窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗体内的所有过程,其作用域为该变量所在的窗体;标准模块变量是在标准模块中定义的变量,变量的声明和使用与窗体模块中
21、窗体变量类似。区别是标准模块是只 含有程序代码的应用程序文件,其扩展名为 bas; 全局 (Public)变量:全局变量也称为全程变量,在标准模块的声明部分声明。全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 6 【正确答案】 B 【试题解析】 变量是用一个名称来表示的,给变量命名时应遵循规则:名称只能由字母、数字和下划线组成;名称的第一个字符必须是英文字母,最后一个字符可以是类型说明符:名称的有效字符为 255个:不能用 VB的保留字作变量名,但变量名中可以包含保留字,如 ConstA; 变量名也不能是末尾带有类型说明符的保留字,如 Dim!是不合
22、法的变量名;不区分字母的大小写。 【知识模块】 数据类型及运算 7 【正确答案】 D 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域;该变量所在的过程,定义时使用 Dim、 Static关键字; 模块 (Module)变量:模块变量包括窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗体内的所有过程,其作用域为该变量所在的窗体;标准 模块变量是在标准模块中定义的变量,变量的声明和使用与窗体模块中窗体变量类似。区别是标准模块是只含有程序代码的应用程序文件,其扩展名为 bas:
23、全局 (Public)变量:全局变量也称为全程变量;在标准模块的声明部分声明,全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 8 【正确答案】 A 【试题解析】 变量是用一个名称来表示的,给变量命名时应遵循规则:名称只能由字母、数字和下划线组成; 名称的第一个字符必须是英文字母,最后一个字符可以是类型说明符; 名称的有效字符为 255个;不能用 VB的保留字作变量名,但变量名中可以包含保留字,如 ConstA: 变量名也不能是末尾带有类型说明符的保留字,如 Dim!是不合法的变量名;不区分字母的大小写。 【知识模块】 数据类型及运算 9 【正确答案】
24、 C 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域:该变量所在的过程,定义时使用 Dim、 Static关键字; 模块 (Module)变量:模块变量包括 窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗体内的所有过程,其作用域为该变量所在的窗体;标准模块变量是在标准模块中定义的变量,变量的声明和使用与窗体模块中窗体变量类似。区别是标准模块是只含有程序代礴的应用程序文件,其扩展名为 bas: 全局 (Public)变量:全局变量也称为金程变量,在标准模块的声明部分声明。全
25、局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 10 【正确答案】 C 【试题解析】 Static,语句在过程级别中使用,用于声明变 量并分配存储空间,在整个代码运行期间都能保留使用 Static语句声明的变量的值。本题中,当第 1次调用过程时,静态变量 numa的初值为 0、普通变量 numb的初值为 0,执行循环语句后,静态变量 numa的值应为 2、普通变量 numb的值为 1;当第 2次调用 过程时,静态变量 numa的初值为 2、普通变量 numb的初值为 0,执行循环语句后,静态变量 numa的值应为 4、普通变量 numb的值为 1;当第
26、 3次调用过程时,静态变量 numa的初值为 4、普通变量 numb的初值为 0,执行循环语句后,静态变量 numa的值应为 6、普通变量 numb的值为 1。 【知识模块】 数据类型及运算 11 【正确答案】 B 【试题解析】 在标准模块用 Public关键字声明的全局变量,其作用域最大,可以在工程的每个模块、每个过程中使用。但当不同作用范围的变量重名时,有效范围小的变量会屏蔽有效范围大的变量。当一个全局变量与一个过程级变量重名时,当在本过程中直接使用这个变量名时,被认为是指局部变量。如果要在这个过程中使用同名的全局变量,要使用模块名来修饰变量名。在本题的事件过程中,由于变量 x被声明为过程
27、级变量,其初始值为 0,调用过程 vatpub不会改变其值,而变量 y为标准模块中声明的全局变量,调用过程 vat pub后其值为20。故最后输出结果为 100和 120。 【知识模块】 数据类型及运算 12 【正确答案】 D 【试题解析】 本题中题干部分的程序之所以会产生不合要求的结果,其原因是在单击事件中的第一条语句为 Dim n,这样的话每次单击按钮时触发此事件,都将会执行这条语句,重新定义一个局部变量 n并设其默认初值为 0。 Static语句在过程级别中使用,用于声明变量并分配存储空间,在整个代码运行期间都能保留使用 Static语句声明的变量 的值,因此此处应该使用 Static
28、n来声明变量。 【知识模块】 数据类型及运算 13 【正确答案】 D 【试题解析】 本题中在模块文件中声明的 x是全局变量, y是模块变量;在窗体中声明的 a是模块级变量;在窗体的 Load事件中声明了局部变量 b,而且隐式声明了局部变量 y;在按钮的 Click事件中使用到的 a是模块级变量其值为 2; b是隐式声明的局部变量,其初值为 0; x是全局变量,其值为 10; y也是隐式声明的局部变量,其初值为 5。 【知识模块】 数据类型及运算 14 【正确答案】 B 【试题解析】 使用 Dim关键字定义的是动态局部变量,过程执行结束后即被释放;使用 static关键字定义的是静态局部变量,过
29、程执行结束后仍然保留。本题中函数 proc中的局部变量 a是动态变量, b是静态变量。即每次函数调用后 b的值会保留。先后三次调用 proc(n)方法,依次输出 3、 4、 5。 【知识模块】 数据类型及运算 15 【正确答案】 D 【试题解析】 static语句在过程级别中使用,用于声明变量并分配存储空间,在整个代码运行期间都能保留使用 Static语句声明的变量的值。在窗体的声明段用Private声明的变量为模块级变量,其作用域为整个窗体。本题中,当第 1次单击时,静态变量 y的初值为 0,执行调用语句后,静态变量 y的值应为 5,模块级变量 x的值为 5;当第 2次单击时,静态变量 y的
30、初值为 5,执行调用语句后,静态变量 y的值应为 10,模块级变量 x的值为 15;当第 3次调用过程时,静态变量 y的初值为 10,执行调用语句后,静态变量 y的值应为 15,模块级变量 x的值为30。 【知识模块】 数据类型及运算 16 【正确答案】 B 【试题解析】 static语句在过程级别中使用,用于声明变量并分配 存储空间,在整个代码运行期间都能保留使用 Static语句声明的变量的值。本题的 inc过程中的x是一个静态变量,在三次调用过程中变量的值会保留,分别为 2、 2+3、 5+4。 【知识模块】 数据类型及运算 17 【正确答案】 C 【试题解析】 本题中在 Command
31、l Click过程中和 Sub过程 proc中分别定义了一个静态变量 x,这两个 x都是局部变量,隶属于不同的局部,互不干涉;当单击命令按钮时,单击事件中的 x加 1,然后调用 proc过程;由于 proc的形参 a采用地址传递,因此对 a的改变会影响实参 x。三次单击按钮分别使得两个过程中的 x分别变化,都会保留上一次过程结束时的值。 【知识模块】 数据类型及运算 18 【正确答案】 D 【试题解析】 static语句在过程级别中使用,用于声明变量并分配存储空间,在整个代码运行期间都能保留使用 Static语句声明的变量的值。在本题中连续 3次单击命令按钮,第一次单击时输出的 s=1+2+3
32、=6。第二次单击时输出的s=6+1+2+3=12,第三次单击时输出的 s=12+1+2+3=18。 【知识模块】 数据类型及运算 19 【正确答案】 D 【试题解析】 本题考查的考点是有关取子串函数的。在 VB中有三种取子串函数: Left函数用于在字符串左端开始取 n个字符; Right函数用于在字符串右端开始取 n个字符 (注意子串中字符的顺序与母串中相同 ); Mid函数可以实现在任何位置取任何长度的子串,其中长度省略的话将会一直取到串尾。本题中选项 D的结果是 VBprogr,不符合题意。 【知识模块】 数据类型及运算 20 【正确答案】 B 【试题解析】 本题考查的考点是有关取子串函
33、数的。在 VB中有 3种取子串函数: Left函数用于在字符串左端开始 取 n个字符; Right函数用于在字符串右端开始取 n个字符 (注意子串中字符的顺序与母串中相同 ); Mid函数可以实现在任何位置取任何长度的子串,其中长度省略的话将会一直取到串尾。 UCase函数用于把字符串转换成大写表示。 【知识模块】 数据类型及运算 21 【正确答案】 A 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0+的随机数。为了生成某个指定范围内的随机整数,可使用以下公式:Int(upperbound-lowerbound+1)*Rnd+lowerbound,其 中 uppe
34、rbound是随机整数范围的上限, lowerbollIld是随机整数范围的下限。本题中 upperbound为 50,lowerbound为 30. 【知识模块】 数据类型及运算 22 【正确答案】 D 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 l但大于或等于 0的随机数。为了生成某个指定范围内的随机整数,可使用以下公式: Int(upperbound-loweround+1)*Rnd+lowerlbound,其中 upperbannd是随机整数范围的上限,lowerbound是 随机整数范围的下限。本题中 upperbound为 50, lowerbound为1。 【知识模
35、块】 数据类型及运算 23 【正确答案】 C 【试题解析】 Sgn函数会返回参数的符号,如果参数为正数返回 1,为负数返回 -1。 【知识模块】 数据类型及运算 24 【正确答案】 D 【试题解析】 Exp函数是求指数函数; Sgn函数是求符号函数; Int函数是取整函数,平方根函数 (Sqr)可以返回 N的算术平方根, N必须大于或等于 0。 【知识模块】 数据类型及运算 25 【正确答案】 C 【试题解析】 Right( )函数用于取出已有字符串最右边指定个数的字符串,本题中取出的是最后两位字符。 【知识模块】 数据类型及运算 26 【正确答案】 C 【试题解析】 Int函数的作用是去返回
36、不大于参数的最大整数,例如Int(4 6)=4, Int(-4 6)=-5; Fix函数的作用是去掉参数的小数部分只保留整数部分,在参数为止数的时候, Int函数和 Fix函数的返回值是相同的。 【知识模块】 数据类型及运算 27 【正确答案】 B 【试题解析】 Int函 数会返回不大于参数的最大整数,要对第 3位小数进行四舍五入,需要先将 d自加 0 005,这样如果第三位小数大于 5就将进位;接下来乘以 100,这样第 3位小数就变成了第一位小数,对其做 Int函数留下整数部分,最终再乘以 0 0l得到结果。 【知识模块】 数据类型及运算 28 【正确答案】 A 【试题解析】 Mid函数可
37、以实现在任何位置取任何长度的子串,其中长度省略的话将会一直取到串尾,本题中是从第 4位取长度为 2的子串即 “65”。 Chr函数司以将 ASCII码转成对应的字符, ASC函数将字符转换成对应的 ASCII码。 【知识模块】 数据类型及运算 29 【正确答案】 D 【试题解析】 随机数函数 Rnd用于产生一个小于 1但大于或等于 0的随机数值, Int函数会返回不大于参数的最大整数值。由于 Rnd函数的值不能到达 1,所以整个表达式也不可能到达 25。 【知识模块】 数据类型及运算 30 【正确答案】 B 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 l但大于或等于 0的随机数。为了生成某个指定范围内的随机整数,可使用以下公式: Int(upperbound-lowerbound+1)*Rnd+lowerbound,其中 upperbound是随机整数范围的上限,lowerbound是随机整数范围的下限。 【知识模块】 数据类型及运算