1、国家二级 VB 机试(数据类型及运算)模拟试卷 16 及答案解析(总分:64.00,做题时间:90 分钟)一、选择题(总题数:32,分数:64.00)1.设 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.输出该实数的小数部分D.去掉实数中的小数点,保留所有数码
2、输出7.在窗体上画一个文本框,名称为 Text1,然后编写如下程序: Private Sub Form Load() Private Sub Form Click() Text1Text=“:Text1SetFocus Dim a As String,s As String End Sub a=Text1Text:s=“ For k=1 To Len(a) s=UCase(Mid(a,k,1)+s Next k Text1Text=s End Sub 程序运行后,在文本框中输入一个字符串,然后单击窗体,则文本框中的内容(分数:2.00)A.与原字符串相同B.与原字符串中字符顺序相同,但所有字母
3、均转换为大写C.为原字符串的逆序字符串,且所有字母转换为大写D.为原字符串的逆序字符串8.在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() a$=InputBox(“请输入一个二进制数“) n=Len(a$) For i=l To n Dec=Dec*2+_(a$,i,1) Next i Print Dec End Sub 程序功能为:单击命令按钮,将产生一个输入对话框,此时如果在对话框中输入一个二进制数,并单击“确定“按钮,则把该二进制数转换为等值的十进制数。这个程序不完整,应在横线处填入的内容是(分数:2.00)A.LeftB.Rig
4、htC.ValD.Mid9.以下程序的功能是随机产生 10 个两位的整数: Option Base1 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) 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)=In
5、t(Rnd*101)10.窗体上有一个名称为 Command1 的命令按钮,单击该按钮时所实现的功能是产生 10 个随机整数,然后从键盘输入一个整数,查找该数在数组中的位置。若找到,输出该数的位置;若没有找到,给出相应的提示。该命令按钮的单击事件过程如下: Private Sub Command1_Click() Dim a(10)As Integer,x As Integer For i=l 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
6、 End If Next Ifp=0 Then Print“没有找到与输入数据相同的数!“ Else Print Str(x)+“在数组中的位置是“+Str(p) End If End Sub 对于上述事件过程,以下叙述中正确的是(分数:2.00)A.本程序实际产生的随机数是 0-99B.若产生的随机数中有相同数,则 p 是其中最后一个数的位置C.程序有错,p 的初值设置不对D.程序有错,InputBox 函数产生的数据与 x 的类型不匹配11.在 Visual Basic 中,表达式 3*25 Mod 3 的值是(分数:2.00)A.1B.0C.3D.出现错误提示12.表达式 2*32+4*
7、22+32 的值是(分数:2.00)A.30B.31C.49D.4813.设 a=4,b=5,c=6,执行语句 Print aA.TrueB.FalseC.出错信息D.014.以下关系表达式中,其值为 True 的是(分数:2.00)A.XYZ“XYz“B.VisualBasicbc 窗体上显示的是(分数:2.00)A.TrueB.FalseC.1D.出错19.要求如果 x 被 7 除余 2,则输出 x 的值,下列语句中不能实现此功能的语句是(分数:2.00)A.Ifx mod 7=2 Then Print xB.Ifx-(x7)*7=2 Then Print xC.Ifx-(x7)*7=2
8、Then Print xD.Ifx-Int(x7)*7=2 Then Print x20.满足下列条件之一的年份是闰年:1)年份能被 4 整除但不能被 100 整除 2)年份能被 400 整除若 y 代表年份,下面判断闰年的正确表达式是(分数:2.00)A.y Mod 4 And y Mod 100 Or y Mod 400B.y M0d 4=0 Or y M0d 1000 And(y Mod 4=0 Or y Mod 400=0)D.y Mod 4=0 And y Mod 100b And Not(cd)Or dc 的值是(分数:2.00)A.1B.0C.TrueD.False27.数学式
9、y 2 x=10 在 VB 中应表示为(分数:2.00)A.y*yx And 10x And x=10C.Sqr(y)x Or xx Or x=1028.设 a=10,b=4,c=5,d=7,表达式 ab And Not c0 and x0 or x0 和 x0 Then Print Mid(num,p+1) Else Print“END“ End If End Sub 运行程序,单击窗体,根据提示输入一个数值。如果输入的不是实数,则程序输出“END”;否则(分数:2.00)A.用字符方式输出该实数B.输出该实数的整数部分C.输出该实数的小数部分 D.去掉实数中的小数点,保留所有数码输出解析:
10、解析:字符串匹配函数 Instr 用于查找第二个参数在第一个参数中第一次出现的位置,若未找到返回 O;Mid(字符串,起始位置,个数)函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串,若不指定个数将返回字符串中从参数“起始位置”到字符串尾端的所有字符。本题实际就是先找到小数点的位置,然后输出小数点后面的部分,即小数部分。7.在窗体上画一个文本框,名称为 Text1,然后编写如下程序: Private Sub Form Load() Private Sub Form Click() Text1Text=“:Text1SetFocus Dim a As String,s As St
11、ring End Sub a=Text1Text:s=“ For k=1 To Len(a) s=UCase(Mid(a,k,1)+s Next k Text1Text=s End Sub 程序运行后,在文本框中输入一个字符串,然后单击窗体,则文本框中的内容(分数:2.00)A.与原字符串相同B.与原字符串中字符顺序相同,但所有字母均转换为大写C.为原字符串的逆序字符串,且所有字母转换为大写 D.为原字符串的逆序字符串解析:解析:Mid(字符串,起始位置个数)函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串,UCase()函数用于将字符串中小写字母转化为大写字母,原本大写或非字
12、母字符保持不变。本题中在循环内每次取出第 k 位个字符并且连接到结果字符串的前面,所以结果字符串是源字符串的逆序字符串。8.在窗体上画一个命令按钮,然后编写如下事件过程: Private Sub Command1_Click() a$=InputBox(“请输入一个二进制数“) n=Len(a$) For i=l To n Dec=Dec*2+_(a$,i,1) Next i Print Dec End Sub 程序功能为:单击命令按钮,将产生一个输入对话框,此时如果在对话框中输入一个二进制数,并单击“确定“按钮,则把该二进制数转换为等值的十进制数。这个程序不完整,应在横线处填入的内容是(分数
13、:2.00)A.LeftB.RightC.ValD.Mid 解析:解析:Midl字符串,起始位置,个数)函数用于从已有字符串中取出从指定位置开始的含指定个数字符的字符串。本题中要将二进制数转换为十进制数,应该取出二进制数的每一位然后乘以位权。9.以下程序的功能是随机产生 10 个两位的整数: Option Base1 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) Next i End Sub 运行以上程序,发
14、现有错误,需要对产生随机数的语句进行修改。以下正确的修改是(分数: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,随机整数范围的下限。本题中 upperbound 为99,l
15、owerbound 为 10。10.窗体上有一个名称为 Command1 的命令按钮,单击该按钮时所实现的功能是产生 10 个随机整数,然后从键盘输入一个整数,查找该数在数组中的位置。若找到,输出该数的位置;若没有找到,给出相应的提示。该命令按钮的单击事件过程如下: Private Sub Command1_Click() Dim a(10)As Integer,x As Integer For i=l To 10 a(i)=Int(Rnd*100) Next x=InputBox(“输入 100 以内的整数:“) p=0 For i=1 To 10 Ifa(i)=x Then p=i:Exi
16、t For End If Next Ifp=0 Then Print“没有找到与输入数据相同的数!“ Else Print Str(x)+“在数组中的位置是“+Str(p) End If End Sub 对于上述事件过程,以下叙述中正确的是(分数:2.00)A.本程序实际产生的随机数是 0-99 B.若产生的随机数中有相同数,则 p 是其中最后一个数的位置C.程序有错,p 的初值设置不对D.程序有错,InputBox 函数产生的数据与 x 的类型不匹配解析:解析:随机数函数:Rnd 的功能是用于产生一个小于 1 但大于或等于 0 的随机数。为了生成某个指定范围内的随机整数,可使用以下公式:In
17、t(upperbound-lowerbound+1)*Rnd+lowerbound),其中upperbound 是随机整数范围的上限,lowerbound 是随机整数范围的下限。本题中 upperbound 为99,lowerbound 为 0。11.在 Visual Basic 中,表达式 3*25 Mod 3 的值是(分数:2.00)A.1 B.0C.3D.出现错误提示解析:解析:本题考查的考点是有关算术运算的。按照运算符的优先级,首先执行 3*2 得到 6,然后用 6整除 5 得到 1,最后用 1 对 3 求余数得到最终结果 1。本题要注意“”为整除运算符,以及 Mod 取余运算的算法。
18、12.表达式 2*32+4*22+32 的值是(分数:2.00)A.30B.31 C.49D.48解析:解析:本题考查的考点是有关算术运算的。按照运算符的优先级,首先执行 32 得到 9,然后用 2乘以 9 得到 18;然后计算 4*22=4;最后计算 32 得到 9,三者相加得到最后结果 31。13.设 a=4,b=5,c=6,执行语句 Print aA.True B.FalseC.出错信息D.0解析:解析:本题考查的考点是有关逻辑运算和关系运算的。逻辑运算就是两个逻辑型的量进行运算,逻辑运算符的优先级低于关系运算符,故本题先计算 And 两端的表达式结果,这两个表达式的结果都为True,所
19、以二者相与的结果也为 True。14.以下关系表达式中,其值为 True 的是(分数:2.00)A.XYZ“XYz“B.VisualBasic=(大于或等于)、=(等于)、b And cc(分数:2.00)A.TrueB.False C.-1D.1解析:解析:一个表达式可能含有多种运算,计算机按一定的顺序对表达式求值。一般顺序如下:首先进行函数运算;接着进行算术运算,其次序为:幂()取负(-)乘、浮点除(*、)整除()取模(Mod)加、减(+、-)连接();然后进行关系运算(=、(=、=);最后进行逻辑运算,顺序为:NotAndorXorEqvInp。18.设 a=10,b=5,c=1,执行语
20、句 Print abc 窗体上显示的是(分数:2.00)A.TrueB.False C.1D.出错解析:解析:中的逻辑值 True 和 False 在参与关系运算时会自动进行类型转换,其中 True 转换为-1,False 转换为 0。本题中先计算 ab(105 为真)结果为 True,此时系统自动转换其值为-1,然后计算-1c(-11 为假),结果为 False。19.要求如果 x 被 7 除余 2,则输出 x 的值,下列语句中不能实现此功能的语句是(分数:2.00)A.Ifx mod 7=2 Then Print xB.Ifx-(x7)*7=2 Then Print xC.Ifx-(x7)
21、*7=2 Then Print x D.Ifx-Int(x7)*7=2 Then Print x解析:解析:整除运算符“”的功能是取两数相除结果的整数部分,取模运算符“MOD”的功能是取两数相除的余数部分,且前者的优先级高于后者。据此判断本题中的选项,只有 C 选项使用了“”普通算数除法运算符,而且没有对结果进行取整操作,是不能判断被 7 除余 2 的。20.满足下列条件之一的年份是闰年:1)年份能被 4 整除但不能被 100 整除 2)年份能被 400 整除若 y 代表年份,下面判断闰年的正确表达式是(分数:2.00)A.y Mod 4 And y Mod 100 Or y Mod 400B
22、.y M0d 4=0 Or y M0d 1000 And(y Mod 4=0 Or y Mod 400=0)D.y Mod 4=0 And y Mod 100、=、),最后进行逻辑运算(NotAndOrXorEqvlmp)。本题最后结果可以表达为(1+2)+2,结果为 5。25.表达式 1224 的值是(分数:2.00)A.15B.2C.4D.1 解析:解析:算术表达式的运算次序为:幂()取负(-)乘、浮点除(*、)整除()取模(Mod)加、减(+、-)连接(),所以本题将会先计算 122 得到 6,然后计算 64=1。26.设:a=2,b=8,c=6,d=3,表达式 ab And Not(c
23、d)Or dc 的值是(分数:2.00)A.1B.0C.TrueD.False 解析:解析:在一个包含多种运算的表达式中,优先级顺序为:首先进行函数运算,接着进行算术运算,然后进行关系运算(=、=、),最后进行逻辑运算(NotAndOrXorEqvImp)。按此规则本题简化为 FalseAndNot True Or False,最终结果为 False。27.数学式 y 2 x=10 在 VB 中应表示为(分数:2.00)A.y*yx And 10x And x=10C.Sqr(y)x Or xx Or x=10解析:解析:Sgn 函数为求平方根函数,为了表达 x 既小于 y 的平方又大于等于
24、10,两个表达式之间应该使用 And 联接。28.设 a=10,b=4,c=5,d=7,表达式 ab And Not c、=、),最后进行逻辑运算(NotAndOrXorEqvImp)。本题最后结果可以表达为 True And Not True,结果为 False。29.以下叙述中错误的是(分数:2.00)A.续行符与它前面的字符之间至少要有一个空格B.Visual Basic 中使用的续行符为下划线()C.以撇号()开头的注释语句可以放在续行符的后面 D.Visual Basic 可以自动对输入的内容进行语法检查解析:解析:Visual Basic 中的语句是执行具体操作的指令,通常一行输入
25、一条语句。也可把多条语句放在一行,各语句间用冒号(:)隔开。还可通过续行符(续行符由一个空格加一个下划线组成“_”)将一条语句分别放在多行,续行符和前面的字符之间至少要有一个空格以免被认为是一个单词。续行符的后面不可以放以撇号()开头的注释语句;Visual Basic 可以自动对输入的内容进行语法检查,有语法错误会给出提示。30.下列有语法错误的赋值语句是(分数:2.00)A.y=7=9B.s=m+nC.Text1Text=10D.m+n=12 解析:解析:赋值语句可以把指定的值赋给一个变量或一个对象的某个属性,其格式为Let目标操作符=源操作符。 格式中的“源操作符”可以是变量、表达式、常
26、量、对象属性以及它们的组合,但目标操作符必须是单个的变量或者属性。31.输入 VB 源程序时,若一个命令行中包含两个语句,则两个语句之间的分隔符应使用(分数:2.00)A.冒号(:) B.分号(;)C.下划线(_)D.连字符(-)解析:解析:Visual Basic 中的语句是执行具体操作的指令,通常一行输入一条语句。也可把多条语句放在一行,各语句间用冒号(:)隔开。还可通过续行符(续行符由一个空格加一个下划线组成“_”)将一条语句分别放在多行。32.Visual Basic 源程序的续行符为(分数:2.00)A.冒号(:)B.分号(;)C.下划线(_) D.连字符(-)解析:解析:Visual Basic 中的语句是执行具体操作的指令,通常一行输入一条语句。也可把多条语句放在一行,各语句间用冒号(:)隔开。还可通过续行符(续行符由一个空格加一个下划线组成“_”)将一条语句分别放在多行。