二级vb选择题 下载本文

以下叙述中正确的是( )。

A) 每次执行此事件过程时,flag的初始值均为0 B) flag的值只可能取0或1

C) 程序执行后,文本框中的文字每5秒改变一次颜色 D) 程序有逻辑错误,Else分支总也不能被执行 参考答案:C

【解析】程序中flag被定义为Static变量,它的值只在第一次执行事件过程时为0,以后每次执行计时器事件过程它的值都会保留上次过程中运算后的值,之后它的值是1或-1。文本框控件的ForeColor属性表示文本框中文字的颜色,计时器控件的Interval属性为5000,即计时器间隔为5秒钟一次,每次调用就会交替改变文本框中文字的颜色。因此C选项正确。

11. 现有语句: y=IIf(x>0, x Mod 3, 0) 设x=10,则y的值是( )。 A) 0 B) 1 C) 3

D) 语句有错 参考答案:B

【解析】IIF是条件函数,它的语法格式是:

IIf(<条件表达式>,<表达式为True时的取值>,<表达式为False时的取值>),本题中,x=10时,条件表达式x>0的值为True,执行x Mod 3 即10 Mod 3 结果为1。故选B。

12. 设x是整型变量,与函数IIf(x>0,-x, x)有相同结果的代数式是( )。 A) |x| B) -|x| C) x D) -x

参考答案:B

【解析】IIF函数是条件函数,本题的含义是如果x>0条件成立,即x为正数,就返回-x,即x的负数,否则返回x(它本身),两种情况都是返回负数。根据这一点,选项B符合要求。故B选项正确。 13. 计算下面分段函数的正确语句是( )。

A) y=IIf(x>0, x+1, IIf(x<0, x-1, 0)) B) y=IIf(x=0, 0, IIf(x>0, x-1, x+1)) C) y=IIf(x>0, x+1, IIf(x<0, 0, x-1)) D) y=IIf(x=0, 0, x-1, x+1) 参考答案:A

【解析】IIF是条件函数,它的语法格式是:

IIf(<条件表达式>,<表达式为True时的取值>,<表达式为False时的取值>)

B选项中,内层的IIF函数中,当x>0时,x+1,否则x-1,所以应该是IIf(x>0,x+1,x-1)。 C选项中,内层的IIf函数中,当x<0时,x-1,否则0,所以应该是IIf(x<0,x-1,0)。 D选项中IIf函数中有4个参数不对,应该有3个参数。故B、C、D选项均错误,A选项正确。 14. 设有下面的语句:

Print IIf(x>0, 1, IIf(x<0,-1, 0)) 与此语句输出结果不同的程序段是( )。 A) If x>0 Then

第 46 页 共 96 页

x=1

ElseIf x<0 Then x=-1 End If Print x B) If x>0 Then

Print 1

ElseIf x<0 Then Print-1 Else Print 0 End If

C) Select Case x

Case Is>0 Print 1 Case Is<0 Print-1 Case Else Print 0 End Select

D) If x<>0 Then

If x>0 Then Print 1 ElseIf x<0 Then Print-1 Else Print 0 End If

参考答案:D

【解析】IIF函数可用来执行简单的条件判断操作,它是If…Then…Else结构的简写版本,格式如下:

Result=IIf(条件,True部分,Flase部分) 因此Print IIf(x>0,1,IIf(x<0,-1,0))可描述为:x>0时输出1,x不大于0时,如果x<0则输出-1否则输出0。D)选项缺少End If语句程序段无法正确运行。 15. 现有如下语句:

x=IIf(a>50, Int(a\\3), a Mod 2) 当a=52时,x的值是( )。 A) 0 B) 1 C) 17 D) 18

参考答案:C

【解析】首先计算Int(a\\3)即Int(52\\3)=Int(17)=17 ,52 MOD 2 结果为0。

再计算IIf(52>50, 17, 0),52>50结果为True,所以IIF函数返回17,则x值为17,故选C。

16. 设x为一整型变量,且情况语句的开始为:Select Case x,则不符合语法规则的Case子句是( )。 A) Case Is>20 B) Case 1 To 10

C) Case 0

第 47 页 共 96 页

D) Case 2, 3, 4 参考答案:C

【解析】Select Case 语句中表达式的形式可以是:常量或变量 ;若干符合条件的值用\,\隔开;表达式1 to 表达式2 ;Is 关系表达式。

本题中选项A、B和D都符合语法规则。

选项C中Is关系表达式语法错误,它可以是Is>0 或Is<20,但不能是组合的0

Private Sub Command1_Click() x=UCase(InputBox(\输入:\ Select Case x

Case \

Print \考核通过!\ Case \

Print \考核不通过 !\ Case Else

Print \输入数据不合法!\ End Select End Sub

执行程序,在输入框中输入字母\,则以下叙述中正确的是( )。 A) 程序运行错

B) 在窗体上显示\考核通过!\C) 在窗体上显示\考核不通过 !\D) 在窗体上显示\输入数据不合法!\ 参考答案:B

【解析】程序中Ucase函数将输入的字母转换为大写,然后通过Select多分支控制语句选择输出不同信息,当输入字母在\到\之间时,显示\考核通过!\,输入的是\时显示\考核不通过!\,如果输入的是\到\之外的其他字符则显示\输入数据不合法!\。程序中输入字母\,因此会显示\考核通过!\。 18. 窗体上有1个名称为Command1的命令按钮,事件过程如下:

Private Sub Command1_Click()

Dim num As Integer, x As Integer

num=Val(InputBox(\请输入一个正整数\ Select Case num Case Is>100 x=x+num Case Is<90 x=num Case Else

x=x * num End Select Print x; End Sub

运行程序,并在三次单击命令按钮时,分别输入正整数100、90和60,则窗体上显示的内容为( )。 A) 0 0 0 B) 0 0 60 C) 0 90 0 D) 100 0 60

第 48 页 共 96 页

参考答案:B

【解析】按钮事件中变量x为过程局部变量,第1次输入100时,Select语句执行Case Else分支x=x*num=0*100=0。第二次输入90时,Select语句执行Case Else分支x=x*num=0*90=0。第三次输入60时Select语句执行Case Is<90分支x=num=60。因此窗体上显示为0 0 60。

19. 窗体上有一个由两个文本框组成的控件数组,名称为Text1,并有如下事件过程:

Private Sub Text1_Change(Index As Integer) Select Case Index Case 0

Text1(1).FontSize=Text1(0).FontSize * 2 Text1(1).Text=Text1(0).Text Case 1

Text1(0).FontSize=Text1(1).FontSize / 2 Text1(0).Text=Text1(1).Text Case Else

MsgBox \执行Else分支\ End Select End Sub

关于上述程序,以下叙述中错误的是( )。 A) Index用于标识数组元素

B) 本程序中Case Else分支的语句永远不会被执行

C) 向任何一个文本框输入字符,都会在另一个文本框中显示该字符 D) 下标为0的文本框中显示的字符尺寸将越来越小 参考答案:D

【解析】控件数组的Index属性作为控件数组的下标,用于标识数组元素。题目中程序功能是当任一个文本框内容改变时设置第2个文本框的字号是第1个文本框字号的2倍,同时两个文本框显示相同文字。假如用户没有使用控件数组的Index属性的默认值程序将执行到Else分支。 20. 在窗体上画一个命令按钮,然后编写如下事件过程:

Private Sub Command1_Click() Dim I, Num Randomize Do

For I=1 To 1000

Num=Int(Rnd * 100) Print Num; Select Case Num Case 12

Exit For Case 58 Exit Do

Case 65, 68, 92 End End Select Next I Loop End Sub

上述事件过程执行后,下列描述中正确的是( )。

第 49 页 共 96 页

A) Do循环执行的次数为1000次

B) 在For循环中产生的随机数小于或等于100 C) 当所产生的随机数为12时结束所有循环

D) 当所产生的随机数为65、68或92时窗体关闭、程序结束 参考答案:D

【解析】程序Do循环中嵌套了For循环,Do循环没有设置结束条件,而是在For循环体中的Select语句中设置了退出Do循环和For循环及结束程序的分支,因此Do循环的次数无法确定。随机函数Rnd产生[0,1)之间的一个数,包括0但不包含1,因此Rnd*100的范围是大于等于0小于100。随机数为65、68或92时结束程序关闭窗体,为58时退出Do循环,为12时退出For循环进入下一次Do循环。 21. 有如下程序:

Private Sub Form_Click()

Dim s As Integer, p As Integer p=1

For i=1 To 4 For j=1 To i s=s+j Next j p=p * s Next i Print p End Sub

程序运行后,单击窗体,则输出结果是( )。 A) 90 B) 180 C) 400 D) 800

参考答案:D

22. 现有如下程序:

Private Sub Command1_Click() s=0

For i=1 To 5 s=s+f(5+i) Next Print s End Sub

Public Function f(x As Integer) If x>=10 Then t=x+1 Else

第 50 页 共 96 页