1、国家二级 VB机试(数据类型及运算)模拟试卷 6及答案与解析 一、选择题 1 若在窗体模块的声明部分声明了如下自定义类型和数组 Private Type rec Code As Integer: Caption As String End Type Dim art(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) 2
2、以下自定义数据类型的语句中,正确的是 ( A) Type student ID As String*20 name As String*10 age As Integer End student ( B) Type student ID As String*20 name As String*10 age As Intege rEnd Type ( C) Type student ID As String name As String age As Integer End student ( D) Type ID As String*20 name As String*10 age As In
3、teger End Type student 3 下面为单精度实型 (即单精度浮点型 )变量的是 ( A) x$ ( B) x& ( C) x! ( D) x# 4 以下选项中,不合法的 Visual Basic的变量名是 ( A) a5b ( B) _xyz ( C) a_b ( D) andif 5 在标准模块中用 Public关键字定义的变量,其作用域为 ( A)本模块所有过程 ( B)整个工程 ( C)所有窗体 ( D)所有标准模块 6 以下变量名中合法的是 ( A) x-2 ( B) 12abc ( C) sum_total ( D) print 7 在某个事件过程中定义的变量是 (
4、 A)局部变量 ( B)窗体级变量 ( C)全局变量 ( D)模块变量 8 以下关于变量作用域的叙述中,错误的是 ( A)在标准模块声明部分用 Public声明的变量的作用域为整个工程文件 ( B)在标准模块声明部分用 Private声明的变量的作用域为该标准模块 ( C)在窗体 的声明部分不能用 Private声明变量 ( D)在过程中不能使用 Public声明变量 9 如果要定义一个窗体级变量,定义变量语句的位置应该是 ( A)在使用该变量的过程中 ( B)在该窗体模块所有过程的前面 ( C)在该窗体模块所有过程的后面 ( D)在某个标准模块中 10 下面能够将某个变量声明为局部变量的是
5、( A)在窗体模块的声明部分,用关键字 Static声明这个变量 ( B)在窗体模块的声明部分,用关键字 Dim声明这个变量 ( C)在需要使用这个变量的过程中,用关键字 Private声明这个变 量 ( D)在需要使用这个变量的过程中,用关键字 Public声明这个变量 11 工程文件中包含一个模块文件和一个窗体文件。模块文件的程序代码是: Public x As Integer Private y As Integer窗体文件的程序代码是: Dim a As Integer Private Sub Command1_Click() Private Su bForm Load() a=a+5
6、: b=b+5: x=x+5: Y=y+5 Dim b As Integer Print a; b; x; y a=2: b=3: x=10: y=20 End Sub End Sub 运行程序,单击窗体上的命令按钮,则在窗体上显示的是 ( A) 5 5 15 5 ( B) 7 5 15 25 ( C) 7 8 15 5 ( D) 7 5 15 5 12 设窗体上有一个 Command1命令按钮,还有以下程序代码: Private Sub Command1_Click() Private Sub proc(a As Integer) Static x As Integer Static x A
7、s 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 13 可以产生 30 50(含 30和 50)之间的随机整数的表达式是 ( A) Int(Rnd*21+30) ( B) Int(Rnd*20+30) ( C) Int(Rnd*50-Rnd*30) ( D) Int(Rnd*30+50) 14 Print Right(“VB Programming“, 2)语句的输出结果是 ( A
8、) VB ( B) Programming ( C) ng ( D) 2 15 语句: Print Int(Rnd*5+20)的输出不可能是 ( A) 20 ( B) 22 ( C) 24 ( D) 25 16 假定有以下函数过程: Function Fun(S As String)As String Dim s1 As String For i=1 To Len(S) sl=LCase(Mid(S, i, 1)+s1 Next i Fun=s1 End Function 在窗 体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim Str
9、1 As String, Str2 As String Str1=InputBox(“请输入一个字符串 “): Str2=Fun(Str1) Print Str2 End Sub 程序运行后,单击命令按钮,如果在输入对话框中输入字符串 “abcdefg”,则单击“确定 ” 按钮后在窗体上的输出结果为 ( A) ABCDEFG ( B) abcdefg ( C) GFEDCBA ( D) gfedcba 17 窗体上有两个名称分别为 Text1、 Text2的文本框。 Text1的 KeyUp事件过程如下: Private Sub Text1 _KeyUp(KeyCode As Integer,
10、 Shift As Integer) Dim CAs String C=UCase(Chr(KeyCode): tText2 Text=Chr(Asc(c)+2) End Sub 当向文本框 Text1中输入小写字母 a时,文本框 Text2中显示的是 ( A) A ( B) a ( C) C ( D) c 18 在窗体上画一个文本框,名称 为 Text1,然后编写如下程序: Private Sub Form_Load() Private Sub Form_Click() Text1 Text=“: Text1 SetFocus Dim a As String, s As String End
11、 Sub a=Text1 Text: s=“ For k=1 To Len(a) s=UCase(Mid(a, k, 1)+s Next k Text1 Text=s End Sub 程序运行后,在文本框中输入一个字符串,然后单击窗体,则文本框中的内容 ( A)与原字符串相同 ( B)与原字符串中字符顺序相同,但所有字母均转换为大写 ( C)为原字符串的逆序字符串,且所有字母转换为大写 ( D)为原字符串的逆序字符串 19 窗体上有一个名称为 Text1的文本框,一个名称为 Command1的命令按钮。窗体文件的程序如下: Private Type x a As Integer: b As I
12、nteger End Type Private Sub Command1_Click() Dim y As x y a=InputBox(“) If y a 2=y a 2Then y b=y a*y a Else y b: Fix(y a 2) End If Text1 Text=y b End Sub 对以上程序,下列叙述中错误的是 ( A) x是用户定义的类型 ( B) InputBox函数弹出的对话框中没有提示信息 ( C)若输入的是偶数, y b的值为该偶数的平方 ( D) Fix(y a 2)把 y a 2的小数部分四舍五入,转换为整数返回 20 设有如下程序: Private S
13、ub Form_Click() num=inputBox(“请输入一个实数 “): p=InStr(num, “ “) If p 0 Then Print Mid(num, p+1) Else Print“END“ End If End Sub 运行程序,单击窗体,根据提示输入一个数值。如果输入的不是实数,则程序输出“END”;否则 ( A)用字符方式输出该实数 ( B)输出该实数的整数部分 ( C)输出该实数的小数部分 ( D)去掉实数中的小数点,保留所有数码输出 21 窗体上有一个名称为 Command1的命令按钮,单击该按钮时所实现的功能是产生 10个随机整数,然后从键盘输入一个整数,查
14、找该数在 数组中的位置。若找到,输出该数的位置;若没有找到,给出相应的提示。该命令按钮的单击事件过程如下: Private Sub Command1_Click() Dim a(10)As Integer, x As Integer For i=1 To 10 a(i)=Int(Rnd*100) Next x=InputBox(“输入 100以内的整数: “) p=0 For i=1 To 10 If a(i)=x Then p=i: Exit For End If Next If p=0 Then Print“没有找到与输 入数据相同的数 !“ Else Print Str(x)+“在数组中
15、的位置是 “+sir(p) End If End Sub 对于上述事件过程,以下叙述中正确的是 ( A)本程序实际产生的随机数是 0-99 ( B)若产生的随机数中有相同数,则 p是其中最后一个数的位置 ( C)程序有错, p的初值设置不对 ( D)程序有错, InputBox函数产生的数据与 x的类型不匹配 22 以下关系表达式中,其值为 True的是 ( A) XYZ “XYz“ ( B) VisualBasic “visualbasic“ ( C) the=“there“ ( D) Integer “Int“ 23 设 a=10, b=5, c=1,执行语句 Print a b c窗体上
16、显示的是 ( A) True ( B) False ( C) 1 ( D)出错 24 设 a=2, b=3, c=4, d=5,表达式 Not a =c Or 4*c: b 2 And b a+c的值是 ( A) -1 ( B) 1 ( C) True ( D) False 25 设: a=2, b=8, c=6, d=3,表达式 a b And Not(c d)Or d c的值是 ( A) 1 ( B) 0 ( C) True ( D) False 26 设变量 x中的值是 395,则下面语句的输出是 Print x 100+(x Mod 100) 10)*10+(x Mod 10)*100
17、 ( A) 935 ( B) 395 ( C) 539 ( D) 593 27 下列运算符中,优先级别最高的是 ( A) Not ( B) Is ( C) & ( D) And 28 下列有语法错误的赋值语句是 ( A) y=7=9 ( B) s=m+n ( C) Text1 Text=10 ( D) m+n=12 国家二级 VB机 试(数据类型及运算)模拟试卷 6答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 在标准模块中可以声明自定义类型,该类型由 Type关键字声明,在声明中要定义类型的所有域。若用自定义类型声明一个变量,则该变量拥有若干域,取得每个域的值需要用 “变量名域名
18、 ”的形式。作为一个自定义类型的数组,首先要取出某个数组元素然后才能访问该元素的某个域,所以要想访问 arr(2)的域,需要使用 arr(2) Code和 arr(2) Caption。 【知识模块】 数据类型及运算 2 【正确答案】 B 【试题解析】 Type语句用于在模块级别中定义一个用户自己的数据类型,其本质上是一个数据类型集合,它含有一个或一个以上的元素,每个元素可以被定义为不同的数据类型。自定义类型中的元素可以是变长字符串,也可以是定长字符串。但在随机文件中使用时,必须使用定长字符串,一般格式为: String*常数。其中, “常数 ”是用于指定字符串长度的数。 【知识模块】 数据类
19、型及运算 3 【正确答案】 C 【试题解析】 在 visual Basic中规定一个变量的数据类型可以用类型说明符来标识,如表示整型、 $表示字符串型、 !表示单精度浮点型、 #表示双精度浮点型、&表示长整型。 【知识模块】 数据类型及运算 4 【正确答案】 B 【试题解析】 本题考查的考点是有关 visual BaSic中的变量命名规则的。 Visual Basic中给变量命名只能由字母、数字和下划线组成,并且第一个字符必须是英文字母。 【知识模块】 数据类型及运算 5 【正确答案】 B 【试题解析】 在标准模 块中用 Public关键字定义的变量叫做全局变量,也称为全程变量,在标准模块的声
20、明部分声明。全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 6 【正确答案】 C 【试题解析】 变量是用一个名称来表示的,给变量命名时应遵循规则:名称只能由字母、数字和下划线组成;名称的第一个字符必须是英文字母,最后一个字符可以是类型说明符;名称的有效字符为 255个;不能用 VB的保留字作变量名,但变量名中可以包含保留字,如 ConstA;变量名也不能是末尾带有类型说明符的保留字,如 Dim!是不合法的变量名:不区分字母的大小写。 【知识模块】 数据类型及运算 7 【正确答案】 A 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以
21、下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域为该变量所在的过程,定义时使用 Dim、 Static关键字; 模块 (Module)变量:模块变量包括窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗体内的所有过程,其作用域为该变量所在的窗体;标准模块变量是在标准模块中定义的变量 ,变量的声明和使用与窗体模块中窗体变量类似。区别是标准模块是只含有程序代码的应用程序文件,其扩展名为 bas 全局 (Public)变量:全局变量也称为全程变量,在标准模块的声明部分声明。全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】
22、数据类型及运算 8 【正确答案】 C 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域为该变量所在的过程,定义时使用 Dim、 Static关键字; 模块 (Module)变量:模块变量包括窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗体内的所有过程,其作用域为该变量所在的窗体;标准模块变量是在标准模块中定义的变量,变量的声明和使用与窗体模块中窗体变量类似。 区别是标准模块是只含有程序代码的应用程序文件,其扩展名为 bas; 全局 (Public)变量:全局变量也称为全程变
23、量,在标准模块的声明部分声明。全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 9 【正确答案】 B 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域:该变量所在的过程,定义时使用 Dim、 Static关键字: 模块 (Module)变量:模块变量包括窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗体内的所有过程,其作用域为该变量所在的窗体:标准模块变量是在标准模块中定义的变量,变量的声明和使用与窗体模块中窗体变量类似。 区别是标准
24、模块是只含有程序代码的应用程序文件,其扩展名为 bas: 全局 (Public)变量:全局变量也称为全程变量,在标准模块的声明部分声明。全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 10 【正确答案】 C 【试题解析】 根据变量的定义位置和定义关键字的不同,变量可以分为以下 3种类型: 局部 (Local)变量:在过程 (事件过程或通用过程 )内定义的变量,其作用域:该变量所在的过程,定义时使用 Dim、 Static关键字; 模块 (Module)变量:模块变量包括窗体变量和标准模块变量 2种。其中,窗体变量可用于该窗 体内的所有过程,其作用域为
25、该变量所在的窗体;标准模块变量是在标准模块中定义的变量,变量的声明和使用与窗体模块中窗体变量类似。 区别是标准模块是只含有程序代码的应用程序文件,其扩展名为 bas; 全局 (Public)变量:全局变量也称为全程变量,在标准模块的声明部分声明。全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。 【知识模块】 数据类型及运算 11 【正确答案】 D 【试题解析】 本题中在模块文件中声明的 x是全局变量, y是模块变量;在窗体中声明的 a是模块级变量;在窗体的 Load事件中声明了局部变量 b,而且隐式声明了局部变量 y;在按钮的 Click事件中使用到的 a是模块级变量,其值为 2;
26、 b是隐式声明的局部变量,其初值为 0; x是全局变量,其值为 10; y也是隐式声明的局部变量,其初值为 5。 【知识模块】 数据类型及运算 12 【正确答案】 C 【试题解析】 本题在 Command1 click过程中和 Sub过程 proc中分别定义了一个静态变量 x,这两个 x都是局部变量,隶属于不同的局部,互不干涉;当单击命令按钮时,单击事件中的 x加 1,然后调用 proc过程:由于 proc的形 参 a采用地址传递,因此对 a的改变会影响实参 x。三次单击按钮分别使得两个过程中的 x分别交化,都会保留上一次过程结束时的值。 【知识模块】 数据类型及运算 13 【正确答案】 A
27、【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0的随机数。为了生成某个指定范围内的随机整数,可使用以下公式: Int(upperbound-lowerbound+1)*Rnd+lowerbound),其中 upperbo岫 d是随机整数范围的上限, lowerbound是随机整数范围的下限。本题中 upperbound为 50,lowerbound为 30。 【知识模块】 数据类型及运算 14 【正确答案】 C 【试题解析】 Right()函数用于取出已有字符串最右边指定个数的字符串,本题中取出的是最后两位字符。 【知识模块】 数据类型及运算 15 【正确答案】 D
28、 【试题解析】 随机数函数 Rnd用于产生一个小于 1但大于或等于 0的随机数值, Int函数会返回不大于参数的最大整数值。由于 Rnd函数的值不能到达 1,所以整个表达式也不可能到达 25。 【知识模块】 数据类型及运算 16 【正确答案】 D 【试题解析】 本题考查的考点是有关取子串函数的。本题也比较简单,循环次数就是字符串的长度,每次都在第 i位取一个字母转换成小写,最后倒序连接起来,注意每次都把新取得的字符连接到 s1的前面,所以为倒序连接。 【知识模块】 数据类型及运算 17 【正确答案】 C 【试题解析】 本题考查的考点是有关字符转换函数的。 UCase函数的功能为强制转成大写字母
29、; Chr函数的功能是把整数按照 ASCII码转换成字母; Asc函数的功能是把字母转换成对应的 ASCII码。本题中变量 c的值是大写字母 “A”,最终结果是大写字母 “C”。 【知识模块】 数据类型及运算 18 【正确答案】 C 【试题解析】 Mid(字符串,起始位置 ,个数 )函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串 UCase()函数用于将字符串小写字母转化为大写字母,原本大写或非字母字符保持不变。本题中在循环内每次取出第 k位个字符并且连接到结果字符串的前面,所以结果字符串是源字符串的逆序字符串。 【知识模块】 数据类型及运算 19 【正确答案】 D 【试题解
30、析】 本题考查 的考点是有关自定义类型和 Fix函数的。用户可以通过Type语句自定义类型,并可用自定义的类型声明变最。注意 Fix函数是向下取整, Round函数是四舍五入。 【知识模块】 数据类型及运算 20 【正确答案】 C 【试题解析】 字符串匹配函数 lnstr用于查找第二个参数在第一个参数中第一次出现的位置,若未找到返回 0: Mid(字符串,起始位置 ,个数 )函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串,若不指定个数将返回字符串中从参数 “起始位置 ”到字符串尾端的所有字符。本题实际就是 先找到小数点的位置,然后输出小数点后面的部分,即小数部分。 【知识模块
31、】 数据类型及运算 21 【正确答案】 A 【试题解析】 随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0的随机数。为了生成某个指定范围内的随机整数,可使用以下公式:IntI(upperbound-lowerbound+1)*Rnd+lowerbound),其中 upperbound是随机整数范围的一卜限, lowerbound是随机整数范围的下限。本题中 upperbound为99, lowerbound为 0。 【 知识模块】 数据类型及运算 22 【正确答案】 B 【试题解析】 本题考查的考点是有关字符串比较的。在 VB中可以采用简单的逻辑运算符进行两个字符串的比较,即 (
32、小于 )、 =(小于或等于 )、 (大于 )、=(大于或等于 )、 =(等于 )、 (不等于 )。在进行比较的时候,将会首先比较字符串第位的 ASCII码,若相同则比较第二位 以此类推。 【知识模块】 数据类型及运算 23 【正确答案】 B 【试题解析】 VB中的逻辑值 True和 False在参与关系运算时会自动进行类型转换,其中 True转换为 -1, False转换为 0。本题中先计算 a b(10 5为真 )结果为True,此时系统自动转换其值为 -1,然后计算 -1 c(-1 1为假 ),结果为 False。 【知识模块】 数据类型及运算 24 【正确答案】 D 【试题解析】 在一个
33、包含多种运算的表达式中,优先级顺序为:首先进行函数运算,接着进行算术运算,然后进行关系运算 (=、 =、 =、 ),最后进行逻辑运算 (NotAndOrXorEqvImp) 。按优先级顺序本题逐步运算结果为: Not a =c Or4*c=b2And b a+cNot2 =4Or16=9And3 6Not True Or False And TrueFalse Or False And TrueFalse Or FalseFalse 。 【知识模块】 数据类型及运算 25 【正确答案】 D 【试题解析】 在一个包含多种运算的表达式中,优先级顺序为:首先进行函数运算,接着进行算术运算,然后进行关
34、系运算 (=、 =、 =、 ),最后进行逻辑运算 (NotAndOrxorEqvImp) 。按此规则本题简化为 False And Not True Or False,最终结果为 False。 【知识模块】 数据类型及运算 26 【正确答案】 D 【试题解析】 本题中使用了两种运算:整除运算 “ ”和求余运算 “Mod”。最终输出的是 3+90+500=593。 【知识模块】 数据类型及运算 27 【正确答案】 C 【试题解析】 在一个包含多种运算的表达式中,优先级顺序为:首先进行函数运算,接着进行算术运算和字符串连接运算,然后进行关系运算 (=、 =、 =、 ),最后进行逻辑运算 (NotAndOrXorEqvImp) 。 【知识模块】 数据类型及运算 28 【正确答案】 D 【试题解析】 赋值语句可以把指定的值赋给一个变量或一个对象的某个属性,其格式为 Let目标操作符 =源操作符。 格式中的 “源操作符 ”可以是变量、表达式、常量、对象属性以及它们的组合,但目标操作符必须是单个的变量或者属性。 【知识模块】 数据类型及运算