1、国家二级 VB机试(控制结构)模拟试卷 2及答案与解析 一、选择题 1 设 x是整型变量,与函数 IIf(x0, -x, x)有相同结果的代数式是 ( A) |x| ( B) |x| ( C) x ( D) =-x 2 在下面语句或函数中,不能描述选择结构的是 ( A) If语句 ( B) IIf函数 ( C) Select Case语句 ( D) While语句 3 编写如下程序: Private Sub Command 1 Click() Dim score As Integer score=86 If score85 Then r=1 ElseIf score60 Then r=2 El
2、se r=0 End If Print r End Sub 程序运行后,单击命令按钮 Command1,输出结果为 ( A) 0 ( B) 1 ( C) 2 ( D) 86 4 在窗体上画一命令按钮和一文本框,其名称分别为 Command1和 Text1,然后编写如下程序: Function Fun(x As Integer,y As Integer)As Integer Fun=IIf(x5的 Case子句是 ( A) Case Not(-5 To 5 ( B) Case 5 To-5 ( C) Case Is5 ( D) Case Abs(X)5 6 窗体上有一个名称为 Text1的文本框
3、,一个名称为 Command 1的命令按钮。命令按钮的单击事件过程如下: Private Sub Command 1_Click() Dim x1 As Integer,x2 As Integer,x3 As Integer s=Trim(Text1 Text) strLen=Len(s) For i=l To strLen c=Mid(s, i, 1) Select Case c Case“0“To“9“ xl=x1+l Case“A“To“z“ x2=x2+1 Case“a“To“z“ x3=3+1 Case Else x4=x4+1 End Select Next Print“x1“;
4、x1, “x2“; x2, “x3“; x3, “x4“; x4 End Sub 以下关于上述程序的叙述中,正确的是 ( A) s是去掉文本框中字符串末尾的空格 ( B) Select Case c有误, Case后应该是一个表达式 ( C)各 Case分支条件有误,不能用 To表示字符的取值区间 ( D) x4是字符串中非字母、非数字字符的个数 7 阅读程序: Private Sub Form Click() a=0 Forj=1 To 15 a=a+j Mod 3 Nextj Print a End Sub 程序运行后,单击窗体,输出结果是 ( A) 105 ( B) 1 ( C) 120
5、 ( D) 15 8 设有以下程序: Private Sub Form Click() X=50 For i=1 To 4 Y=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,输出结果为 ( A) 100 ( B) 50 ( C) 120 ( D) 70 9 编写如下程序: Private Sub Command 1 Click() Dim a(10)As String
6、s=“123456“ n=Len(s) For k=1 To n a(k)=Mid(s, k, 1) Next k For i=1 To n 2 t=a(i) a(i)=a(n-i+1) a(n-i+1)=t Next i For k=1 To n Print a(k); Next k End Sub 程序运行后,单击命令按钮 Command1,输出结果为 ( A) 654321 ( B) 123456 ( C) 654123 ( D) 123654 10 某人 编写了如下程序,用来求 10个整数 (整数从键盘输入 )中的最大值: Private Sub Command 1_Click() D
7、im a(10)As Integer,max As Integer For k=1 To 10 a(k)=InputBox(“输入一个整数 “) Next k max=0 For k=1 To 10 If a(k)max Then max=a(k) End If Next k Print max 运行程序时发现,当输入 10个正数时,可以得到正确结果,但输入 10个负数时结果是错误的,程序需要修改。下面的修改中可以得到正确运行结果的是 ( A)把 Ifa(k)max Then改为 If a(k)10 Then Exit For Next Text1 Text=Str(n) End Sub 程序
8、运行后,单击命令按钮,在文本框中显示的值是 ( A) 2 ( B) 3 ( C) 4 ( D) 5 12 有如下程序: Private Sub Form_Click() Dim i As Integer,n As Integer For i=1 To 20 i=i+4: n=n+i Ifi10 Then Exit For Next Print n End Sub 程序运行后,单击窗体,则输出结果是 ( A) 14 ( B) 1 5 ( C) 29 ( D) 30 13 在窗体上画一个名称为 Command 1的命令按钮,编写如下事件过程: Private Sub Command1_Click(
9、) n=0 For i=0 To 10 X=2*i-1 IfX Mod 3=0 Then n=n+1 Next i Print n End SUb 运行程序,单击命 令按钮,则窗体上显示的是 ( A) 1 ( B) 3 ( C) 5 ( D) 7 14 设 a、 b都是自然数,为求 a除以 b的余数,某人编写了以下函数: Function fun(a As Integer, b As Integer) While ab a=a-b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是 ( A)把 a=a b改为 a=b-a ( B)
10、把 a=a-b改为 a=a b ( C)把 While ab改为 While ab改为 While a=b 15 以下 Visual Basic不支持的循环结构是 ( A) ForNext ( B) For EachNext ( C) DoLoop ( D) DoEnd Do 16 编写如下程序: Private Sub Command 1_Click() Dim n As Long, S As String n=InputBox(“输入一个数 “) Do While nk 2 End Sub 程序运行后,单击命令按钮 Command1,并输入数值 20,则输出结果为 ( A) 2 2 5 (
11、 B) 2 3 4 ( C) 2 3 4 5 ( D) 2 5 22 在窗体上画一个命令按钮和一个标签,其名称分别为 Command1和 Label1,然后编写如下事件过程: Private Sub Command1 Click() Counter=0 For i=1 To 4 For i=6 To 1 Step-2 Counter=Counter+1 Next i Next i Labell Caption=Str(Counter) End Sub 程序运行后,单击命令按钮,标 签中显示的内容是 ( A) 11 ( B) 12 ( C) 16 ( D) 20 23 命令按钮 Command1
12、的单击事件过程如下: Private Sub Command1_C1ick() Dim a(10, 10)As Integer x=0 For i=1 To 3 Vorj=1 To 3 a(i, j)=i*2 Mod j IfxSqr(i)Then Print i Next i End Sub 该程序的功能是 ( A)判断 n是否为素数 ( B)输 出 n以内所有的奇数 ( C)输出 n以内所有的偶数 ( D)输出 n以内所有的素数 26 设有如下事件过程: Private Sub Command 1_Click() For i=1 To 5 j=1 Do Print“*“j=j-1 Loop
13、 Untilj=0 Next i End Sub 运行程序,输出 “*”的个数是 ( A) 5 ( B) 1 5 ( C) 20 ( D) 25 27 窗体上有一个名称为 Command1的命令按钮,编写如下事件过程: Private Sub Command 1_Click() i=0 Do While i0则返回 -x,否则返回 x,等价于 -|x|。 【知识模块】 控制结构 2 【正确答案】 D 【试题解析】 选择结构可以使用 IIf函数、 If语句来实现两个分支的选择结构,使用 select case语句实现多分支选择结构, while语句用来描述循环结构。 【知识模块】 控制结构 3
14、【正确答案】 B 【试题解析】 块结构条件语句的格式为: If Then ElseIf Then Else EndIf 如果 “条件 1”为 True,则执行 “语句块 1”并跳出结构;否则如果 “条件 2”为True, 则执行 “语句块 2”并跳出结构 否则执行 “语句块 n”并结束整个结构。 【知识模块】 控制结构 4 【正确答案】 A 【试题解析】 命令按钮的 Default属性用于设置窗体的缺省命令按钮,程序运行时,按下 键将执行该命令按钮的单击事件过程。 IIf函数可用来执行简单的条件判断操作,它是 “IfthenElse” 结构的简写版本。格式为: Result=lift: , ,
15、)。当 为真时, IIf函数返回 ,而当 为假时,返回 。本题在函数 Fun中判断 x是否比 y小,如果小则返回 x作为返回值,否则返回 y作为返回值,即返回两个参数中的最小值。 【知识模块】 控制结构 5 【正确答案】 C 【试题解析】 多分支控制结构又称为 Select Case语句或 Case语句, 可以同时对条件的多个取值来判断。其格式为: Select Case Case 语句块 1 Case Else 语句块 n End Select Case语句以 Select Case开头,以 End Select结束。 其中,表达式列表 1,表达式列表 2, 称为域值。可采用 3种形式: 表
16、达式 1,表达式 21 ; 表达式 1 To表达式 2; Is关系运算表达 式。 其中,可使用的运算符有等于 (=)、不等于 (10为真,将退出循环,故文本框中显示的值为 3。 【知识模块】 控制结构 12 【正确答案】 D 【试题解析】 本题的 For循环中改变了循环变量 i的值,而且在循环中还有 Exit语句退出循环,故此需要逐次循环进行分 析。第一次循环中 i的初值为 1,然后变为 5,将其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 1(特别重要很容易忘记 )继续循环;第二次循环开始 i的值为 6,加上 4以后变为 10,将其累加到 n中然后因其不满足 If条件,所以 i
17、的值加上步长 1继续循环;第三次循环开始 i的值为 11,加上 4以后变为 15,将其累加到 n中然后因其满足 If条件退出循环,所以累加三次的值为 5+10+15=30。 【知识模块】 控制结构 13 【正确答案】 B 【试题解析】 本题的 For循环共执行 11次,在每次循环中计算出一个 x的值,然后判断能否被 3整除,如能整除则令计数器 n自加 1。 【知识模块】 控制结构 14 【正确答案】 D 【试题解析】 本题函数过程的原代码仅适合 a不能被 b整除的两数,而当 a能被b整除时则不适用,如 a=4, b=2, a除以 b的余数为 0,而原代码返回的函数值为2。因此需将语句 whil
18、e ab改为 while a=b。 【知识模块】 控制结构 15 【正确答案】 D 【试题解析】 Visual Basic支持的循环结构包括: ForNext 循环、ForEachNext 循环、 DoLoop 循环和 while循环。 【知识模块】 控制结构 16 【正确答案】 A 【试题解析】 小题在循环中先将 n除以 10的余数 (即个位数字 )连接到 s上,然后将整除 10后除以 10的余数 (即十位上数字 )连接到 s上,然后 n整除 100的值赋值给 n(即去掉最厉两位 ),然后继续进行循环,所以最终将会输出数字的逆序。 【知识模块】 控制结构 17 【正确答案】 A 【试题解析】 本题的函数中使用了 Do循环,循环条件是 iSqr(i),不会输出 i的值;只有 i不能被任何一个 i整除的情况下才会输出 i的值,即判断 i是不是素数,只有素数才输出。 【知识模块】 控制结构 26 【正确答案】 B 【试题解析】 本题是一个二重循环,在内循环中输出 “*”,而在每次外循环中 内循环的循环次数均为 i次,即共输出 1。 【知识模块】 控制结构 27 【正确答案】 B 【试题解析】 小题是一个二重循环,最后输出的是内循环总共执行的次数,即1+2+3+4+5=15。 【知识模块】 控制结构