VB过程练习题.doc
练习题一、选择题1要想在过程调用后返回两个结果,下面过程定义语句中语法正确的是_。A Sub swap(By Val m,By Val n) B Sub swap(m, By Val n) C Sub swap(m, n) D Sub swap(By Val m, n)2在过程调用中,参数的传递可以分为按值传递和_两种方式。A 按参数传递 B 按数值传递 C 按地址传递 D 按位置传递3Sub过程与Function过程最根本的区别是_。A Sub过程可以直接使用过程名调用,而Function过程不可以B Function过程可以有参数,而Sub过程不可以C 两种过程参数传递方式不同 D Sub过程的过程名不能返回值,而Function过程能通过过程名返回值4在参数传递过程中,使用关键字_来修饰参数,可以使之按值传递。A ByVal B ByRef C Value D reference5可以执行“工具”菜单中的_命令来建立通用过程。A 添加过程 B 通用过程 C 添加模块 D 添加窗体6假定已定义一个过程Public Sub Cir(a As Single, b As Single),则正确的调用语句是_。A,2A Cir 3,8 B Call Cir x, y C Call Cir 2*x, y D Call Cir (3,8, y)7在窗体模块的通用声明中声明变量时,不能使用_关键字。A Dim B Public C Private D Static8. 在窗体上添加一个名称为Command1的命令按钮,再添加两个名称分别为Label1、Label2的标签,然后编写如下程序代码:Private x As IntegerPrivate Sub Command1_Click()a = 6: b = 4Call sub1(a, b)Label1.Caption = aLabel2.Caption = bEnd SubPrivate Sub sub1(ByVal x As Integer, ByVal y As Integer)a = x * xb = y * yEnd Sub程序运行后单击命令按钮,则两个标签中显示的内容分别是_。A 36和4 B 6和4 C 36和8 D 6和89以下叙述中错误的是_。A 不能在标准模块中定义Static型变量。B 语句Dim a, b As Integer声明了两个整形变量C 窗体级变量必须先声明后使用 D 在事件过程或通用过程内定义的变量是局部变量10设有如下通用过程:Public Function fun(x As Integer) Dim y As Integer x = 30: y = 4 fun = x * yEnd Function在窗体上添加一个名称为Command1的命令按钮,然后编写如下事件过程:Private Sub Command1_Click() Static x As Integer x = 20: y = 10 y = fun(x) Print x; yEnd Sub程序运行后,如果单击命令按钮,则在窗体上显示的内容是_。A 20 10 B 30 10 C 20 4 D 30 12011以下叙述中,不正确的是_。A 过程中的形式参数是局部变量。B 不同的过程中可以使用相同名字的局部变量。C 在一个过程内定义的变量只在本过程范围内有效。 D 在一个过程内的局部变量与全局变量同名时,起作用的是全局变量。12.以下关于过程的叙述中,错误的是_。A 函数过程的返回值可以有多个。B 事件过程是由某个事件触发而执行的过程。C 不能在事件过程中定义通用过程。 D 可以在事件过程中调用过程。13以下关于过程参数的叙述中,错误的是_。A 按值传递参数,形参和实参的类型可以不同,只要相容即可。B 若形参是按地址传递的参数,形参和实参也能以按值传递方式进行形实结合。C 形参的数据类型如果是String,它可以是定长的,但在调用时对应的实参只能是定长的。 D 在过程被调用之前,形参未被分配内存,只是说明形参的类型和在过程中的作用。14假设有如下过程:Public Sub sfun(x As Single, y As Single) t = x x = t / y y = t Mod yEnd Sub在窗体中添加一个命令按钮(名为Command1),编写如下事件过程:Private Sub Command1_Click() Dim a As Single Dim b As Single a = 5: b = 4 Call sfun(a, b) MsgBox a & Chr(10) + Chr(10) & bEnd Sub打开窗体运行后,单击命令按钮,消息框中有两行输出,内容分别为_。A 1和1 B 1.25和1 C 1.25和4 D 5和415. 使用Function语句定义一个函数过程,其返回值的类型为_。A 只能是符号常量B 是除数组之外的简单数据类型C 可在调用时由运行过程决定。 D 由函数定义时As子句声明16. 为达到把a、b中的值交换后输出的目的,某人编程如下:Private Sub Command1_Click() a% = 10: b% = 20 Call swap(a, b) Print a, bEnd SubPrivate Sub swap(ByVal a As Integer, ByVal b As Integer)c = a: a = b: b = cEnd Sub在运行时发现输出结果错了,需要修改。下面列出的错误原因和修改方案中正确的是_。A 输出语句错误,应改为:“Print "a", "b"”B 调用swap过程的语句错误,应改为“Call swap a,b”C过程的形式参数有错,应改为:“swap(ByRef a As Integer,ByRef b As Integer)” Dswap中3条赋值语句的顺序是错误的,应改为“a=b:b=c:c=a” 17下面程序的输出结果是_:Private Sub proc(ch As String) s = " " For k = Len(ch) To 1 Step -1 s = s & Mid(ch, k, 1) Next k ch = sEnd SubPrivate Sub Command1_Click() ch$ = "ABCDEF" proc ch Print chEnd SubA ABCDEF B A C FEDCBA D F18在窗体上绘制一个名为Command1的命令按钮和两个名为Label1、Label2的标签,然后编写如下程序:_Private x As IntegerPrivate Sub proc(a As Integer, ByVal b As Integer) x = a * a y = b + bEnd SubPrivate Sub Command1_Click() x = 5: y = 3 Call proc(x, y) Label1.Caption = x Label2.Caption = yEnd SubA 25和3 B5和3 C 25和6 D 5和619. 有如下函数:Function fun(a As Integer, n As Integer) As Integer Dim m As Integer While a >= n a = a - n m = m + 1 Wend fun = mEnd Function该函数的返回值是_。Aa加b的和Ba减n的差Ca乘以n的乘积Da除以n的商(不含小数部分)20以下是一个能返回数组a中最大数的函数过程代码:Function maxval(a() As Integer) As Integer Dim max% max = 1 For i = 2 To 10 If a(i) > a(max) Then max = k Next i maxval = maxEnd Function程序运行时,发现函数过程的返回值是错的需要修改,下面的修改方案中正确的是_。A 语句“max = 1”应改为“max = a(1)”B 语句“For i = 2 To 10”应改为“For i = 1 To 10”C if语句“max = k”应改为“max = a(k)”D 语句“maxval = max ”应改为“maxval = a(max)”二、判断题1Sub过程中不能嵌套定义Sub过程。( )2事件过程可以像通用过程一样同用户定义过程名。( )3函数过程形参的类型与函数返回值的类型没有关系。( )4在函数过程中,过程的返回值可以有多个。( )5用数组作为过程的参数时,既能以传值方式传递,也能以传地址方式传递。( )6形式参数是数组时,不能进行维数说明,只能以一对空括号表示,且括号不能省略。( )7形式参数只在所在过程中有效,因此属于局部变量。( )8在不同的模块中可以声明定义相同名字的模块级变量,它们代表不同的对象,而且作用域范围不同,因此互不干扰。( )9过程名前加Static,表示该过程内的局部变量都是静态变量。( )10事件过程有无参数,由VB所提供的具体事件本身所决定,用户也可以添加。( )11过程中引用的变量,总是同名变量中作用范围最小的那一个。( )12Sub子过程的过程名不能和同一级别的变量重名。( )13如果形参的数据类型是String,它只能是定长的,但在调用时对应的实参可以是定长的。( )14函数只能出现在表达式中,其功能是求得函数的返回值。( )15按值传递参数,形参和实参的类型可以不同,只要相容即可。( )16若形参是按地址传递的参数,形参和实参不能以按值传递方式进行形实结合。( )17当实参是常量、表达式形式,则不论其对应形参前定义成什么方式,系统都强制按值传递参数。( )18在标准模块中定义的全局变量,在本应用程序的任何一个过程中都可直接用它的变量名来访问。( )19当访问其他窗体模块中定义的全局变量时,用定义它的窗体模块名作为全局变量的前缀或可以直接用它的变量名来访问它,都能正确地引用。( )20窗体中凡被声明为Private的变量只能在某个指定的过程中使用。( )三、填空题 1窗体事件过程名由“_”、下划线和事件名组成。2按传地址方式传递参数时,要求实参必须是_,此时实参与形参变量共有同一个存储单元。 3运行以下程序,输出的结果为_。Private Function jc(x As Integer) As Long Dim i As Integer jc = 1 For i = 1 To x jc =jc * i Next i End FunctionPrivate Sub Form_Click() Dim he as Long he = jc(5)+ jc(3) Print heEnd Sub4以下是一窗体的单击事件代码:Private Sub Form_Click() Static count% count = count + 1 Print "单击窗体" count; "次"End Sub第3次单击窗体后,count的值为_。5运行以下程序,输出的结果为_。Private Function fact(n As Integer) As Integer fact = 1 Do While n > 0 fact = fact * n n = n - 1 LoopEnd FunctionPrivate Sub Form_Click() Dim sum As Integer, i As Integer For i = 4 To 1 Step -1 sum = sum + fact(i) Next Print "Sum=" sumEnd Sub6下面程序运行后,单击命令按钮,窗体上输出的结果是:2 3 和_。Dim x As Integer, y As IntegerPrivate Function f(x As Integer) Dim y As Integer x = x + 2 f = x + yEnd FunctionPrivate Sub p(ByVal z As Integer) x = y + zEnd SubPrivate Sub Command1_Click() x = 1: y = 1 Call p(x) z = f(y) Print x; y; zEnd Sub7在窗体中添加一个命令按钮(名为Command1)和一个文本框(名为Text1),编写事件代码如下:Private Sub p1(a As Integer, b As Integer, c As Integer) c = a + bEnd SubPrivate Sub Command1_Click() Dim x As Integer, y As Integer, z As Integer x = 5: y = 7: z = 0 Text1.Text = "" Call p1(x, y, z) Text1.Text = zEnd Sub运行程序,单击命令按钮,文本框中显示的内容是_。8在窗体上添加一个文本框(名为Text1)和一个命令按钮(名为Command1),编写如下的事件过程:Private Sub Command1_Click() Dim arr(5) As Integer For i = 1 To 5 arr(i) = i Next m = 20 Call fun1(arr, m) Text1.Text = mEnd SubPublic Sub fun1(a() As Integer, ByVal x As Integer) For i = 1 To UBound(a) x = x + a(i) NextEnd Sub运行程序,单击命令按钮,文本框中显示的内容是_。9下面的程序执行时,可以从键盘输入一个正整数,然后把该数的每位数字按逆序输出,例如:输入5678,则输出8765,输入1000,则输出0001,请填空。Private Sub Command1_Click() Dim x As Integer x = InputBox("请输入一个正整数") While x >= _ Print x Mod 10; x = x 10 Wend Print xEnd Sub10设有以下函数过程:Function fun(m As Integer) As Integer Dim k As Integer, sum As Integer sum = 0 For k = m To 1Step -2 sum =sum+k Next k fun=sumEnd Function若在程序中用语句s=fun(10)调用此函数,则s的值为_。参考答案一、单项选择题1C2C3D4A5C6A7D8B9B10D11D12A13C14B15D16C17C18A19D20D二、判断题1对2错3对4错5错6对7对8对9对10错11对12对13错14对15对16错17对18对19错20错三、填空题1Form 2变量名312643 5Sum=2463712 820 910 1030