1、国家二级 VB机试(控制结构)模拟试卷 10及答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.现有语句:y=IIf(x0,x Mod 3,0)设 x=10,则 y的值是(分数:2.00)A.0B.1C.3D.语句有错2.设 x是整型变量,与函数 IIf(x0,-x,x)有相同结果的代数式是(分数:2.00)A.|x|B.-|x|C.xD.-x3.计算下面分段函数的正确语句是(分数:2.00)A.Y=IIf(x0,x+1,IIf(x0,x-1,x+1)C.Y=IIf(x0,x+1,IIf(x50,Int(a3),a Mod 2)当 a=52时,x
2、 的值是(分数:2.00)A.0B.1C.17D.185.在下面语句或函数中,不能描述选择结构的是(分数:2.00)A.If语句B.IIf函数C.Select Case语句D.While语句6.设窗体上有 Text1、Text2 两个文本框,并编写了下面的程序代码: Private Sub Text1_KeyPress(KeyAscii As Integer) If“A“85 Then r=1 Else Ifscore60 Then r=2 Else r=0 End If Print r End Sub 程序运行后,单击命令按钮Command1,输出结果为(分数:2.00)A.0B.1C.2D
3、.869.设有如下事件过程: Private Sub Form_Click() Sum=0 For k=l To 3 If k0,1,IIf(x0 Then x=1 Elself xB.Ifx0 Then Print 1 ElseIf xC.Select Case x Case Is0 Print 1 Case IsD.If x0 Then Print 1 Elselfx11.在窗体上画一命令按钮和一文本框,其名称分别为 Command1和 Text1,然后编写如下程序: Function Fun(x As Integer, Private Sub Command1_Click() y As
4、Integer)As Integer Dim a As Integer,b As Integer Fun=IIf(xA.12B.20C.24D.4012.三角形的构成条件是:任意 2边之和大于第 3边。设变量 a、b、c 是 3条直线的长度,要求判断这 3条直线能否构成一个三角形。 下面有 3个程序段可以正确判断,另一个不能正确判断的是(分数:2.00)A.If a+bc And a+cb And b+ca Then Print“可以构成一个三角形“ Else Print“不能构成三角形“ End IfB.If a+bc Or a+cb Or b+ca Then Print“可以构成一个三角形
5、“ Else Print“不能构成三角形“ End IfC.If a+b20B.Case 1 To 10C.Case 05 的 Case子句是(分数:2.00)A.Case Not(-5 To 5)B.Case 5 To -5C.Case Is5D.Case Abs(X)515.现有如下一段程序: Private Sub Command1_Click() x=UCase(InputBox(”输入:“) Select Case x Case“A“To“C“ Print“考核通过!“ Case“D“ Print“考核不通过!“ Case Else Print“输入数据不合法!“ End Selec
6、t End Sub 执行程序,在输入框中输入字母“B”,则以下叙述中正确的是(分数:2.00)A.程序运行错B.在窗体上显示“考核通过!”C.在窗体上显示“考核不通过!”D.在窗体上显示“输入数据不合法!”16.窗体上有 1个名称为 Command1的命令按钮,事件过程如下: Pfivate Sub Command1_Click() Dim num As Integerx As Integer num=Val(InputBox(“请输入一个正整数“) Select Case num Case Is100 x=x+num Case IsA.0 0 0B.0 0 60C.0 90 0D.100 0
7、 6017.窗体上有一个名称为 Text1的文本框,一个名称为 Command1的命令按钮。命令按钮的单击事件过程如下: Private Sub Command1_Click() Dim x1 As Integer,x2 As Integer,x3 As Integer s=Trim(Text1Text) strLen=Len(s) For i=1 To strLen c=Mid(s,i,1) Select Case c Case“0“To“9“ xl=x1+1 Case“A“To“Z“ x2=x2+1 Case“a“To“z“ x3=3+1 Case Else x4=x4+1 End Sel
8、ect Next Print“x1“;x1,“x2“;x2,“x3“;x3,“x4“;x4 End Sub 以下关于上述程序的叙述中,正确的是(分数:2.00)A.S是去掉文本框中字符串末尾的空格B.Select Case c有误,Case 后应该是一个表达式C.各 Case分支条件有误,不能用 To表示字符的取值区间D.x4是字符串中非字母、非数字字符的个数18.编写如下程序: Private Sub Command1_Click() Dim m As Integer,n As Integer m=2:n=1 Select Case m Case 1 Select Case n Case1
9、Prim“AAA“ Case 2 Print“BBB“ Case 2 Print“CCC“ End Select End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.00)A.AAAB.BBBC.CCCD.119.某人设计了如下程序用于计算并输出 7!(7的阶乘) Private Sub Command1_Click() t=0 For k=7 To 2 Step-1 t=t*k Next Prite t End Sub 执行程序时,发现结果是错误的。下面的修改方案中能够得到正确的是(分数:2.00)A.把 t=0改为 t=1B.把 For k=7 to 2 St
10、ep-1改为 For k=7 to 1 Step-1C.把 For k=7 to 2 Step-1改为 For k=1 to 7D.把 Next改为 Next k20.为计算 an的值,某人编写了函数 power如下: Private Function power(a As Integer,n As Integer)As Long Dim P As Long P=a For k=1 To n P=p*a Next k Power=p End Function 在调试时发现是错误的,例如 Print power(5,4)的输出应该是 625,但实际输出是 3125。 程序需要修改。下面的修改方案
11、中有 3个是正确的,错误的一个是(分数:2.00)A.把 For k=1 To n改为 For k=2 To nB.把 P=p*a改为 P=paC.把 For k=1 To n改为 For k=-1 To n-1D.把 P=a改为 P=121.某人为计算 n!(00,x Mod 3,0)设 x=10,则 y的值是(分数:2.00)A.0B.1 C.3D.语句有错解析:解析:本题考查的考点是有关 IIf函数的。IIf 函数可用于执行简单的条件判断操作,它是“IfThenElse”结构的简写版本。 格式:ResuIt=IIf(条件,True 部分,False 部分) 其中“Result”是函数的返
12、回值,“条件”是一个逻辑表达式。当“条件”为真时,IIf 函数返回“True部分”的值,而当“条件”为假时返回“False 部分”的值。“True 部分”或“FaIse 部分”可以是表达式、变量或其他函数。本题中由于 x=10是大于 0的,所以返回值为 x Mod3的值即 1。2.设 x是整型变量,与函数 IIf(x0,-x,x)有相同结果的代数式是(分数:2.00)A.|x|B.-|x| C.xD.-x解析:解析:lIf 函数可以用来执行简单的条件判断操作,它是“IfThenElse”结构的简写版本,其格式为:result=IIf(条件,True 部分,False 部分)。其中“result
13、”是函数的返回值,“条件”是一个逻辑表达式。当“条件”为真时,IIf 函数返回“True 部分”,否则返回“False 部分”。“True 部分”或“False 部分”可以是表达式、变量或其他函数。本题中 IIf函数的作用是如果 x0则返回-x,否则返回 x,等价于-|x|。3.计算下面分段函数的正确语句是(分数:2.00)A.Y=IIf(x0,x+1,IIf(x0,x-1,x+1)C.Y=IIf(x0,x+1,IIf(x50,Int(a3),a Mod 2)当 a=52时,x 的值是(分数:2.00)A.0B.1C.17 D.18解析:解析:IIf 函数可用来执行简单的条件判断操作,它是“I
14、fThenElse”结构的简写版本。格式为:result=IIf(条件,True 部分,False 部分)。当条件为真时,IIf 函数返回True部分,而当条件为假时,返回False 部分。本题中 a的值是 52,所以条件为真,将返回 523的值即 17。5.在下面语句或函数中,不能描述选择结构的是(分数:2.00)A.If语句B.IIf函数C.Select Case语句D.While语句 解析:解析:选择结构可以使用 IIf函数、If 语句来实现两个分支的选择结构,使用 Select case语句实现多分支选择结构,While 语句用来描述循环结构。6.设窗体上有 Text1、Text2 两
15、个文本框,并编写了下面的程序代码: Private Sub Text1_KeyPress(KeyAscii As Integer) If“A“85 Then r=1 Else Ifscore60 Then r=2 Else r=0 End If Print r End Sub 程序运行后,单击命令按钮Command1,输出结果为(分数:2.00)A.0B.1 C.2D.86解析:解析:块结构条件语句的格式为: lf条件 lThen : 语句块 l ElseIf条件 2Then :语句块 2 Else : 语句块 n End If 如果“条件 1”为 True,则执行“语句块 1”并跳出结构:否
16、则如果“条件 2”为 True,则执行“语句块 2”并跳出结构否则执行“语句块 n”并结束整个结构。9.设有如下事件过程: Private Sub Form_Click() Sum=0 For k=l To 3 If k0,1,IIf(x0 Then x=1 Elself xB.Ifx0 Then Print 1 ElseIf xC.Select Case x Case Is0 Print 1 Case IsD.If x0 Then Print 1 Elselfx解析:解析:IIf 函数可用来执行简单的条件判断操作,它是“IfthenElse”结构的简写版本。格式为:Resuh=IIf(条件,
17、True 部分,False 部分)。当条件为真时,IIf 函数返回True部分,而当条件为假时,返回False 部分。本题中 IIf函数的功能是判断 x是不是正数,如果是返回 1,否则继续判断 a是不是负数,如果是返回-1,否则返回 0,即返回 x的符号。分析 4个选项只有 D选项不应该使用 ElseIf语句而应该使用 EIse语句。11.在窗体上画一命令按钮和一文本框,其名称分别为 Command1和 Text1,然后编写如下程序: Function Fun(x As Integer, Private Sub Command1_Click() y As Integer)As Integer
18、Dim a As Integer,b As Integer Fun=IIf(xA.12 B.20C.24D.40解析:解析:命令按钮的 Defaull属性用于设置窗体的缺省命令按钮,程序运行时,按下Enter键将执行该命令按钮的单击事件过程。IIf 函数可用来执行简单的条件判断操作,它是“IfthenElse”结构的简写版本。格式为:Result=Ilf(条件,True 部分,False 部分)。当条件为真时,Ilf函数返回True 部分,而当条件为假时,返回False 部分。本题在函数 Fun中判断 x是否比 y小,如果小则返回 x作为返回值,否则返回 y作为返回值,即返回两个参数中的最小值
19、。12.三角形的构成条件是:任意 2边之和大于第 3边。设变量 a、b、c 是 3条直线的长度,要求判断这 3条直线能否构成一个三角形。 下面有 3个程序段可以正确判断,另一个不能正确判断的是(分数:2.00)A.If a+bc And a+cb And b+ca Then Print“可以构成一个三角形“ Else Print“不能构成三角形“ End IfB.If a+bc Or a+cb Or b+ca Then Print“可以构成一个三角形“ Else Print“不能构成三角形“ End If C.If a+b20B.Case 1 To 10C.Case 0(不等于)、(大于)、=
20、(大于或等于)。14.假定有如下情况语句:Select Case X 能表示|X|5 的 Case子句是(分数:2.00)A.Case Not(-5 To 5)B.Case 5 To -5C.Case Is5 D.Case Abs(X)5解析:解析:多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断。其格式为: Select case 测试表达式 Case表达式列表 1: 语句块 1 Case Else: 语句块 n End Select Case语句以 Select Case开头,以 End Select结束。其中,表达式列表 1,表达式列表 2
21、,称为域值。可采用 3种形式:表达式 1,表达式 2; 表达式 1 To表达式 2;Is 关系运算表达式。其中,可使用的运算符有等于(=)、不等于()、小于()、大于()、小于或等于(=)、大于或等于(=)。15.现有如下一段程序: Private Sub Command1_Click() x=UCase(InputBox(”输入:“) Select Case x Case“A“To“C“ Print“考核通过!“ Case“D“ Print“考核不通过!“ Case Else Print“输入数据不合法!“ End Select End Sub 执行程序,在输入框中输入字母“B”,则以下叙述
22、中正确的是(分数:2.00)A.程序运行错B.在窗体上显示“考核通过!” C.在窗体上显示“考核不通过!”D.在窗体上显示“输入数据不合法!”解析:解析:多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断。其格式为:同上题。16.窗体上有 1个名称为 Command1的命令按钮,事件过程如下: Pfivate Sub Command1_Click() Dim num As Integerx As Integer num=Val(InputBox(“请输入一个正整数“) Select Case num Case Is100 x=x+num Case
23、IsA.0 0 0B.0 0 60 C.0 90 0D.100 0 60解析:解析:多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断。其格式为:同上题。 本题中第一次输入 100执行 Case Else分支,由于 x是默认初值 0所以输出 0;第二次输入 90也执行 Case Else分支,由于 x是默认初值 0所以输出 0;第三次输入 60执行第二个分支输出 60。17.窗体上有一个名称为 Text1的文本框,一个名称为 Command1的命令按钮。命令按钮的单击事件过程如下: Private Sub Command1_Click() Dim
24、x1 As Integer,x2 As Integer,x3 As Integer s=Trim(Text1Text) strLen=Len(s) For i=1 To strLen c=Mid(s,i,1) Select Case c Case“0“To“9“ xl=x1+1 Case“A“To“Z“ x2=x2+1 Case“a“To“z“ x3=3+1 Case Else x4=x4+1 End Select Next Print“x1“;x1,“x2“;x2,“x3“;x3,“x4“;x4 End Sub 以下关于上述程序的叙述中,正确的是(分数:2.00)A.S是去掉文本框中字符串末
25、尾的空格B.Select Case c有误,Case 后应该是一个表达式C.各 Case分支条件有误,不能用 To表示字符的取值区间D.x4是字符串中非字母、非数字字符的个数 解析:解析:Trim 函数的作用是去掉文本框中字符串两端的空格;多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断,Case 后面的表达式可采用 3种形式:表达式1,表达式 2; 表达式 1 To表达式 2;Is 关系运算表达式。最终 x1是字符串中数字的个数;x2是字符串中大写字母的个数;x3 是字符串中小写字母的个数;x4 是字符串中非字母、非数字字符的个数。18.编写如
26、下程序: Private Sub Command1_Click() Dim m As Integer,n As Integer m=2:n=1 Select Case m Case 1 Select Case n Case1 Prim“AAA“ Case 2 Print“BBB“ Case 2 Print“CCC“ End Select End Sub 程序运行后,单击命令按钮 Command1,输出结果为(分数:2.00)A.AAAB.BBBC.CCC D.1解析:解析:多分支控制结构又称为 Select Case语句或 Case语句,可以同时对条件的多个取值来判断。本题是一个嵌套的 Sel
27、ect Case语句,首先判断 m的值,本题由于 m的值为 2,所以不会执行 Case 1分支,直接执行 Case 2分支输出“CCC”。19.某人设计了如下程序用于计算并输出 7!(7的阶乘) Private Sub Command1_Click() t=0 For k=7 To 2 Step-1 t=t*k Next Prite t End Sub 执行程序时,发现结果是错误的。下面的修改方案中能够得到正确的是(分数:2.00)A.把 t=0改为 t=1 B.把 For k=7 to 2 Step-1改为 For k=7 to 1 Step-1C.把 For k=7 to 2 Step-1
28、改为 For k=1 to 7D.把 Next改为 Next k解析:解析:本题考查循环控制结构。在 Command1的 Click事件过程中,变量 t的初值为 0,在 For循环里面,t 变量保存累乘积。由于 t初值为 0,因此累乘积永远都是 0,因此 t的初值应该设置为 1。20.为计算 an的值,某人编写了函数 power如下: Private Function power(a As Integer,n As Integer)As Long Dim P As Long P=a For k=1 To n P=p*a Next k Power=p End Function 在调试时发现是错误
29、的,例如 Print power(5,4)的输出应该是 625,但实际输出是 3125。 程序需要修改。下面的修改方案中有 3个是正确的,错误的一个是(分数:2.00)A.把 For k=1 To n改为 For k=2 To nB.把 P=p*a改为 P=pa C.把 For k=1 To n改为 For k=-1 To n-1D.把 P=a改为 P=1解析:解析:本题考查循环控制结构。选项 A循环少执行一次,由丁 p初始化为 a相当于执行了第一次,因此循环必须少执行一次才能计算正确的 an;选项 B中 pa已经是幂运算了,不需要循环来计算;选项C循环少执行一次,正确;选项 D中 p初始化为
30、 1,循环执行 n次正确。21.某人为计算 n!(0n=12)编写了下面的函数过程: Private Function fun(n As Integer)As Long Dim p As Long P=1 For k=n-1 To 2 Step-1 p=p*k Next k fun=p End Function 在调试时发现该函数过程产生的结果是错误的,程序需要修改。下面的修改方案中有 3种是正确的,错误的方案是(分数:2.00)A.把 p=1改为 p=nB.把 For k=n1 To 2 Step-1 改为 For k=1 To n-1 C.把 For k=n1 To 2 Step-1 改为
31、 For k=1 To nD.把 For k=n1 To 2 Step-1 改为 For k=2 To n解析:解析:本题考查的考点是有关循环次数的。本题题干中程序的错误在于,p 的值是从 1一直乘到 n-1的值,也就是 n1 的阶乘。选项 A可以在这个基础上再乘 n就得到 n的阶乘;选项 C和 D)都能够保证从 1乘到 n,只有选项 B是错误的。22.阅读程序: Private Sub Form_Click() a=0 Forj=1 To 15 a=a+j Mod 3 Nextj Print a End Sub 程序运行后,单击窗体,输出结果是(分数:2.00)A.105B.1C.120D.
32、15 解析:解析:本题考查的考点是有关循环的。本题中循环的特点是:每执行 3次循环,依次向 a中加上0+1+2也就是 3;循环共执行了 15次,所以 a中的值应该为 15。23.在窗体上画一个命令按钮,其名称为 Command1,然后编写如下代码: Option Base1 Private Sub Command1_Click() Dim a a=Array(1,2,3,4):j=1 For i=4 To 1 Step-1 S=S+a(i)*j:j=j*10 Next i Print s End Sub 程序运行后,单击命令按钮,其输出结果是(分数:2.00)A.4321B.1234 C.34
33、D.12解析:解析:本题考查的考点是有关循环的。在本题的循环中,首先取得数组的最后一个元素并乘 1后放入 s;然后取得第 3个元素并乘 10后加到 s里面,然后取得第 2个元素并乘 100后加到 s里面,最后取得第 1个元素并乘 1000后加到 s里面,所以 s的最终值为 1234。24.在窗体上画一个命令按钮,名称为 Command1,然后编写如下代码: Option Base 0 Private Sub Command1_Click() Dim A1(4)As Integer,A2(4)As Integer For k=0 To 2 Al(k+1)=InputBox(“请输入一个整数“)
34、A2(3-k)=A1(k+1) Next k Print A2(k) End Sub 程序运行后,单击命令按钮,在输入对话框中依次输入 2、4、6,则输出结果为(分数:2.00)A.0B.1C.2 D.3解析:解析:本题的关键之处在于抓住每次具体给哪个数组元素进行了赋值,第一次循环中输入的 2被赋给了 A1(1)和 A2(3),第二次循环中输入的 4被赋给了 A1(2)和 A2(2),第三次循环中输入的 6被赋给了A1(3)和 A2(1),跳出循环时 k的值为 3,所以最后输出 2。25.设有以下程序: Private Sub Form_Click() x=50 For i=1 To 4 y=
35、InputBox(“请输入一个整数“) y=Val(y) If y Mod 5=0 Then a=a+y:x=y Else a=a+x End If Next i Print a End Sub 程序运行后,单击窗体,在输入对话框中依次输入 15、24、35、46,输出结果为(分数:2.00)A.100 B.50C.120D.70解析:解析:本题考查的考点是有关循环的。本题需要写出每一次循环的变量变化情况。第一次循环时输入 15,If 判断为真,所以 a=15,x=15;第二次循环时输入 24,If 判断为假,所以 a=15+15=30,x 仍然为 15;第三次循环时输入 35,If 判断为真
36、,所以 a=30+35=65,x=35;第四次循环时输入 46,If 判断为假,所以 a=65+35=100,x=35。26.有下面程序代码: Private Sub Command1_Click() a=3:s=0 For k=1 To 5 s=s+a Mod k:a=a+k Next k Print s End Sub 程序运行后,单击命令按钮 Command1,输出结果是(分数:2.00)A.15B.13C.4 D.1解析:解析:在:For 循环中 k的值从 1变化到 5,在每次循环中为累加和变量 s累加上 a Mod k的值然后令 a自加 k,故此整个循环过程中 s=0+0+0+1+3=4。