二级vb选择题

Form2.Show End Sub

程序运行时发现刚输入口令时就隐藏了Form1,显示了Form2,程序需要修改。下面修改方案中正确的是( )。 A) 把Form1中Text1文本框及相关程序放到Form2窗体中 B) 把Form1.Hide、Form2.Show两行移到2个End If之间

C) 把If KeyAscii=13 Then 改为 If KeyAscii=\D) 把2个Form2.input.Visible 中的\删去 参考答案:B

【解析】原程序的执行流程为,当按下一个键后,激活KeyPress事件,事件中隐藏Form1和显示From2的语句与判断是否按了回车键的语句是顺序的,即不论按了什么键,都会执行隐藏Form1和显示From2的语句。这两句应该上移到第二个EndIf前面,也就是放在判断是否按了回车键的If语句块中。因此B选项正确。 2. 在窗体上画一个名称为Command1的命令按钮,并编写如下程序:

Function Fun(x) y=0

If x<10 Then y=x Else

y=y+10 End If Fun=y End Function

Private Sub Command1_Click() n=InputBox(\请输入一个数\ n=Val(n) P=Fun(n) Print P End Sub

运行程序,单击命令按钮,将显示输入对话框,如果在对话框中输入100,并单击\确定\按钮,则输出结果为( )。 A) 10 B) 100 C) 110

D) 出错信息 参考答案:A 【解析】程序中输入100,则调用过程为Fun(100),过程Fun中判断参数是否小于10,小于10则将此值赋给y,如果不小于10,则变量y值加10,由于100不小于10,所以y值加10,等于10,并将此值做为函数值返回。因此输出结果为10。

3. 设有以下程序:

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

第 41 页 共 96 页

Else

a=a+x End If Next i Print a End Sub

程序运行后,单击窗体,在输入对话框中依次输入15、24、35、46,输出结果为( )。 A) 100 B) 50 C) 120 D) 70

参考答案:A

【解析】程序的作用是输入的数如果是5的倍数就累加,如果不是就每次加50或与上次是5的倍数的那个数相累加。因此最终a的值是15+15+35+35=100。 4. 窗体的左右两端各有1条直线,名称分别为Line1、Line2;名称为Shape1的圆靠在左边的Line1直线上(见图);另有1个名称为Timer1的计时器控件,其Enabled属性值是True。要求程序运行后,圆每秒向右移动100,当圆遇

到Line2时则停止移动。

为实现上述功能,某人把计时器的Interval属性设置为1000,并编写了如下程序:

Private Sub Timer1_Timer()

For k=Line1.X1 To Line2.X1 Step 100

If Shape1.Left+Shape1.Width

运行程序时发现圆立即移动到了右边的直线处,与题目要求的移动方式不符。为得到与题目要求相符的结果,下面修改方案中正确的是( )。 A) 把计时器的Interval属性设置为1

B) 把For k=Line1.X1 To Line2.X1 Step 100 和 Next k两行删除

C) 把For k=Line1.X1 To Line2.X1 Step 100 改为 For k=Line2.X1 To Line1.X1 Step 100 D) 把If Shape1.Left+Shape1.Width

【解析】在计时器事件中不应再设置步长为100的For循环,应该把For循环去掉,只留下循环体的语句,计时器每秒激发一次,每次判断小球是否移到Line2处,不到就改变自己的Left值即继续移动。因此B正确。 5. 窗体上有1个名称为Command1的命令按钮,事件过程如下:

Private Sub Command1_Click() Dim x%, y%, z%

x=InputBox(\请输入第1个整数\ y=InputBox(\请输入第2个整数\

第 42 页 共 96 页

Do Until x=y

If x>y Then x=x-y Else y=y-x Loop Print x End Sub

运行程序,单击命令按钮,并输入2个整数169和39,则在窗体上显示的内容为( )。 A) 11 B) 13 C) 23 D) 39

参考答案:B

【解析】程序中Do循环比较输入的两个数的大小,把较大的数值减去较小的数值后再与较小的值比较,直到两个数值相等。程序中输入169和39,则x=169-39=130,130>y即130>39,因此x=130-39=91,如此循环x=91-39=52-39=13,此时13>39为假,执行y=y-x=39-13=26,循环y=26-13=13,此时x、y都为13,循环结束,因此窗体上显示为13。

6. 命令按钮Command1的单击事件过程如下: Private Sub Command1_Click() Dim a(10, 10)As Integer x=0

For i=1 To 3 For j=1 To 3

a(i, j)=i * 2 Mod j

If x

执行上述事件过程后,窗体上显示的是( )。 A) 1 B) 2 C) 3 D) 4

参考答案:B

7. 在窗体上画1个命令按钮,并编写如下事件过程:

Private Sub Command1_Click() Dim a(3,3) For m=1 To 3 For n=1 To 3

第 43 页 共 96 页

If n=m Or n=4-m Then a(m,n)=m+n Else

a(m,n)=0 End If

Print a(m,n); Next n Print Next m End Sub

运行程序,单击命令按钮,窗体上显示的内容为( )。

A) 2 0 0 0 4 0 0 0 6 B) 2 0 4 0 4 0 4 0 6

C) 2 3 0 3 4 0 0 0 6 D) 2 0 0 0 4 5 0 5 6 参考答案:B

【解析】根据For循环中的If语句的条件n=m or n=4-m中的n=m首先可以得出a(1,1)=2,a(2,2)=4,a(3,3)=6,其次根据n=4-m的条件可以得出a(1,3)=4,a(2,2)=4,a(3,1)=4。而其他的元素值都为0。因此窗体上输出的三行分别是:2 0 4 ,0 4 0,4 0 6。 8. 设有如下事件过程:

Private Sub Form_Click() Sum=0

For k=1 To 3 If k<=1 Then x=1

ElseIf k<=2 Then x=2

ElseIf k<=3 Then x=3 Else x=4 End If

Sum=Sum+x Next k Print Sum End Sub

程序运行后,单击窗体,输出结果是( )。 A) 9

第 44 页 共 96 页

B) 6 C) 3 D) 10

参考答案:B

【解析】程序执行过程如下:

k=1,k<=1成立,执行x=1,sum=sum+x=1

k=2,k<=2成立,执行x=2,sum=sum+x=1+2=3

k=3,k<=3成立,执行x=3,sum=sum+x=3+3=6,循环结束。因此最后输出Sum的值为6。 9. 在窗体上画一个名称为Command1的命令按钮,然后编写如下程序:

Option Base 1

Private Sub Command1_Click() d=0 c=10

x=Array(10, 12, 21, 32, 24) For i=1 To 5

If x(i)>c Then d=d+x(i) c=x(i) Else

d=d-c End If Next i Print d End Sub

程序运行后,如果单击命令按钮,则在窗体上输出的内容为( )。 A) 89 B) 99 C) 23 D) 77

参考答案:C

【解析】程序中Option Base 1语句指定数组下标下限从1开始。程序通过赋初值定义变量x为含有5个元素的数组,元素值依次为10, 12, 21, 32, 24。For循环的功能是把这5个元素中大于10且大于前一个元素的值累加到变量d中,如果小于等于10或前一个元素则从变量d减去10或前一个元素的值。因此d=0-10+12+21+32-32=23。

10. 窗体上有一个名称为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

第 45 页 共 96 页

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4