二级vb选择题 下载本文

Private Sub Command1_Click()

a=a+5:b=b+5:x=x+5:y=y+5 Print a; b; x; y End Sub

运行程序,单击窗体上的命令按钮,则在窗体上显示的是( )。 A) 5 5 15 5 B) 7 5 15 25 C) 7 8 15 5 D) 7 5 15 5 参考答案:D

解析】程序在模块文件中定义x为整型全局变量,在整个工程中都起作用,而y定义为整型私有变量,只能在本模块文件中起作用。在窗体文件中变量a在本窗体文本中起作用,窗体加载事件中定义的变量b和没有声明的变量y,只在本事件过程起作用。程序窗体加载时,对后边有影响的变量值为a为2,x为10,没有指定初值的变量值默认为0,因此单击命令按钮后,a=a+5=7,b=b+5=5,x=x+5=15,y=y+5=5,结果输出7 5 15 5。

19.设工程文件包含两个窗体文件Form1.frm、Form2.frm及一个标准模块文件Module1.bas。两个窗体上分别只有一个名称为Command1的命令按钮。

Form1的代码如下: Public x As Integer Private Sub Form_Load() x=1 y=5 End Sub

Private Sub Command1_Click() Form2.Show End Sub

Form2的代码如下:

Private Sub Command1_Click() Print Form1.x, y End Sub

Module1的代码如下: Public y As Integer

运行以上程序,单击Form1的命令按钮Command1,则显示Form2;再单击Form2上的命令按钮Command1,则窗体上显示的是( )。 A) 1 5 B) 0 5 C) 0 0 D) 程序有错 参考答案:A

【解析】在Form1窗体模块中x被定义为全局变量,这使得它的值可以在其他模块中通过\过程名.变量名\的形式被引用。而变量y在标准模块中被定义为全局变量,则它可以在工程的每个模块,每个过程中使用。因此程序运行时,x赋值为1,y赋值为5,它们的值都可以在Form2中引用。

20.在窗体上画一个名称为Command1的命令按钮,再画两个名称分别为Label1、Label2的标签,然后编写如下程序代码:

Private X As Integer

Private Sub Command1_Click()

第 16 页 共 96 页

X=5: Y=3

Call proc(X, Y) Label1.Caption=X Label2.Caption=Y End Sub

Private Sub proc(a As Integer, ByVal b As Integer) X=a * a Y=b+b End Sub

程序运行后,单击命令按钮,则两个标签中显示的内容分别是( )。 A) 25和3 B) 5和3 C) 25和6 D) 5和6

参考答案:A

21.标准模块中有如下程序代码:

Public x As Integer,y As Integer Sub var_pub() x=10∶y=20 End Sub

在窗体上有1个命令按钮,并有如下事件过程: Private Sub Command1_Click() Dim x As Integer Call var_pub x=x+100 y=y+100 Print x;y End Sub

运行程序后单击命令按钮,窗体上显示的是( )。 A) 100 100 B) 100 120 C) 110 100 D) 110 120 参考答案:B

【解析】在标准模块中定义的使用Public定义的变量是全局变量,全局变量可以在工程的每个模块、每个过程中使用。如果在过程中有与全局变量同名的过程变量则优先使用过程变量。在命令按钮事件中定义了局部

第 17 页 共 96 页

变量x,与全局变量同名,因此在此事件中使用局部变量,而变量y在此过程中没有定义,则仍使用全局变量。因此输出时x值为100,y值为120。

22.窗体上有一个Text1文本框,一个Command1命令按钮,并有以下程序:

Private Sub command1_Click() Dim n

If Text1.Text<>\ n=n+1

Print \口令输入错误\次\ End If End Sub

希望程序运行时得到左图所示的效果,即:输入口令,单击\确认口令\命令按钮,若输入

的口令不是\,则在窗体上显示

输入错误口令的次数。但上面的程序实际显示的是右图所示的效果,程序需要修改。下面修改方案中正确的是

( )。

A) 在Dim n语句的下面添加一句:n=0

B) 把 Print \口令输入错误\次\改为 Print \口令输入错误\+n+\次\

C) 把 Print \口令输入错误\次\改为 Print \口令输入错误\次\D) 把Dim n 改为 Static n 参考答案:D

【解析】本题考查的是动态变量与静态变量。原来的程序中无法使变量n的值保持到下一次的使用,只有D选项符合要求,将n定义为静态局部变量,在程序执行到该对象的声明处时被首次初始化,每次执行后n的值都会被保存到内存中,所以答案D是正确的;而A选项只是对n赋初值,所以A选项没有意义;B选项和C选项都没有达到改进的目的。

23.窗体上有1个名称为Command1的命令按钮,事件过程及函数过程如下:

Private Sub Command1_Click() Dim p As Integer p=m(1)+m(2)+m(3) Print p End Sub

Private Function m(n As Integer)As Integer Static s As Integer For i=1 To n s=s+1 Next m=s

第 18 页 共 96 页

End Function

运行程序,第2次单击命令按钮Command1时的输出结果为( )。 A) 6 B) 10 C) 16 D) 28

参考答案:D

【解析】在过程m中s被定义为静态变量,因此它的值只在第一次调用过程时初始化,以后再调用都不再初始化,而是保留之前的值。m过程的功能是根据参数值累加,因此第1次单击时,m(1)+m(2)+m(3)=1+3+6=10,此时变量s的值,即过程m的值为6,第2次单击时,m(1)+m(2)+m(3)=7+9+12=28。因此答案为D。 24.窗体上有名称为Command1的命令按钮,名称分别为Label1、Label2、Label3的标签。编写如下程序:

Private x As Integer

Private Sub Command1_Click() Static y As Integer Dim z As Integer n=5 z=z+n y=y+n x=x+y Label1=x Label2=y Label3=z End Sub

运行程序,连续3次单击命令按钮后,3个标签中分别显示的是( )。 A) 5 5 5 B) 15 10 5 C) 15 15 15 D) 30 15 5 参考答案:D

【解析】变量x被定义为窗体模块变量,它在整个窗体模块中有效。Click事件中变量y定义为Static,即静态变量,它的值在每调用过程时都会保留上次的值。每次单击按钮标签中显示的值即x、y、z的值是:

第一次,n=5,z=z+n=0+5=5,y=y+n=0+5=5,x=x+y=0+5=5; 第二次,n=5,z=z+n=0+5=5,y=y+n=5+5=10,x=x+y=5+10=15; 第三次,n=5,z=z+n=0+5=5,y=y+n=10+5=15,x=x+y=15+15=30; 因此3次单击命令按钮后,3个标签中分别显示的是30 15 5。 25.

窗体上有三个水平滚动条,名称分别为HSRed、HSGreen和HSBlue,取值范围均是0~255,代表颜色的三种基色。改变滚动框的位置,可以改变三种基色的值,从而改变窗体的背景色,如下图所示。

程序代码如下:

第 19 页 共 96 页

Dim color(3)As Integer Private Sub Form_Load() Call fill(color()) End Sub

Private Sub fill(c() As Integer)

Form1.BackColor=RGB(c(1),c(2),c(3)) End Sub

Private Sub HSRed_Change() color(1)=HSRed.Value Call fill(color()) End Sub

Private Sub HSGreen_Change() color(2)=HSGreen.Value Call fill(color()) End Sub

Private Sub HSBlue_Change() color(3)=HSBlue.Value Call fill(color()) End Sub

关于以上程序,如下叙述中错误的是( )。 A) color是窗体级整型数组

B) 改变任何一个滚动条滚动框的位置,窗体的背景色将立刻随之改变

C) 3个滚动条Change事件过程中只设置了一个color数组元素的值,调用fill过程失败 D) fill 函数定义中的形式参数是数组型参数 参考答案:C

【解析】当用Dim语句定义数组时,该语句把数值数组中的全部元素都初始化为0,而把字符串数组中的全部元素都初始化为空串。因此color数组中的元素初始值都为0,没有空值,过程调用不会失败。C选项叙述错。

26.窗体上有一个名称为Timer1的计时器控件,一个名称为Shape1的形状控件,其Shape属性值为3(Circle)。编写程序如下:

Private Sub Form_Load() Shape1.Top=0

Timer1.Interval=100 End Sub

Private Sub Timer1_Timer() Static x As Integer

Shape1.Top=Shape1.Top+100 x=x+1

If x Mod 10=0 Then Shape1.Top=0 End If End Sub

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

A) 每执行一次Timer1_Timer事件过程,x的值都在原有基础上增加1 B) Shape1每移动10次回到起点,重新开始 C) 窗体上的Shape1由下而上移动 D) Shape1每次移动100

第 20 页 共 96 页