二级vb选择题 下载本文

参考答案:C

【解析】题目中变量x定义为Static,即每次进入Timer事件过程时,x都会保留上次的值,从而实现每执行一次Timer1_Timer事件过程x的值都在原有基础上增加1。程序中判断调用Timer事件过程10次后,重置Shape1的top值为0,即回到起点。控件Shape1的Top属性是距离窗体顶的位置,数值越大距离越远,因此Shape1会由上向下移动。

25.有如下过程代码:

Sub var_dim()

Static numa As Integer Dim numb As Integer numa=numa+2 numb=numb+1 print numa;numb End Sub

连续3次调用var_dim过程,第3次调用时的输出是( )。 A) 2 1 B) 2 3 C) 6 1 D) 6 3

参考答案:C

【解析】Static声明的变量为静态变量,静态变量在程序运行期间,每次进入过程时都会保留上次的值,而普通变量不会保留。numa定义为静态变量,因此每次调用都会保留结果,3次调用过程,numa的值为6,numb的值为1。

27.窗体上有一个名称为Text1的文本框;一个名称为Timer1的计时器控件,其Interval属性值为5000,Enabled属性值是True。Timer1的事件过程如下:

Private Sub Timer1_Timer() Static flag As Integer If flag=0 Then flag=1 flag=-flag If flag=1 Then

Text1.ForeColor=&HFF& '&HFF&为红色 Else

Text1.ForeColor=&HC000& '&HC000&为绿色 End If End Sub

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

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

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

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

Private Sub Command1_Click()

第 21 页 共 96 页

Dim str1 As String, str2 As String str1=InputBox(\输入一个字符串\ subf str1, str2 Print str2 End Sub

Sub subf(s1 As String, s2 As String) Dim temp As String Static i As Integer i=i+1

temp=Mid(s1, i, 1)

If temp<>\, s2 s2=s2 & temp End Sub

程序运行后,单击命令按钮Command1,且输入\,则输出结果为( )。 A) afbecd B) cdbeaf C) fedcba D) adbecf

参考答案:C

【解析】程序中过程subf的两个参数都默认按址传递,其内部定义的变量i为Static即静态变量,在过程调用时它会保留上次的值。这个过程的功能是通过递归调用自己依次取出参数1中即s1中的字符连接在s2的尾部,即使s1的字符串倒序后存入s2中。程序中输入了abcdef,则输出结果为fecdba。 29.编写如下程序:

Private Sub Command1_Click()

Dim m As Integer, n As Integer n=2

For m=1 To 3

Print proc(n); Next m End Sub

Function proc(i As Integer) Dim a As Integer Static b As Integer a=a+1 b=b+1

proc=a * b+i End Function

程序运行后,单击命令按钮Command1,输出结果为( )。 A) 3 3 3 B) 3 4 5 C) 3 5 6 D) 1 2 3 参考答案:B

【解析】变量b定义为Static即静态变量,它的特点是每次调用都会保留上次的值。程序click事件中调用了3次proc(n),即proc(2):

第一次,a=a+1=0+1=1, b=b+1=0+1=1 , proc=a*b+i=1*1+2=3;

第 22 页 共 96 页

第二次,a=a+1=0+1=1, b=b+1=1+1=2 , proc=a*b+i=1*2+2=4; 第三次,a=a+1=0+1=1, b=b+1=2+1=3 , proc=a*b+i=1*3+2=5; 因此输出的结果为3 4 5。

30.在某个事件过程中定义的变量是( )。 A) 局部变量 B) 窗体级变量 C) 全局变量 D) 模块变量 参考答案:A 【解析】在某个事件过程中定义的变量是局部变量;在窗体或标准模块中用Dim或Private定义的变量是窗体级或模块级变量;在窗体或标准模块中用Public定义的变量是全局变量。故选A。 31.以下关于变量作用域的叙述中错误的是( )。

A) 在窗体模块的声明部分声明的Private变量,其作用域是窗体内的所有过程 B) 在标准模块的声明部分声明的Private变量,其作用域是模块内的所有过程 C) 在窗体模块的声明部分声明的Pubilc变量,其作用域是本窗体的所有过程 D) 在标准模块的声明部分声明的Pubilc变量,其作用域是应用程序的所有过程 参考答案:C

【解析】在窗体模块中声明的Public变量,其作用域是应用程序的所有过程,故C选项错误。

但用时注意:变量名前要加窗体名,否则不能被其他模块的过程引用,只能被本模块内的所有过程引用。 32.现有如下语句:

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。 34.窗体上有一个名称为Command1的命令按钮,一个名称为Text1的文本框。编写如下程序:

Private Sub Command1_Click() Dim x As Integer

x=Val(InputBox(\输入数据\ Text1=Str(x+fun(x)+fun(x)) End Sub

Private Function fun(ByRef n As Integer) If n Mod 3=0 Then n=n+n Else

n=n * n End If fun=n End Function

对于上述程序,以下叙述中错误的是( )。

A) 语句 fun=n 有错,因为n是整型,fun没有定义类型 B) 运行程序,输入值为5时,文本框中显示655

第 23 页 共 96 页

C) 运行程序,输入值为6时,文本框中显示42 D) ByRef表示参数按址传递 参考答案:A

【解析】过程fun的功能是将传入的值运算后返回,当传入数值为3的整数倍时返回该值的2倍,否则返回该值的平方。过程Fun的参数指定为ByRef方式,即按址传递,因此会影响实参的值。Str函数是将数值转换为字符串。过程fun定义时没有指明返回类型因此默认为Variant类型,它可以表示任何值,因此A)选项的说法不正确。 35.要计算x的平方根并放入变量y,正确的语句是( )。 A) y=Exp(x) B) y=Sgn(x) C) y=Int(x) D) y=Sqr(x) 参考答案:D

x

【解析】Exp函数是e为底的指数函数,即e;Sgn是符号函数,正数返回1,负数返回-1,0返回0;Int是取整函数,取<=N 的最大整数;Sqr是求平方根函数。故D选项正确。

36.窗体上有两个名称分别为Text1、Text2的文本框。Text1的KeyUp事件过程如下:

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) Dim c As String

c=UCase(Chr(KeyCode)) Text2.Text=Chr(Asc(c)+2) End Sub

当向文本框Text1中输入小写字母a时,文本框Text2中显示的是( )。 A) A B) a C) C D) c

参考答案:C

【解析】KeyDown和KeyUp事件的KeyCode参数返回的是\键\,即按字母\和\时得到的KeyCode的值是相同的,都是&H41。因此程序中对输入\时得到的KeyCode,经Chr函数转为字符后为\,经Ucase函数转换仍为\,所以变量c中的字符为\。Asc(c)将返回变量c中的第一个字符的ASCII,加2后,再由Chr函数转为字符即为\后面的第2个字符,即\。所以答案应为选项C。

37.在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click() c=1234

c1=Trim(Str(c)) For i=1 To 4 Print Next End Sub

程序运行后,单击命令按钮,要求在窗体上显示如下内容: 1 12 123 1234

则在横线处应填入的内容为( )。 A) Right(c1, i) B) Left(c1, i)

第 24 页 共 96 页

C) Mid(c1, i, 1) D) Mid(c1, i, i) 参考答案:B

【解析】程序中使用Str(c)将数值1234转换成为一个字符串\,又使用Trim函数去除了字符串首尾可能存在的空格,保证了字符串中只有1、2、3、4这4个字符。在For循环中从左边递次输出这些字符就需要使用Left()函数,Left是左部截取函数,可以截取字符串左边指定个数的字符串,以Left(c1, i)的形式即可每次循环取出期望的字符串。因此答案为B。

第4章 常用标准控件

1.如果改变驱动器列表框的Drive属性,则将触发的事件是( )。 A) Change B) Scroll C) KeyDown D) KeyUp

参考答案:A

【解析】如果改变驱动器列表框的Driv属性,则将触发Change事件。

2.窗体上有1个名称为Text1的文本框,1个名称为Label1的标签。程序运行后,如果在文本框中输入信息,则立即在标签中显示相同的内容。以下可以实现上述操作的事件过程为( )。 A) Private Sub Label1_Click()

Label1.Caption=Text1.Text End Sub

B) Private Sub Label1_Change()

Label1.Caption=Text1.Text End Sub

C) Private Sub Text1_Click()

Label1.Caption=Text1.Text End Sub

D) Private Sub Text1_Change()

Label1.Caption=Text1.Text End Sub

参考答案:D

【解析】题意是在文本框中输入信息,会影响标签上显示的内容,所以触发的是文本框Text1的事件,要在文本框Text1的事件过程中写代码,因此排除A、B选项。又因为标签上显示的内容会随着文本框中输入信息变化,因此要在Text1的Change事件过程写代码。故D选项正确。

3. 为了使标签控件在显示其内容时不覆盖其背景内容,需进行设置的属性为( )。 A) BackColor B) BorderStyle C) ForeColor D) BackStyle 参考答案:D

【解析】标签控件的BackStyle属性值为0时,标签为透明的,不会遮住背景内容,BackStyle属性值为1时,标签将覆盖背景。 4. Visual Basic控件一般都规定一个默认属性,在引用这样的属性时,只写对象名而不必给出属性名。默认属

第 25 页 共 96 页