1、国家二级 VB 机试(数据类型及运算)模拟试卷 26 及答案解析(总分:66.00,做题时间:90 分钟)一、选择题(总题数:33,分数:66.00)1.设 x=4,y=6,则以下不能在窗体上显示出“A=10”的语句是(分数:2.00)A.Print A=x+yB.Print”A=”;x+yC.Print”A=”=Str(x+y)D.Print”A=”x+y2.下列表达式中不能判断 x 的是否为偶数的是(分数:2.00)A.x2=Int(x2)B.x Mod 2=0C.Fix(x2)=x2D.x2=03.如设置了文本框的属性 PasswordChar=”$”,则运行程序时向文本框中输入 8 个
2、任意字符后,文本框中显示的是(分数:2.00)A.8 个“$”B.1 个“$”C.8 个“*”D.无任何内容4.为了计算 1+3+5+99 的值,某人编程如下: k=1:s=0 while k99C.循环前的赋值语句 k=1 错误,应改为 k=0D.循环中两条赋值语句的顺序错误,应改为 s=s+k:k=k+25.如果执行一个语句后弹出如图所示的窗口,则这个语句是 (分数:2.00)A.InputBox(”输入框”,”请输入 VB 数据”)B.x=InputBox(”输入框”,”请输入 VB 数据”)C.InputBox(”请输入 VB 数据”,”输入框”)D.x=InputBox(”请输入 V
3、B 数据”,”输入框”)6.下列可以打开随机文件的语句是(分数:2.00)A.Open”file1dat”For Input As#1B.Open”file1dat”For Append As#1C.Open”file1dat”For Output As#1D.Open”file1dat”For Random As#1 len=207.下面可以产生 2030(含 20 和 30)的随机整数的表达式是(分数:2.00)A.Int(Rnd*10+20)B.Int(Rnd*11+20)C.Int(Rnd*20+30)D.Int(Rnd*30+20)8.假定用下面的语句打开文件: Open”File1
4、txt”For Input As1 则不能正确读文件的语句是(分数:2.00)A.Input #1,ch$B.Line Input#1ch$C.ch$=Input$(5,#1)D.Read#1,ch$9.设 x 是小于 10 的非负数。对此陈述,以下正确的 VB 表达式是(分数:2.00)A.00 and x0 or x0 Then Print Mid(num,P+1) Else Print“END” End If End Sub 运行程序,单击窗体,根据提示输入一个数值。如果输入的不是实数,则程序输出“END”: 否则(分数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分C.输出
5、该实数的小数部分D.去掉实数中的小数点,保留所有数码输出15.在窗体上画一个文本框,名称为 Text1,然后编写如下程序:Pfivate Sub Form_Load() Text1Text=”:Text1SetFocusEnd Sub Private Sub Form Click() Dim aAs String,sAs String a=Text1Text:s=“” For k=1 To Len(a) s=UCase(Mid(a,k,1)+s Next k Text1.Text=sEnd Sub 程序运行后,在文本框中输入一个字符串,然后单击窗体,则文本框中的内容(分数:2.00)A.与原字
6、符串相同B.与原字符串中字符顺序相同,但所有字母均转换为大写C.为原字符串的逆序字符串,且所有字母转换为大写D.为原字符串的逆序字符串16.在窗体上画一个命令按钮,然后编写如下事件过程: Pfive Sub Command1_Click() a$=InputBox(”请输入一个二进制数”) n=Len(a$) Dec=Dec*2+_(a$,i,1) Next i Print DecEnd Sub 程序功能为:单击命令按钮,将产生一个输入对话框,此时如果在对话框中输入一个二进制数,并单击“确定”按钮,则把该二进制数转换为等值的十进制数。这个程序不完整,应在横线处填入的内容是(分数:2.00)A.
7、LeftB.RightC.ValD.Mid17.以下程序的功能是随机产生 10 个两位的整数: Option Base 1 Pfive Sub Commandl_Click() Dim a(10)As Integer,i As Integer For i=1 To 10 a(i)=Int(Rnd*100)+1 Print a(i) 运行以上程序,发现有错误,需要对产生随机数的语句进行修改。以下正确的修改是(分数: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)18.窗体上
8、有一个名称为 command1 的命令按钮,单击该按钮时所实现的功能是产生 10 个随机整数,然后从键盘输入一个整数,查找该数在数组中的位置。若找到,输出该数的位置;若没有找到,给出相应的提示。该命令按钮的单击事件过程如下: Private Sub Commandl_Click() Dim a(10)As Integer,x As Integer a(i)=Int(Rnd*100) x=InputBox(”输入 100 以内的整数:”) P=0 For i=1 To 10 Ifa(i)=x Then P=i:Exit For End If Next Ifp=0 Then Print”没有找到与
9、输入数据相同的数!” Else Print str(x)+”在数组中的位置是”+Str(p) End If End Sub 对于上述事件过程,以下叙述中正确的是(分数:2.00)A.本程序实际产生的随机数是 099B.若产生的随机数中有相同数,则 P 是其中最后一个数的位置C.程序有错,P 的初值设置不对D.程序有错,InputBox 函数产生的数据与 x 的类型不匹配19.在 Visual Basic 中,表达式 3*25 Mod 3 的值是(分数:2.00)A.1B.0C.3D.出现错误提示20.表达式 2*32+4*22+32 的值是(分数:2.00)A.30B.31C.49D.4821
10、.设 a=4,b=5,c=6,执行语句 Print aA.TrueB.FalseC.出错信息D.022.以下关系表达式中,其值为 True 的是(分数:2.00)A.”XYZ”XYz”B.”VisualBasic”bc 窗体上显示的是(分数:2.00)A.TrueB.FalseC.1D.出错27.要求如果 x 被 7 除余 2,则输出 x 的值,下列语句中不能实现此功能的语句是(分数:2.00)A.Ifx mod 7=2 Then PrintxB.Ifx-(x7)*7=2 Then Print xC.Ifx 一(x7)*7=2 Then Print xD.IfxInt(x7)*7=2 Then
11、 Print x28.满足下列条件之一的年份是闰年:1)年份能被 4 整除但不能被 100 整除 2)年份能被 400 整除若 y 代表年份,下面判断闰年的正确表达式是(分数:2.00)A.y Mod 4 And y Mod 100 Or y Mod 400B.y Mod 4=0 Or y Mod 1000 And(y Mod 4=0 Or y Mod 400=0)D.y Mod 4=0 And y Mod 1000 Or y Mod 400=029.已知 a=6,b=15,c=23,则语句 Print Sgn(a+bMod 6-ca)&a+b 的输出结果为(分数:2.00)A.6B.16C.
12、31D.12130.设 a=2,b=3,c=4,d=5, 表达式 Not a99C.循环前的赋值语句 k=1 错误,应改为 k=0D.循环中两条赋值语句的顺序错误,应改为 s=s+k:k=k+2 解析:解析:本题考查循环。选项 A)While Wend 循环同样可以完成累加计算;选项 B)错误,改成 Whilc k99 循环一次也不执行;选项 C),叟量 k 表示数列元素,初值为 1 表示数列第一项,是正确的;选项 D)正确,如果 k=k+2 放在前面,那么计算的数列第一项是 3,而不是 1。5.如果执行一个语句后弹出如图所示的窗口,则这个语句是 (分数:2.00)A.InputBox(”输入
13、框”,”请输入 VB 数据”)B.x=InputBox(”输入框”,”请输入 VB 数据”)C.InputBox(”请输入 VB 数据”,”输入框”)D.x=InputBox(”请输入 VB 数据”,”输入框”) 解析:解析:本题考查 InputBox 的使用,语法是:InputBox(prompt,title,default,xpos,ypos)其中的 prompt 为窗口的提示,title 为输入窗口的标题,default 为输入窗口的默认内容,xpos,ypos为窗口距离屏幕左边,上边的距离。在本题中,第一个参数 prompt 为“请输入 VB 数据”,标题为“输入框”。6.下列可以打开
14、随机文件的语句是(分数:2.00)A.Open”file1dat”For Input As#1B.Open”file1dat”For Append As#1C.Open”file1dat”For Output As#1D.Open”file1dat”For Random As#1 len=20 解析:解析:本题考查文件操作,VB 中打开随机文件的语法为: Open文件名For Random As#文件号Len=记录长度 其中 For Random 表示打开随机文件,Len 用来指定记录的长度,记录长度的缺省值为 128 个字节。7.下面可以产生 2030(含 20 和 30)的随机整数的表达式
15、是(分数:2.00)A.Int(Rnd*10+20)B.Int(Rnd*11+20) C.Int(Rnd*20+30)D.Int(Rnd*30+20)解析:解析:本题考查常用函数。如果产生一个 m 到 n 之间的随机数(nm,包含 n 和 m)表达式可为:r=Int(Rnd*(nm+1)+m)8.假定用下面的语句打开文件: Open”File1txt”For Input As1 则不能正确读文件的语句是(分数:2.00)A.Input #1,ch$B.Line Input#1ch$C.ch$=Input$(5,#1)D.Read#1,ch$ 解析:解析:本题考查文件操作,读文件使用 Line
16、Input、Input#,(以上为文本方式)和 Get(以上为二进制方式)。Open“Fileltxt”For Input As#1 是以输入方式打开 File1txt 文本文件,因此可以使用 Line Input 和 Input 方法读文件,选项 D)错误。9.设 x 是小于 10 的非负数。对此陈述,以下正确的 VB 表达式是(分数:2.00)A.00 and x0 or x0 和 x0 Then Print Mid(num,P+1) Else Print“END” End If End Sub 运行程序,单击窗体,根据提示输入一个数值。如果输入的不是实数,则程序输出“END”: 否则(分
17、数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分C.输出该实数的小数部分 D.去掉实数中的小数点,保留所有数码输出解析:解析:字符串匹配函数 Instr 用于查找第二个参数在第一个参数中第一次出现的位置,若未找到返回 0;Mid(字符串,起始位置,个数)函数用于从己有字符串中取出从指定位置开始的含指定个数字符的字符串,若不指定个数将返回字符串中从参数“起始位置“到字符串尾端的所有字符。本题实际就是先找到小数点的位置,然后输出小数点后面的部分,即小数部分。15.在窗体上画一个文本框,名称为 Text1,然后编写如下程序:Pfivate Sub Form_Load() Text1Te
18、xt=”:Text1SetFocusEnd Sub Private Sub Form Click() Dim aAs String,sAs String a=Text1Text:s=“” For k=1 To Len(a) s=UCase(Mid(a,k,1)+s Next k Text1.Text=sEnd Sub 程序运行后,在文本框中输入一个字符串,然后单击窗体,则文本框中的内容(分数:2.00)A.与原字符串相同B.与原字符串中字符顺序相同,但所有字母均转换为大写C.为原字符串的逆序字符串,且所有字母转换为大写 D.为原字符串的逆序字符串解析:解析:Mid(字符串,起始位置,个数)函数
19、用于从己有字符串中取出从指定位置开始的含指定个数字符的字符串,UCase()函数用于将字符串中小写字母转化为大写字母,原本大写或非字母字符保持不变。本题中在循环内每次取出第 k 位个字符并且连接到结果字符串的前面,所以结果字符串是源字符串的逆序字符串。16.在窗体上画一个命令按钮,然后编写如下事件过程: Pfive Sub Command1_Click() a$=InputBox(”请输入一个二进制数”) n=Len(a$) Dec=Dec*2+_(a$,i,1) Next i Print DecEnd Sub 程序功能为:单击命令按钮,将产生一个输入对话框,此时如果在对话框中输入一个二进制数
20、,并单击“确定”按钮,则把该二进制数转换为等值的十进制数。这个程序不完整,应在横线处填入的内容是(分数:2.00)A.LeftB.RightC.ValD.Mid 解析:解析:Mid(字符串,起始位置,个数)函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串。本题中要将二进制数转换为十进制数,应该取出二进制数的每一位然后乘以位权。17.以下程序的功能是随机产生 10 个两位的整数: Option Base 1 Pfive Sub Commandl_Click() Dim a(10)As Integer,i As Integer For i=1 To 10 a(i)=Int(Rnd*
21、100)+1 Print a(i) 运行以上程序,发现有错误,需要对产生随机数的语句进行修改。以下正确的修改是(分数: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(upperbound-lowerbound+1)*Rnd+lowerbound),其中upperbound 是随机整数范围的上限,lowerbound,随机整数
22、范围的下限。本题中 upperbound 为99,lowcrbound 为 10。18.窗体上有一个名称为 command1 的命令按钮,单击该按钮时所实现的功能是产生 10 个随机整数,然后从键盘输入一个整数,查找该数在数组中的位置。若找到,输出该数的位置;若没有找到,给出相应的提示。该命令按钮的单击事件过程如下: Private Sub Commandl_Click() Dim a(10)As Integer,x As Integer a(i)=Int(Rnd*100) x=InputBox(”输入 100 以内的整数:”) P=0 For i=1 To 10 Ifa(i)=x Then
23、P=i:Exit For End If Next Ifp=0 Then Print”没有找到与输入数据相同的数!” Else Print str(x)+”在数组中的位置是”+Str(p) End If End Sub 对于上述事件过程,以下叙述中正确的是(分数:2.00)A.本程序实际产生的随机数是 099 B.若产生的随机数中有相同数,则 P 是其中最后一个数的位置C.程序有错,P 的初值设置不对D.程序有错,InputBox 函数产生的数据与 x 的类型不匹配解析:解析:随机数函数 Rnd 的功能是用于产生一个小于 1 但大于或等于 0 的随机数。为了生成某个指定范围内的随机整数,可使用以
24、下公式:Int(upperbound-lowerbound+1)*Rnd+lowerbound),其中upperbound 是随机整数范围的上限,lowerbound 是随机整数范围的下限。本题中 upperbound 为99,lowerbound 为 0。19.在 Visual Basic 中,表达式 3*25 Mod 3 的值是(分数:2.00)A.1 B.0C.3D.出现错误提示解析:解析:本题考查的考点是有关算术运算的。按照运算符的优先级,首先执行 3*2 得到 6,然后用 6整除 5 得到 1,最后用 1 对 3 求余数得到最终结果 1。本题要注意“”为整除运算符,以及 Mod 取余
25、运算的算法。20.表达式 2*32+4*22+32 的值是(分数:2.00)A.30B.31 C.49D.48解析:解析:本题考查的考点是有关算术运算的。按照运算符的优先级,首先执行 32 得到 9,然后用 2乘以 9 得到 18;然后计算 4*22=4;最后计算 32 得到 9,三者相加得到最后结果 31。21.设 a=4,b=5,c=6,执行语句 Print aA.True B.FalseC.出错信息D.0解析:解析:本题考查的考点是有关逻辑运算和关系运算的。逻辑运算就是两个逻辑型的量进行运算,逻辑运算符的优先级低于关系运算符,故本题先计算 And 两端的表达式结果,这两个表达式的结果都为
26、True,所以二者相与的结果也为 Tme。22.以下关系表达式中,其值为 True 的是(分数:2.00)A.”XYZ”XYz”B.”VisualBasic”=(大于或等于)、=(等于)、b And cc(分数:2.00)A.TrueB.False C.-1D.1解析:解析:一个表达式可能含有多种运算,计算机按一定的顺序对表达式求值。一般顺序如下:首先进行函数运算:接着进行算术运算,其次序为:幂()取负(-)乘、浮点除(*、)整除()取模(Mod)加、减(+、一)连接(&);然后进行关系运算(=、=、=);最后进行逻辑运算,顺序为:NotAndOrXorEqvImp。26.设 a=10,b=5
27、,c=1,执行语句 Print abc 窗体上显示的是(分数:2.00)A.TrueB.False C.1D.出错解析:解析:VB 中的逻辑值 True 和 False 在参与关系运算时会自动进行类型转换,其中 True 转换为-1,False 转换为 0。本题中先计算 ab(105 为真)结果为 True,此时系统自动转换其值为-1,然后计算-1c(一 11 为假),结果为 False。27.要求如果 x 被 7 除余 2,则输出 x 的值,下列语句中不能实现此功能的语句是(分数:2.00)A.Ifx mod 7=2 Then PrintxB.Ifx-(x7)*7=2 Then Print
28、xC.Ifx 一(x7)*7=2 Then Print x D.IfxInt(x7)*7=2 Then Print x解析:解析:整除运算符“”的功能是取两数相除结果的整数部分,取模运算符“MOD”的功能是取两数相除的余数部分,且前者的优先级高于后者。据此判断本题中的选项,只有 C 选项使用了“”普通算数除法运算符,而且没有对结果进行取整操作,是不能判断被 7 除余 2 的。28.满足下列条件之一的年份是闰年:1)年份能被 4 整除但不能被 100 整除 2)年份能被 400 整除若 y 代表年份,下面判断闰年的正确表达式是(分数:2.00)A.y Mod 4 And y Mod 100 Or
29、 y Mod 400B.y Mod 4=0 Or y Mod 1000 And(y Mod 4=0 Or y Mod 400=0)D.y Mod 4=0 And y Mod 1000 Or y Mod 400=0 解析:解析:逻辑运算的优先级低于关系运算,而且逻辑运算中优先级从高到低是 NotAndOr,据此判断 D 选项符合题意。29.已知 a=6,b=15,c=23,则语句 Print Sgn(a+bMod 6-ca)&a+b 的输出结果为(分数:2.00)A.6B.16C.31D.121 解析:解析:算术表达式的运算次序为:幂()取负(一)乘、浮点除(*、)整除()取模(Mod)加、减(
30、+、-)连接(&),Sgn 函数会返回参数的符号。本题中 Sgn(a+b Mod 6-ca)函数的参数经计算为正数,故此函数返回值为 1;&运算是字符串连接运算,其优先级低于算术运算,所以会先计算a+b=21,然后将 1 和 2 l 自动转换为字符串然后连接起来。30.设 a=2,b=3,c=4,d=5, 表达式 Not a、=、),最后进行逻辑运算(NotAndOrXorEqvInap)。按优先级顺序本题逐步运算结果为:Not aa+cNot 26Not True OrFalse And TrueFaise Or False And TrueFalse Or FalseFalse。31.下列
31、有语法错误的赋值语句是(分数:2.00)A.y=7=9B.s=m+nC.Text1Text=10D.m+n=12 解析:解析:赋值语句可以把指定的值赋给一个变量或一个对象的某个属性,其格式为Let目标操作符=源操作符。格式中的“源操作符”可以是变量、表达式、常量、对象属性以及它们的组合,但目标操作符必须是单个的变量或者属性。32.输入 VB 源程序时,若一个命令行中包含两个语句,则两个语句之间的分隔符应使用(分数:2.00)A.冒号(:) B.分号(;)C.下划线()D.连字符(-)解析:解析:Visual Basic 中的语句是执行具体操作的指令,通常一行输入一条语句。也可把多条语句放在一行,各语句间用冒号(:)隔开。还可通过续行符(续行符由一个空格加一个下划线组成“ ”)将一条语句分别放在多行。33.Visual Basic 源程序的续行符为(分数:2.00)A.冒号(:)B.分号(;)C.下划线() D.连字符(-)解析:解析:Visual Basic 中的语句是执行具体操作的指令,通常一行输入一条语句。也可把多条语句放在一行,各语句间用冒号(:)隔开。还可通过续行符(续行符由一个空格加一个下划线组成“ ”)将一条语句分别放在多行。