1、国家二级 VB机试(数据类型及运算)-试卷 1及答案解析(总分:76.00,做题时间:90 分钟)一、选择题(总题数:38,分数:76.00)1.若变量 a未事先定义而直接使用(例如:a=0),则变量 a的类型是(分数:2.00)A.IntegerB.StringC.BooleanD.Variant2.如下关于变体类型变量的叙述中,错误的是(分数:2.00)A.变体类型数组中只能存放同类型数据B.使用 Array初始化的数组变量,必须是 Variant类型C.没有声明而直接使用的变量其默认类型均是 VariantD.在同一程序中,变体类型的变量可以被多次赋以不同类型的数据3.以下自定义数据类型
2、的语句中,正确的是(分数:2.00)A.Type student ID As String*20 name As String*10 age As Integer End studentB.Type student ID As String*20 name As String*1 0 age As Integer End TypeC.Type student ID As String name As String age As Integer End studentD.Type ID As String*20 name As String*10 age As Integer End Type
3、student4.假定有如下的程序段:Dim intVarAs Integer intvar=True Print intVar 则输出结果是(分数:2.00)A.0B.-1C.TRUED.FALSE5.长整型常数的类型说明符为(分数:2.00)A.B.#C.&D.6.执行语句 Dim X,YAs Integer 后,(分数:2.00)A.X和 Y均被定义为整型变量B.X和 Y均被定义为变体类型变量C.X被定义为整型变量,Y 被定义为变体类型变量D.X被定义为变体类型变量,Y 被定义为整型变量7.在标准模块中用 Public关键字定义的变量,其作用域为(分数:2.00)A.本模块所有过程B.整
4、个工程C.所有窗体D.所有标准模块8.有数据定义语句:Dim X,YAs Integer 以上语句表明(分数:2.00)A.X、Y 均是整型变量B.X是整型变量,Y 是变体类型变量C.X是变体类型变量,Y 是整型变量D.X是整型变量,Y 是字符型变量9.以下合法的 VB变量名是(分数:2.00)A.xB.2yC.a#bD.x_1_x10.以下合法的 VB变量名是(分数:2.00)A.aB.yPrintC.a-bD.Type11.以下关于变量作用域的叙述中,错误的是(分数:2.00)A.在标准模块声明部分用 Public声明的变量的作用域为整个工程文件B.在标准模块声明部分用 Private声明
5、的变量的作用域为该标准模块C.在窗体的声明部分不能用 Private声明变量D.在过程中不能使用 Public声明变量12.下面变量定义中错误的是(分数:2.00)A.Public mod As IntegerB.Static bufC.Dim ch As String*10D.Dim a!(-5 To-1)13.在标准模块中,将 a定义为全局整型变量的语句是(分数:2.00)A.Static a As IntegerB.Dim a As IntegerC.Private a As IntegerD.Public a As Integer14.有如下过程代码: Sub var_dim() St
6、atic numa As Integer Dim numb As Integer numa=numa+2:numb=numb+1:print numa;numb End Sub 连续 3次调用 var_dim过程,第 3次调用时的输出是(分数:2.00)A.2 1B.2 3C.6 1D.6 315.工程文件中包含一个模块文件和一个窗体文件。模块文件的程序代码是:Public x As Integer Private y As Integer窗体文件的程序代码是: Dim a As Integer Private Sub Command 1 Click() Private Sub Form_Lo
7、ad1a=a+5: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 运行程序,单击窗体上的命令按钮,则在窗体上显示的是(分数:2.00)A.5 5 15 5B.7 5 15 25C.7 8 15 5D.7 5 15 516.在窗体上画一个命令按钮,然后编写如下程序: Sub inc(a As Integer)Private Sub Command 1_Click() Static x As Integer inc 2:inc 3:inc 4 x=x+a Print x; End
8、Sub End Sub 程序运行后,第一次单击命令按钮时的输出结果为(分数:2.00)A.2 3 4B.2 5 9C.1 1 14 18D.4 9 1617.以下不能输出“Program“的语句是(分数:2.00)A.Print Mid(“VBProgram“,3,7)B.Print Right(“VBProgram“,7)C.Print Mid(“VBProgram“,3)D.Print Left(“VBProgram“,7)18.能够产生 1到 50之间(含 1和 50)随机整数的表达式是(分数:2.00)A.Int(Rnd*5-1)B.Int(Rnd(50)+1)C.Int(Rnd*50
9、)D.Int(Rnd*50+1)19.Print Right(“VB Programming“,2)语句的输出结果是(分数:2.00)A.VBB.ProgrammingC.ngD.220.语句:Print Asc(ChrS(Mid$(“98765432“,4,2)的输出是(分数:2.00)A.65B.AC.8765D.W21.在窗体上画两个文本框,其名称分别为 Text1和 Text2,然后编写如下程序: Private Sub Form_Load() Text1Text:“:Text2Text=“:Text1SetFocus End Sub Private Sub Text 1_Change
10、() Text2Text=Mid(Text1Text,6) End Sub 程序运行后,如果在文本框 Text1中输入ChinaBeijing,则在文本框 Text2中显示的内容是(分数:2.00)A.ChinaBeijingB.ChinaC.BeijingD.ChinaB22.在窗体上画一个名称为 C0mmandl的命令按钮,然后编写如下事件过程: Private Sub Command 1_Click() c=1234 c 1=Trim(Str(c) For i=l To 4 Print Next End Sub 程序运行后,单击命令按钮,要求在窗体上显示内容: 1 12 123 1234
11、 则在横线处应填入的内容为(分数:2.00)A.Right(c1,i)B.Left(c1,i)C.Mid(c1,i,1)D.Mid(c1,i,i)23.窗体上有两个名称分别为 Text1、Text2 的文本框。Text1 的 KeyUp事件过程如下: Private Sub Text 1-KeyUp(KeyCode As Integer,Shift As Integer) Dim c As String c=UCase(Chr(KeyCode):Text2Text=Chr(Asc(c)+2) End Sub 当向文本框 Text1中输入小写字母 a时,文本框 Text2中显示的是(分数:2.0
12、0)A.AB.aC.CD.c24.设有如下程序: Private Sub Form_Click() num=InputBox(“请输入一个实数“):P=InStr(num,“) Ifp0 Then Print Mid(num,P+1) Else Print“END“ End If End Sub 运行程序单击窗体,根据提示输入一个数值。如果不是输入实数,则输出“END”;否则(分数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分C.输出该实数的小数部分D.去掉实数中小数点,保留所有数码输出25.以下程序的功能是随机产生 10个两位的整数: Option Base 1 Private
13、 Sub Command 1_Click() Dim a(10)As Integer,i As Integer Randomize For i=1 To 10 a(i)=Int(Rnd*100)+1:Print a(i) Next i End Sub 运行以上程序,发现有错误,需要对产生随机数的语句进行修改。以下正确的修改是(分数:2.00)A.a(i)=Int(Rnd*100)B.a(i)=Int(Rnd*90)+10C.a(i)=Int(Rnd*100)+10D.a(i)=Int(Rnd*101)26.窗体上有两个名称分别为 Text1、Text2 的文本框。Text1 的 KeyUp事件
14、过程如下: Private Sub Text 1_KeyUp(KeyCode As Integer,Shift As Integer) Dim C As String C=UCase(Chr(KeyCode):Text2Text=Chr(Asc(c)+2) End Sub 当向文本框 Text1中输入小写字母 a时,文本框 Text2中显示的是(分数:2.00)A.AB.aC.CD.c27.设有如下程序: Private Sub Form_Click() num=InputBox(“请输入一个实数“):P=InStr(num,“) If P0 Then Print Mid(num,P+11 E
15、lse Print “END“ 运行程序,单击窗体,根据提示输入一个数值。如果输入的不是实数,则程序输出“END”; 否则(分数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分C.输出该实数的小数部分D.去掉实数中的小数点,保留所有数码输出28.以下程序的功能是随机产生 10个两位的整数: Option Base 1 Private Sub Command 1_Click() Dim a(10)As Integer,i As Integer a(i)=Int(Rnd*100)+1 Print a(i) 运行以上程序,发现有错误,需要对产生随机数的语句进行修改。以下正确的修改是(分数
16、:2.00)A.a(i1=Int(Rnd*100)B.a(i)=Int(Rnd*90)+10C.a(i)=Int(Rnd*100)+10D.a(i)=Int(Rnd*101)29.表达式 2*32+4*22+32 的值是(分数:2.00)A.30B.31C.49D.4830.把数学表达式 2y-6表示为正确的 VB表达似乎应该是(分数:2.00)A.(5x+3)(2y-6)B.x*5+32*y-6C.(5*x+3)(2*y-6)D.(x*5+3)(y*2-6)31.设 a=10,b=5,c=1,执行语句 Print abc窗体上显示的是(分数:2.00)A.TrueB.FALSEC.1D.出错
17、32.已知 a=6,b=15,c=23,则语句 Print Sgn(a+b Mod 6-cA)&a+b 的输出结果为(分数:2.00)A.6B.1 6C.3 1D.12 133.设:a:12,b=5,c=7,表达式 x=(ac+a Mod b)+Int(135)的值是(分数:2.00)A.5B.6C.7D.934.数学式 y2x=10在 VB中应表示为(分数:2.00)A.Y*Yx And 10x And x=1 0C.Sqr(y1x Or xx Or x=1035.设变量 x中的值是 395,则下面语句的输出是 Print x100+(x Mod 100)10)*10+(x Mod 10)*
18、100(分数:2.00)A.935B.395C.539D.59336.能正确表述“x 为大于等于 5并且小于 20的数”的 Visual Basic表达式是(分数:2.00)A.x=5 And x=5 Or x0 Then Print Mid(num,P+1) Else Print“END“ End If End Sub 运行程序单击窗体,根据提示输入一个数值。如果不是输入实数,则输出“END”;否则(分数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分C.输出该实数的小数部分 D.去掉实数中小数点,保留所有数码输出解析:解析:字符串匹配函数 Instr用于查找第二个参数在第一个参
19、数中第一次出现的位置,若未找到返回 0;Mid(字符串,起始位置,个数)函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串,若不指定个数将返回字符串中从参数“起始位置”到字符串尾端的所有字符。本题实际就是先找到小数点的位置,然后输出小数点后面的部分,即小数部分。25.以下程序的功能是随机产生 10个两位的整数: Option Base 1 Private Sub Command 1_Click() Dim a(10)As Integer,i As Integer Randomize For i=1 To 10 a(i)=Int(Rnd*100)+1:Print a(i) Next
20、 i End Sub 运行以上程序,发现有错误,需要对产生随机数的语句进行修改。以下正确的修改是(分数:2.00)A.a(i)=Int(Rnd*100)B.a(i)=Int(Rnd*90)+10 C.a(i)=Int(Rnd*100)+10D.a(i)=Int(Rnd*101)解析:解析:随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0的随机数。为了生成某个指定范围内的随机整数,可使用公式:Int(upperboundlowerbound+1)*Rnd+lowerbound),其中 upperbotmd是随机整数范围的上限,lowerbound 是随机整数范围的下限。本题中 up
21、perbound为 99,lowerbound 为10。26.窗体上有两个名称分别为 Text1、Text2 的文本框。Text1 的 KeyUp事件过程如下: Private Sub Text 1_KeyUp(KeyCode As Integer,Shift As Integer) Dim C As String C=UCase(Chr(KeyCode):Text2Text=Chr(Asc(c)+2) End Sub 当向文本框 Text1中输入小写字母 a时,文本框 Text2中显示的是(分数:2.00)A.AB.aC.C D.c解析:解析:本题考查的考点是有关字符转换函数的。UCase
22、函数的功能为强制转成大写字母;Chr 函数的功能是把整数按照 ASCII码转换成字母;Asc 函数的功能是把字母转换成对应的 ASCII码。本题中变量c的值是大写字母“A”,最终结果是大写字母“C”。27.设有如下程序: Private Sub Form_Click() num=InputBox(“请输入一个实数“):P=InStr(num,“) If P0 Then Print Mid(num,P+11 Else Print “END“ 运行程序,单击窗体,根据提示输入一个数值。如果输入的不是实数,则程序输出“END”; 否则(分数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分
23、C.输出该实数的小数部分 D.去掉实数中的小数点,保留所有数码输出解析:解析:字符串匹配函数 Instr用于查找第二个参数在第一个参数中第一次出现的位置,若未找到返回 0;Mid(字符串,起始位置,个数)函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串,若不指定个数将返回字符串中从参数“起始位置”到字符串尾端的所有字符。本题实际就是先找到小数点的位置,然后输出小数点后面的部分,即小数部分。28.以下程序的功能是随机产生 10个两位的整数: Option Base 1 Private Sub Command 1_Click() Dim a(10)As Integer,i As I
24、nteger a(i)=Int(Rnd*100)+1 Print a(i) 运行以上程序,发现有错误,需要对产生随机数的语句进行修改。以下正确的修改是(分数:2.00)A.a(i1=Int(Rnd*100)B.a(i)=Int(Rnd*90)+10 C.a(i)=Int(Rnd*100)+10D.a(i)=Int(Rnd*101)解析:解析:随机数函数 Rnd的功能是用于产生一个小于 1但大于或等于 0的随机数。为了生成某个指定范围内的随机整数,可使用以下公式:Int(upperboundlowerbound+1)*Rnd+10werbound),其中upperboulld是随机整数范围的上限
25、,lowerbound,随机整数范围的下限。本题中 upperbound为99,lowerboulld 为 10。29.表达式 2*32+4*22+32 的值是(分数:2.00)A.30B.31 C.49D.48解析:解析:本题考查的考点是有关算术运算的。按照运算符的优先级,首先执行 32得到 9,然后用 2乘以 9得到 18;然后计算 4*22=4;最后计算 32得到 9,三者相加得到最后结果 31。30.把数学表达式 2y-6表示为正确的 VB表达似乎应该是(分数:2.00)A.(5x+3)(2y-6)B.x*5+32*y-6C.(5*x+3)(2*y-6)D.(x*5+3)(y*2-6)
26、 解析:解析:VB 中常用算术运算符有 8个,其中幂运算符()优先级最高:其次是取负(-)、乘(*、浮点除()、整除()、取模(Mod)、加(+)、减(-),要改变运算的优先级可使用圆括号。31.设 a=10,b=5,c=1,执行语句 Print abc窗体上显示的是(分数:2.00)A.TrueB.FALSE C.1D.出错解析:解析:VB 中的逻辑值 True和 False在参与关系运算时会自动进行类型转换,其中 True转换为-1,False 转换为 0。本题中先计算 ab(105为真)结果为 Tme,此时系统自动转换其值为-1,然后计算1c(-11 为假),结果为 False。32.已
27、知 a=6,b=15,c=23,则语句 Print Sgn(a+b Mod 6-cA)&a+b 的输出结果为(分数:2.00)A.6B.1 6C.3 1D.12 1 解析:解析:算术表达式的运算次序为:幂()取负(-)乘、浮点除(*、)整除()取模(Mod)加、减(+、-)连接(&),Sgn 函数会返回参数的符号。本题中 sgn(a+b Mod 6-cA)函数的参数经计算为正数,故此函数返回值为 1;&运算是字符串连接运算,其优先级低于算术运算,所以会先计算 a+b=21,然后将 1和 21自动转换为字符串然后连接起来。33.设:a:12,b=5,c=7,表达式 x=(ac+a Mod b)+
28、Int(135)的值是(分数:2.00)A.5 B.6C.7D.9解析:解析:在一个包含多种运算的表达式中,优先级顺序为:首先进行函数运算,接着进行算术运算,然后进行关系运算(=、=、),最后进行逻辑运算(NotAndOrxorEqvImp)。本题最后结果可以表达为(1+2)+2,结果为 5。34.数学式 y2x=10在 VB中应表示为(分数:2.00)A.Y*Yx And 10x And x=1 0C.Sqr(y1x Or xx Or x=10解析:解析:Sgn 函数为求平方根函数,为了表达 x既小于 y的平方又大于等于 10,两个表达式之间应该使用 And联接。35.设变量 x中的值是 3
29、95,则下面语句的输出是 Print x100+(x Mod 100)10)*10+(x Mod 10)*100(分数:2.00)A.935B.395C.539D.593 解析:解析:本题中使用了两种运算:整除运算“”和求余运算“Mod”, 最终输出的是3+90+500=593。36.能正确表述“x 为大于等于 5并且小于 20的数”的 Visual Basic表达式是(分数:2.00)A.x=5 And x=5 Or x20C.5=x20D.5=x=20解析:解析:逻辑运算也称布尔运算。用逻辑运算符连接的两个或多个关系式,组成一个布尔表达式。小题要表达的是两个表达式必须同时为真,故此使用 A
30、nd运算符。37.下面程序的执行结果是 Private Sub Command 1_Click() a=0 k=1 Do While kA.1 4 27B.1 11 C.1 49D.0 00解析:解析:本题是一个简单的 Do循环,共循环 3次,每次都输出 k k a;因为 a的值始终不变均为0,所以无论 k取何值,0 次幂的结果都为 1。38.输入 VB源程序时,若一个命令行中包含两个语句,则两个语句之间的分隔符应使用(分数:2.00)A.冒号(:) B.分号(;)C.下划线(_)D.连字符(-)解析:解析:Visual Basic 中的语句是执行具体操作的指令,通常一行输入一条语句。也可把多条语句放在一行,各语句问用冒号(:)隔开。还可通过续行符(续行符由一个空格加一个下划线组成“ ”)将一条语句分别放在多行。