1、国家二级 VB 机试(数据类型及运算)模拟试卷 25 及答案解析(总分:68.00,做题时间:90 分钟)一、选择题(总题数:34,分数:68.00)1.执行以下程序段 aS=”Visual Basic Programming”:b$=”C+”c$:UCase(LeR$(a$,7)&b$&RightS(aS,12) 变量 c$的值为(分数:2.00)A.Visual BASIC ProgrammingB.VISUAL C+ProgrammingC.Visual C+ProgrammingD.VISUAL BASIC Programming2.可以产生 3050(含 30 和 50)之间的随机整
2、数的表达式是(分数:2.00)A.Int(Rnd*21+30)B.Int(Rnd*20+30)C.Int(Rnd*50Rnd*30)D.Int(Rnd*30+50)3.能够产生 1 到 50 之间(含 1 和 50)随机整数的表达式是(分数:2.00)A.Int(Rnd*51)B.Int(Rnd(50)+1)C.Int(Rnd*50)D.Int(Rnd*50+1)4.表达式 Sgn(025)的值是(分数:2.00)A.1B.0C.1D.055.要计算 x 的平方根并放入变量 y,正确的语句是(分数:2.00)A.y=Exp(x)B.y=Sgn(x)C.y=Int(x)D.y=Sqr(x)6.P
3、rint Right(”VB Programming”,2)语句的输出结果是(分数:2.00)A.VBB.ProgrammingC.ngD.27.以下表达式与 Int(35)的值相同的是(分数:2.00)A.CInt(35)B.Val(35)C.Fix(35)D.Abs(35)8.以下能对正实数 d 的第 3 位小数四舍五入的表达式是(分数:2.00)A.001*Int(d+0005)B.001*Int(100*(d+0005)C.001*Int(100*(d+005)D.001*Int(d+005)9.语句:Print Asc(Chr$(Mid$(”98765432”,4,2)的输出是(分数
4、:2.00)A.65B.AC.8765D.W10.语句:Print Int(Rnd*5+20)的输出不可能是(分数:2.00)A.20B.22C.24D.2511.产生 100 以内(不含 100)2 位随机整数的 Visual Basic 表达式是(分数:2.00)A.Int(Rnd(1)*91)+10B.Int(Rnd(1)*90)+10C.Int(Rnd(1)*91)+11D.Int(Rnd(1)*90)+1112.在窗体上画两个文本框,其名称分别为 Text1 和 Text2,然后编写如下程序: Private Sub Form_Load() Text1Text=”:Text2Text
5、=“:Text1SetFocus End Sub Private Sub Text1_Change() Text2Text=Mid(Text1Text,6) End Sub 程序运行后,如果在文本框 Text1 中输入ChinaBeijing,则在文本框 Text2 中显示的内容是(分数:2.00)A.ChinaBeijingB.ChinaC.BeijingD.ChinaB13.设有如下通用过程: Public Function Fun(xStr As String)As String Dim tStr As StringstrL As Integer tStr=“ strL=Len(xStr
6、)i=1 Do While i=strL2 tStr=tStr&Mid(xStr,i,1)&Mid(xStr,strL-i+1,1) i=i+1 Loop Fun=tStr End Function 在窗体上画一个名称为 Command1 的命令按钮。然后编写如下的事件过程: Private Sub Commandl_Click() Dim S1 As String S1=”abcdef”:Print UCase(Fun(S1) End Sub 程序运行后,单击命令按钮,输出结果是(分数:2.00)A.ABCDEFB.abcdefC.AFBECDD.DEFABC14.假定有以下函数过程: Fu
7、nction 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 Str1 As StringStr2 As String Str1=InputBox(”请输入一个字符串”):Str2=Fun(Str1) Print Str2 End Sub 程序运行后,单击命令按钮,如果在输入对话框中输入字符串“abcdefg”
8、,则单击“确定”按钮后在窗体上的输出结果为(分数:2.00)A.ABCDEFGB.abcdefgC.GFEDCBAD.gfedcba15.在窗体上画一个名称为 Commandl 的命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() c=1234 c1=Trim(Str(c) For i=l To 4 Print_ Next End Sub 程序运行后,单击命令按钮,要求在窗体上显示内容:112 123 1234 则在横线处应填入的内容为(分数:2.00)A.Right(c1,i)B.Left(c1,i)C.Mid(c1,i,1)D.Mid(c1,i,i)
9、16.设有如下通用过程: Public Function Fun(xStr As String)As String Dim tStr As String,strL As Integer tStr=”:strL=Len(xStr) i=strL2 Do While i=strL tStr=tStr&Mid(xStr,i+1,1) i=i+1 Loop Fun=tStr&tStr End Function 在窗体上画一个名称为 Text1 的文本框和一个名称为Command1 的命令按钮。然后编写如下的事件过程: Private Sub Command1_Click() Dim S1 As Str
10、ing S1=”ABCDEF”:Text1.Text=LCase(Fun(S1) End Sub 程序运行后,单击命令按钮,文本框中显示的是(分数:2.00)A.ABCDEFB.abcdefC.defdefD.defabc17.窗体上有一个名称为 Text1 的文本框,一个名称为 Command1 的命令按钮。窗体文件的程序如下: Private Type x Private Sub Command l Click() a As Integer:b As Integer Dim Y As x End Type ya=InputBox(”) If ya2=ya2 Then yb=ya*ya El
11、se yb=Fix(ya2) End If Text1Text=yb End Sub 对以上程序,下列叙述中错误的是(分数:2.00)A.x 是用户定义的类型B.InputBox 函数弹出的对话框中没有提示信息C.若输入的是偶数,yb 的值为该偶数的平方D.Fix(ya2)把 ya2 的小数部分四舍五入,转换为整数返回18.窗体上有两个名称分别为 Text1、Text2 的文本框。Text1 的 KeyUp 事件过程如下: Private Sub Text1_KeyUp(KeyCode As Integer,Shift As Integer) Dim c As String c=UCase(C
12、hr(KeyCode):Text2Text=Chr(Asc(c)+2) End Sub 当向文本框 Text1 中输入小写字母 a 时,文本框 Text2 中显示的是(分数:2.00)A.AB.aC.CD.c19.窗体上有名称分别为 Text1、Text2 的文本框,名称为 Command1 的命令按钮。运行程序,在 Text1 中输入“FormList”,然后单击命令按钮,执行如下程序: Private Sub Command1_Click() Text2Text=UCase(Mid(Text1Text,5,4) End Sub 在 Text2 中显示的是(分数:2.00)A.formB.l
13、istC.FORMD.LIST20.窗体上有 1 个名称为 Command1 的命令按钮,事件过程如下: Private Sub Commandl_Click()m=一 3 6 If Sgn(m)Then n=Int(m) Else n=Abs(m) End If Print nEnd Sub 运行程序,并单击命令按钮,窗体上显示的内容为(分数:2.00)A.-4B.-3C.3D.3.621.设有如下程序: Private Sub Form_Click() aRm=InputBox(”请输入一个实数”):P=InStr(num,“.”)Ifp0 Then Print Mid(num,P+1)
14、Else Prim”END” End If End Sub 运行程序单击窗体,根据提示输入一个数值。如果不是输入实数,则输出“END”;否则(分数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分C.输出该实数的小数部分D.去掉实数中小数点,保留所有数码输出22.在窗体上画一个文本框,名称为 Text1,然后编写如下程序:Private Sub Form_Load() Text1Text=”:Text1SetFocusEnd SubPrivate Sub Form_Click() Dim a As String,S As String a=Text1Text:S=“ For k=1
15、To Len(a) S=UCase(Mid(a,k,1)+S Next k Text1Text=SEnd Sub 程序运行后,在文本框中输入一个字符串,然后单击窗体,则文本框中的内容(分数:2.00)A.与原字符串相同B.与原字符串中字符顺序相同,但所有字母均转换为大写C.为原字符串的逆序字符串,且所有字母转换为大写D.为原字符串的逆序字符串23.在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() aS=InputBox(”请输入一个二进制数”):n=Len(a$) For i=1 To n Dec=Dec*2+_(a$,i,1) Next
16、 i Print Dec End Sub 程序功能为:单击命令按钮,将产生一个输入对话框,此时如果在对话框中输入一个二进制数,并单击“确定”按钮,则把该二进制数转换为等值的十进制数。这个程序不完整,应在横线处填入的内容是(分数:2.00)A.LeftB.RightC.ValD.Mid24.以下程序的功能是随机产生 10 个两位的整数: Option Base 1 Private Sub Command1_Click() Dim a(10)As Integer,i As Integer Randomize For i=1 To 10 a(i)=Int(Rnd*100)+1:Print a(i)
17、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)25.窗体上有一个名称为 Command1 的命令按钮,单击该按钮时所实现的功能是产生 10 个随机整数,然后从键盘输入一个整数,查找该数在数组中的位置。若找到,输出该数的位置;若没有找到,给出相应的提示。该命令按钮的单击事件过程如下: Private Sub Command1_Click() Dim a(10)A
18、s 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 Ifa(i)=X Then P=i:Exit For End If Next Ifp=0 Then Print”没有找到与输入数据相同的数!” Else Print Str(x)+”在数组中的位置是”+Str(p) End If End Sub 对于上述事件过程,以下叙述中正确的是(分数:2.00)A.本程序实际产生的随机数是 099B.若产生的随机数中有相同数,则 P 是其中最后一个
19、数的位置C.程序有错,P 的初值设置不对D.程序有错,InputBox 函数产生的数据与 x 的类型不匹配26.表达式 5 Mod 3+35*2 的值是(分数:2.00)A.0B.2C.627.设有如下程序段: x=2 For i=1 T0 Step 2 x=x+i Next i 运行以上程序后,x 的值是(分数:2.00)A.26B.27C.38D.5728.设 a=“MicrosoflVisualbasic”,则以下使变量 b 的值为“Visualbasic”的语句是(分数:2.00)A.b=Left(a,10)B.b=Mid(a,10)C.b=Right(a,10)D.b=Mid(a,1
20、1,10)29.设 a=”a”,b=”b”,c=”c”,d=”d”,执行语句 x=IIf(ad),”A”,“B”) 后,X 的值为(分数:2.00)A.”a”B.”b”C.”A”D.”B”30.设有如下语句: Dim a,b As Integer c=“VisualBasic” d=#7202005# 以下关于这段代码的叙述中,错误的是(分数:2.00)A.a 被定义为 Integer 类型变量B.b 被定义为 Integer 类型变量C.C 中的数据是字符串D.d 中的数据是日期类型31.设:a=2,b=8,c=6,d=3,表达式 ab And Not(cd)Or dc 的值是(分数:2.0
21、0)A.1B.0C.TrueD.FALSE32.数学式 y 2 x=10 在 VB 中应表示为(分数:2.00)A.y*yx And 10=xB.Sqr(y)x And x=10C.Sqr(y)x Or x=10D.yyx Or x=1033.设 a=10,b=4,c=5,d=7,表达式 ab And Not c0 Then Print Mid(num,P+1) Else Prim”END” End If End Sub 运行程序单击窗体,根据提示输入一个数值。如果不是输入实数,则输出“END”;否则(分数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分C.输出该实数的小数部分 D
22、.去掉实数中小数点,保留所有数码输出解析:解析:字符串匹配函数 Instr 用于查找第二个参数在第一个参数中第一次出现的位置,若未找到返回 0;Mid(字符串,起始位置,个数)函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串,若不指定个数将返回字符串中从参数“起始位置”到字符串尾端的所有字符。本题实际就是先找到小数点的位置,然后输出小数点后面的部分,即小数部分。22.在窗体上画一个文本框,名称为 Text1,然后编写如下程序:Private Sub Form_Load() Text1Text=”:Text1SetFocusEnd SubPrivate Sub Form_Clic
23、k() Dim a As String,S As String a=Text1Text:S=“ For k=1 To Len(a) S=UCase(Mid(a,k,1)+S Next k Text1Text=SEnd Sub 程序运行后,在文本框中输入一个字符串,然后单击窗体,则文本框中的内容(分数:2.00)A.与原字符串相同B.与原字符串中字符顺序相同,但所有字母均转换为大写C.为原字符串的逆序字符串,且所有字母转换为大写 D.为原字符串的逆序字符串解析:解析:Mid(字符串,起始位置,个数)函数用于从已有字符串巾取出从指定位置开始的含指定个数字符的字符串,UCase()函数用于将字符串中
24、小写字母转化为大写字母,原本大写或非字母字符保持不变。本题中在循环内每次取出第 k 位个字符并且连接到结果字符串的前面,所以结果字符串是源字符串的逆序字符串。23.在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Commandl_Click() aS=InputBox(”请输入一个二进制数”):n=Len(a$) For i=1 To n Dec=Dec*2+_(a$,i,1) Next i Print Dec End Sub 程序功能为:单击命令按钮,将产生一个输入对话框,此时如果在对话框中输入一个二进制数,并单击“确定”按钮,则把该二进制数转换为等值的十进制数。这个
25、程序不完整,应在横线处填入的内容是(分数:2.00)A.LeftB.RightC.ValD.Mid 解析:解析:Mid(字符串,起始位置,个数)函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串。本题中要将二进制数转换为十进制数,应该取出二进制数的每一位然后乘以位权。24.以下程序的功能是随机产生 10 个两位的整数: Option Base 1 Private Sub Command1_Click() Dim a(10)As Integer,i As Integer Randomize For i=1 To 10 a(i)=Int(Rnd*100)+1:Print a(i) N
26、ext 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),其中upperbound 是随机整数范围的上限,lowerbound 是随机整数范围的下限。
27、本题中 upperbound 为99,lowerbound 为 10。25.窗体上有一个名称为 Command1 的命令按钮,单击该按钮时所实现的功能是产生 10 个随机整数,然后从键盘输入一个整数,查找该数在数组中的位置。若找到,输出该数的位置;若没有找到,给出相应的提示。该命令按钮的单击事件过程如下: 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 I
28、fa(i)=X Then 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 的随机数。为了生成某个指定
29、范围内的随机整数,可使用以下公式:Int(upperboundlowerbound+1)*Rnd+lowerbound),其中upperbound 是随机整数范围的上限,lowerbound 是随机整数范围的下限。本题中 upperbound 为99,lowerbound 为 0。26.表达式 5 Mod 3+35*2 的值是(分数:2.00)A.0B.2 C.6解析:解析:本题考查 VB 运算符和表达式。本题中的表达式运算符有 Mod 求余,整除和*乘法运算,整除和乘法优先级相同,因此先计算 35 值为 0,然后乘以 2 值为 0,表达式变成:5 Mod 3+0,结果为2。27.设有如下程序
30、段: x=2 For i=1 T0 Step 2 x=x+i Next i 运行以上程序后,x 的值是(分数:2.00)A.26B.27 C.38D.57解析:解析:本题考查:For 循环。 x 的初值为 2,代码的功能是把循环变量的值和 x 做累加。For 循环执行 5 次,循环变量 i 的值分别为:1、3、5、7、9,因此循环结束后 x 的值为:2+1+3+5+7+9=27。28.设 a=“MicrosoflVisualbasic”,则以下使变量 b 的值为“Visualbasic”的语句是(分数:2.00)A.b=Left(a,10)B.b=Mid(a,10) C.b=Right(a,1
31、0)D.b=Mid(a,11,10)解析:解析:本题考查常用函数,Mid(a,M,N)功能是从 a 字符串左起第 M 位下标开始取值(包含 M 位),共取 N 位字符;Right(a,M)表示从右起第一位开始取值,向左取 M 位;Left(a,N)表示从 a 字符串左起第一位开始取值,向右取 N 位。题目要求取字符串右边的 11 个字符,可以使用 Mid 或者或者 Right 函数。选项 C)错误是由于少取了一个字符;选项 D)错误,只取了 10 个字符:选项 B)正确,表示从 a 字符串的第 10 位下标开始取右边的字符串。29.设 a=”a”,b=”b”,c=”c”,d=”d”,执行语句
32、x=IIf(ad),”A”,“B”) 后,X 的值为(分数:2.00)A.”a”B.”b”C.”A” D.”B”解析:解析:本题考查运算符、表达式和常用函数。IIf 语法是:IIf(逻辑表达式,表达式 1,表达式 2) 逻辑表达式:如果此表达式为真,该函数就返回表达式 1,否则返回表达式 2。在本题中 ab And Not(cd)Or dc 的值是(分数:2.00)A.1B.0C.TrueD.FALSE 解析:解析:在一个包含多种运算的表达式中,优先级顺序为:首先进行函数运算,接着进行算术运算,然后进行关系运算(=、=、),最后进行逻辑运算(NotAndOrXorEqvImp)。按此规则本题简
33、化为 False And Not True Or False,最终结果为 False。32.数学式 y 2 x=10 在 VB 中应表示为(分数:2.00)A.y*yx And 10=x B.Sqr(y)x And x=10C.Sqr(y)x Or x=10D.yyx Or x=10解析:解析:Sgn 函数为求平方根函数,为了表达 x 既小于 y 的平方又大于等于 10,两个表达式之间应该使用 And 联接。33.设 a=10,b=4,c=5,d=7,表达式 ab And Not c、=、),最后进行逻辑运算(NotAndOrXorEqvImp)。本题最后结果可以表达为 True And No
34、t True,结果为 False。34.以下叙述中错误的是(分数:2.00)A.续行符与它前面的字符之间至少要有一个空格B.Visual Basic 中使用的续行符为下划线()C.以撇号()开头的注释语句可以放在续行符的后面 D.Visual Basic 可以自动对输入的内容进行语法检查解析:解析:Visual Basic 中的语句是执行具体操作的指令,通常一行输入一条语句。也可把多条语句放在一行,各语句间用冒号(:)隔开。还可通过续行符(续行符由一个空格加一个下划线组成“ ”)将一条语句分别放在多行,续行符和前面的字符之间至少要有一个空格以免被认为是一个单词。续行符的后面不可以放以撇号()开头的注释语句;Visual Basic 可以自动对输入的内容进行语法检查,有语法错误会给出提示。