[计算机类试卷]国家二级VB机试(过程)模拟试卷2及答案与解析.doc

上传人:jobexamine331 文档编号:500113 上传时间:2018-11-30 格式:DOC 页数:26 大小:98.50KB
下载 相关 举报
[计算机类试卷]国家二级VB机试(过程)模拟试卷2及答案与解析.doc_第1页
第1页 / 共26页
[计算机类试卷]国家二级VB机试(过程)模拟试卷2及答案与解析.doc_第2页
第2页 / 共26页
[计算机类试卷]国家二级VB机试(过程)模拟试卷2及答案与解析.doc_第3页
第3页 / 共26页
[计算机类试卷]国家二级VB机试(过程)模拟试卷2及答案与解析.doc_第4页
第4页 / 共26页
[计算机类试卷]国家二级VB机试(过程)模拟试卷2及答案与解析.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、国家二级 VB机试(过程)模拟试卷 2及答案与解析 一、选择题 1 以下关于 VB特点的叙述中,错误的是 ( )。 ( A) VB采用事件驱动的编程机制 ( B) VB程序能够以解释方式运行 ( C) VB程序能够以编译方式运行 ( D) VB程序总是从 Form_load事件过程开始执行 2 如果把程序的启动对象设置为 Sub Main,则 Sub Main过程 ( )。 ( A)只能写在 Form1 窗体中代码的最前面 ( B)可以写在 Form1窗体中代码的任何位置 ( C)只能写在某个标准模块的代码中 ( D)可以写在任何窗体或标准模块的代码中 3 设窗体上有 3个图像框: Image

2、1、 Image2、 Image3,并有下面的程序代码: Private Sub Form_Load() Image1 Picture=LoadPicture(“LEAF bmp“) Image2 Picture=LoadPicture(“OPEN bmp“) Image3 Visible=False End Sub Private Sub Image1_Click() Image2 Picture=Image1 Picture End Sub Private Sub Image2_Click() Image3 Picture=Image2 Picture Image2 Picture=Ima

3、ge1 Picture Image1 Picture=Image3 Picture End Sub 在程序运行期间单击 Image2,则在窗体上看到的结果是 ( )。 ( A)在 Image3中显示 Image2中的图片 ( B) nnage1,ImageZ中原有图片被交换了 ( C) Image1、 Image2 中都是原来 Imegel中的图片 ( D) Image1、 Image2 中都是原来 Imege2中的图片 4 以下过程定义中正确的过程首行是 ( )。 ( A) Private Sub Proe(Optional a as Integer, b as Integer) ( B)

4、Private Sub Proc(a as Integer)as Integer ( C) Private Sub Proc(a()As Integer) ( D) Private Sub Proc(ByVal a()As Integer) 5 以下过程的功能是从数组中寻找最大值: Private Sub FindMax(a()As Integer, ByRef Max As Integer) Dim s As Integer, f As Integer Dim i As Integer s=LBound(a) f=UBound(a) Max=a(s) For i=s To f If a(i)

5、 Max Then Max=a(i) Next End Sub 以下关于上述过程的叙述中,错误的是 ( )。 ( A)语句 Call FindMax(a, m)可以调用该过程,其中的 a是数组, m是 Integer类型变量 ( B) For循环次数等于 a数组的元素数 ( C)过程末尾应该增加一条返回最大值的语句 FindMax=Max ( D)参数 Max用于存放找到的最大值 6 设有如下 Command1按钮的单击事件过程及 fun过程: Private Sub Command1_Cliek() Dim x As Integer x=Val(InputBox(“请输入一个整数 “) fu

6、n(x) End Sub Private Sub fun(x As Integer) If x Mod 2=0 Then fun(x 2) Print x; End Sub 执行上述程序,输入 6,结果是 ( )。 ( A) 3 6 ( B) 6 3 ( C) 6 ( D)程序死循环 7 窗体上有一个名称为 Commd1的命令按钮,并有如下程序代码: Option Base 1 Private Sub Commd1_Click() Dim a(4, 4)As Integer Dim b As Integer Dim i As Integer, j As Integer For i=1 To 4

7、 For j=1 T0 4 a(i, j)=i+j Next j Next i Call f(a, b) Print b End Sub Private Sub f(x()As Integer, ByRef y As Integer) y=0 For i=1 To 4 y=y+x(i, i) Next End Sub 运行程序,单击命令按钮后,窗体上显示的是 ( )。 ( A) 0 ( B) 2 ( C) 8 ( D) 20 8 设子程序过程定义的首 部为: Publie Sub S(X A暑 Imeger, Y As Single) 则以下正确的调用形式为 ( )。 ( A) Call S

8、5, 4 8 ( B) Call Sub(5, 4 8) ( C) Sub 5, 4 8 ( D) S 5, 4 8 9 阅读程序: Option Base 1 Sub P(b()As Integer) For i=1 To 4 b(i)=2*i Next i End Sub Private Sub Form_Click() Dim a(4) As Integer For i=1 To 4 a(i) =i +4 Next i P a For i=1 To 4 Print a(i) Next i End Sub 运行上面的程序,单击窗体,输出结果为 ( )。 ( A) 2 4 6 8 ( B)

9、5 6 7 8 ( C) 10 12 14 16 ( D) 4 8 12 10 设有以下过程: Private Sub proc(x As Integer, Optional y As Integer) Print x, y End Sub 针对此过程,下面正确的过程调用语句是 ( )。 ( A) Call proc(a!, 23) ( B) Call proc x, 12 ( C) proc b ( D) x=proc(12) 11 以下说法中正确的是 ( )。 ( A)事件过程也是过程,只能由其他过程调用 ( B)事件过程的过程名是由程序设计者命名的 ( C)事件过程通常 放在标准模块中

10、( D)事件过程是用来处理由用户操作或系统激发的事件的代码 12 设窗体名称为 frm1。以下叙述中正确的是 ( )。 ( A)运行程序时,能够加载窗体的事件过程是 frm1_Load ( B)运行程序时,能够加载窗体的事件过程是 Form1L0ad ( C)程序运行中用语句 frm1 Name=“New“可以更改窗体名称 ( D)程序运行中用语句 frm1 Caption=“新标题 “可以改变窗体的标题 13 窗体上有一个名称为 Command1的命令按钮,一个名称为 Text1的文本框。编写如下程序: Private Sub Command1_Click() Dim x As Intege

11、r 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 ( C)运行程序,输入值为 6时,文本框中显示 42 ( D) ByRef表示参数按址传递 14 在窗体

12、上画一个命令按钮和一个文本框,其名称分别为 Command1和 Text1,然后编写如下程序: Function Fun(x As Integer, y As Integer)As Integer Fun=IIf(x y, x, y) End Function Private Sub Form_Load() Command1 Default=Tme End Sub Private Sub Command1_Click() Dim a As Integer b As Integer a=20 b=12 Text1 Text=Str(Fun(a, (b) End Sub 程序运行后,按 Enter

13、键,文本框中显示的内容为 ( )。 ( A) 12 ( B) 20 ( C) 24 ( D) 40 15 以下关于函数过程的叙述中,正确的是 ( )。 ( A)函数过程形参的类型与函数返回值的类型没有关系 ( B)在函数过程中,过程的返回值可以有多个 ( C)当数组作为函数过程的参数时,既能以传值方式传递,也能以传址方式传递 ( D)如果不指明函数过程参数的类型,则该参数没有数据类型 16 下面是求最大公约数的函数的首部: Function ged(ByVal x As Integer, ByVal y As Integer)As Integer 若要输出 8、 12、 16这 3个数的最大公

14、约数,下面正确的语句是 ( )。 ( A) Print gcd(8, 12), gcd(12, 16), gcd(16, 8) ( B) Print gcd(8, 12, 16) ( C) Print ged(8), ged(12), god(16) ( D) Print gcd(8, ged(12, 16) 17 求 1! +2! +10 !的程序如下: Private Function s(x As Integer) f=1 For i=1 To x f=f*i Next s=f End Function Prirate Sub Command1_Click() Dim i As Inte

15、ger Dim y As Long For i=1 To 10 _ Next Print y End Sub 为实现功能要求,程序的横线处应该填入的内容是 ( )。 ( A) Call s(i) ( B) Call s ( C) y=y+s(i) ( D) y=y+s 18 假定有以下通用过程: Function Fun(n As Integer)As Integer x=n * n Fun=x-11 End Function 在窗体上画一个命令按钮,其名称为 Command1,然后编写如下事件过程。 Prirate Sub Command1_Click() Dim i As Integer

16、For i=1 To 2 y=Fun(i) Print y; Next i End Sub 程序运行后,单击命令按钮,在窗体上显示的内容是 ( )。 ( A) 1 3 ( B) 10 8 ( C) -10 -7 ( D) 0 5 19 在窗体上画一个命令按钮 (名称为 Command1),并编写如下代码: Function Fun1(ByVal a As Integer, b As Integer)As Integer Dim t As Integer t=a-b b=t+a Funl=t+b End Function Private Sub Command1_Click() Dim x As

17、 Integer x=10 Print Fun1(Fun1(x, (Fun1(x, x-1), x-1) End Sub 程序运行后, 单击命令按钮,输出结果是 ( )。 ( A) 10 ( B) 0 ( C) 11 ( D) 21 20 窗体上有一个名称为 Command1的命令按钮,其单击事件过程及相关的函数过程如下: Private Sub Command1_Click() Dim i As Integer For i=1 To 500 If p(i)Then s=s+1 Next Print s End Sub Private Function P(x As Integer)As Bo

18、olean If x Mod 7 0 Then p=True Else p=False End If End Function 关于上述程序,以下叙述中正确的是 ( )。 ( A)程序功能是统计 1 500范围内能被 7整除的整数个数 ( B) Command1_Click事件过程中 If语句的条件表达式不完整 ( C) Function过程定义有误 ,函数过程 p的名称与该过程中的变量名 p相同 ( D)函数过程 p的返回值为 Boolean类型 21 窗体上有一个名称为 Command1的命令按钮,其单击事件过程及相关的代码如下: Private Sub Command1_Click()

19、Dim x As Integer, y As Integer x=Val(InputBox(“输入整数 “) y=Val(InputBox(“输入整数 “) Print sty(flun(x, y) +x+y) End Sub Private Function fun(ByRd m As Integer, ByVal n As Integer) m=m * m n=n+n fun=m+n End Function 运行程序,单击命令按钮时,出现输入对话框,分别输入 3、 5,则窗体上显示的是 ( )。 ( A) 27 ( B) 28 ( C) 33 ( D) 38 22 某人编写了下面的程序:

20、 Private Sub Command1=1_Click() Dim a As Integer, b As Integer a=InputBox(“请输入整数 “) b=InputBox(“请输入整数 “) pro a pro b Call pro(a+b) End Sub Private Sub pro(n As Integer) While(n 0) Print n Mod 10; n=n 10 Wend Print End Sub 此程序功能是:输入 2个正整数,反序输出这 2个数的每一位数字,再反序输出这 2个数之和的每一位数字。例如:若输入 123和 234,则应该输出: 3 2

21、1 4 3 2 7 5 3 但调试时发现只输出了前 2行 (即 2个数的反序 ),而未输出第 3行 (即 2个数之和的反序 ),程序需要修改。下面的修改方案中正确的是 ( )。 ( A)把过程 pro的形式参数 n As Integer改为 ByVal n As Integer ( B)把 Call pro(a+b)改为 pro a+b ( C)把 n=n 10改为 n=n 10 ( D)在 pro b语句之后增加语句 c =a+b,再把 Call pro(a+b)改为 pro c 23 命令按钮 Command1的单击事件过程如下: Private Sub Command1_Click()

22、x=10 Print f(x) End Sub Private Function f(y As Integer) f=y * y End Function 运行上述程 序,如下叙述中正确的是 ( )。 ( A)程序运行出错, x变量的类型与函数参数的类型不符 ( B)在窗体上显示 10 ( C)函数定义错,函数名 f不能又作为变量名 ( D)在窗体上显示 10 24 编写如下程序: Private Sub Command1_Click() Dim x As Integer, y As Integer x=InputBox(“输入第一个数 “) y=InputBox(“输入第二个数 “) Cal

23、l f(x, y) Print x, y End Sub Sub f(a As Integer, ByVal b As Integer) a=a*2 x=a+b b=b+100 End Sub 程序运行后,单击命令按钮 Command1,并输入数值 10和 15,则输出结果为( )。 ( A) 10 115 ( B) 20 115 ( C) 35 15 ( D) 20 15 25 窗体上有一个名称为 Command1的命令按 钮,并有如下程序代码: Private Sub Command1_Click() Static a a=1: b=2: c=3 Call f(a, b, c) Print

24、 a; b; c End Sub Sub f(ByVal x, ByRef y, z) x=x+1 y=y+1 z=z+1 End Sub 运行程序,单击命令按钮,窗体上显示的是 ( )。 ( A) 1 3 3 ( B) 1 3 4 ( C) 2 3 3 ( D) 2 3 4 26 以下关于过程的叙述中,错误的是 ( )。 ( A)在 Sub过程中不能再定义 Sub过程 ( B)事件过程也是 Sub过程 ( C)过程调用语句的形参个数必须与实参个数相同 ( D)函数过程一定有返回值 27 窗体上有一个名称为 Command1的命令按钮,其单击事件过程如下: Private Sub Comrna

25、nd1_Click() Dim x As Integer, y As Integer Static z As,Integer x=3: y=5: z=y Call f(x, y, z) Print x; y; z End Sub Private Sub f(ByVal a As Integer, ByRef b As Integer, c As Integer) a=a+a: b=b+b: c=c+c End Sub 运行程序,单击命令按钮时, 3个标签中显示的内容分别是 ( )。 ( A) 3, 5, 5 ( B) 3, 5, 10 ( C) 3, 10, 5 ( D) 3, 10, 10

26、28 设有如下程序: Private Sub sV(ByVal in As Integer, 11 As Integer) m=m*2 n=n-5 Print m; n End Sub Private Sub Form_Click() Dim x As Integer, y As Integer x=10 y=15 sV x, Y Print x; y End Sub 运行程序,单击窗体,输出结果为 ( )。 ( A) 20 10 10 10 ( B) 10 15 20 10 ( C) 20 15 10 15 ( D) 20 10 20 10 29 以下关于过程及过程参数的描述中,错误的是 (

27、 )。 ( A)调用过程时可以用控件名称作为实际参数 ( B)用数组作为过程的参数时,使用的是 “传地址 ”方式 ( C)只有函数过程能够将过程中处理的信息传回到调用的程序中 ( D)窗体 (Form)可以作为过程的参数 30 以下关于过程及过程参数的描述中,错误的是 ( )。 ( A)过程的参数可以是控件名称 ( B)调用过程时使用的实参的个数应与过程形参的个数相同 (假定不含可变参数 ) ( C)只有函数过程能够将过程中处理的信息返回到调用程序中 ( D)窗体可以作为过程的参数 31 为了通过传值方式来传送过程参数,在函数声明部分应使用的关键字为 ( )。 ( A) Value ( B)

28、ByVal ( C) ByRef ( D) Reference 32 窗体上有一个名称为 Picture1的图片框控件,一个名称为 Label1 的标签控件,如图所示。 现有如下程序: Public Sub display(x As Control) If TypeOf x Is Label Then x Caption=“计算机等级考试 “ Else xPicture=LoadPicture(“pic jPg“) End IfEnd SubPrivate Sub Label1_Click() Call display(Label1)End SubPrivate Sub Picture1_Cl

29、ick() Call display(Pieture1)End Sub对以上程序,下列叙述中错误的是 ( )。 ( A)程序运行时会出错 ( B)单击图片框,在图片框中显示一幅图片 ( C)过程中的 x是控件变量 ( D)单击标签,在标签中显示一串文字 33 在窗体上画两个标签和一个命令按钮,其名称分别为 Labdl1、 Label2和Command1,然后编写如下程序: Private Sub func(L As Label) L Caption=“1234“ End Sub Private Sub Form_Load() Label1 Caption=“ABCDE“ Lbel2 Capti

30、on=10 End Sub Private Sub Command1_Click() a=Val(Label2 Caption) Call func(Label1) LabeLl Caption=a End Sub 程序运行后,单击命令按钮,则在两个标签中显示的内容分别为 ( )。 ( A) ABCD和 10 ( B) 1234和 100 ( C) ABCD和 100 ( D) 1234和 10 国家二级 VB机试(过程)模拟试卷 2答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 在一般情况下,整个应用程序从设计时的第一个窗体开始执行,需要首先执行的程序代码放在 Form Load

31、 事件过程中。如果需要从其他窗体开始执行应用程序,则可通过 “工程 ”菜单中的 “工程属性 ”命令 (“通用 ”选项卡 )指定启动窗体。但是,如果有 Sub Main 过程,则可以 (注意,是 “可以 ”,而不是 “必须 ”)首先执行 Sub Main过程。 【知识模块】 过程 2 【正确答案】 C 【试题解析】 在运行窗体程序之前先执行一些操作,此时可以通过在标准模块中创建一个 Sub Main的子过程,不能在窗体模块中创建 Sub Main的子过程,然后在创建的 SubMain过程中编写启动时要执行的代码,每个工程只能有一个 Sub Main 的子过程。 【知识模块】 过程 3 【正确答案

32、】 B 【试题解析】 Form_Load 过程执行在图相框里载入相应图片。单击 Image2时,激发 Image2_Click 事件,在事件中图片进行 了交换。选 B。 【知识模块】 过程 4 【正确答案】 C 【试题解析】 A选项错误原因: Sub 过程的第 1个参数 a用 Optiona1 关键字声明,说明为可选参数,那么后面的参数 b也必须是可选参数,用 Optiona1声明。B 选项错误原因: Sub过程无返回值,不用指明返回值数据类型。 D选项错误原因:可以用 ByVal 关键字声明变量,不能声明数组。 C选项正确。 【知识模块】 过程 5 【正确答案】 C 【试题解析】 过程定义语

33、句中第 1个参数是数组,调用是实参应该是一个数组变量或元素,第 2个参数是整型变量。过程中 LBound函数获取了数组下标的下限, UBound函数获取了数组下标的上限,在 For i=s to f 语句的循环中就可以访问数组中的各个元素。本过程是用 Sub 定义的过程不需要返回值。程序中找到的最大值由参数 Max返回,因为它是按址传递的参数,它的值会带给实参。因此 C选项的说法错误。 【知识模块】 过程 6 【正确答案】 A 【试题解析】 题目中 fun过程是一个递归过程,它的结束条件是参数值为奇数。第一次调用,参数值为 6,是偶数所再次调用 fun 过程,这次参数为 6 2=3,是奇数,不

34、再调用自身,接着执行下一句输出参数值,即 3,然后返回第一次调用过程中执行下一句输出第一次调用参数值,即 6。因此程序会输出 3 6。 【知识模块】 过程 7 【正确答案】 D 【试题解析】 Command1_Click()事件中通过嵌套循环给数组 a元素赋初值,执行完后 a(1, 1)=2, a(2, 2)=4, a(3, 3)=6, a(4, 4)=8; Call f(a, b)语句调用子函数 Sub f(x()As Integer, ByRef y As Integer)。该函数内 For循环把 a数组中一 维下标和二维下标相同的元素值相加,值为 20,选 D。 【知识模块】 过程 8

35、【正确答案】 D 【试题解析】 (1)用 Call语句调用 Sub过程。语法: Call过程名 (实参表列 ),实参的个数、类型和顺序,应该与被调用过程的形式参数相匹配,有多个参数时,用逗号分隔。 (2)把过程名作为一个语句来用。语法:过程名 实参 1,实参2 ,它与 (1)的不同点是去掉了关键字和实参列表的括号。 【知识模块】 过程 9 【正确答案】 A 【试题解析】 Form_Click 过程中首先对 a数 组用 For循环赋值。然后调用过程P。注意 P参数传递是引用传递,因此数组 a的元素值在执行 P过程后会被改变。之后的 For会输出变量值是过程 P中对数组元素的赋值。选 A。 【知识

36、模块】 过程 10 【正确答案】 C 【试题解析】 (1)用 Call语句调用 Sub过程:语法: Call过程名 (实参表列 ),实参的个数、类型和顺序,应该与被调用过程的形式参数相匹配,有多个参数时,用逗号分隔。 (2)把过程名作为一个语句来用:语法:过程名 实参 1,实参2 ,它与 (1)的不同点是:去掉了关键字和实参列表的 括号。根据题意,选项 C正确。 【知识模块】 过程 11 【正确答案】 D 【试题解析】 事件过程也是过程,其他过程或系统都可以调用它。故 A选项错误。 事件过程的过程名是由系统命名的。故 B 选项错误。 通常事件过程放在窗体模块中。故 C选项错误。 事件过程是用来

37、处理由用户操作或系统激发的事件的代码。只有当用户或系统触发事件后,才执行相应的事件过程。故 D选项正确。 【知识模块】 过程 12 【正确答案】 D 【试题解析】 一个控件的事件过程由控件的实际名字 (Name属性 )、下画线和事件名称组成,而窗体事件过程由 “Form”、下画线和事件名组成。因此,不管窗体名称是什么,窗体加载事件过程总是 Form_Load。窗体的名称即 Name属性在程序运行时不可以更改,窗体的标题即 Caption属性则可以在程序运行时更改。 【知识模块】 过程 13 【正确答案】 A 【试题解析】 过程 fun 的功能是将传入的值运算后返回,当传入数值为 3的整数倍时返

38、回该值的 2倍,否则返回该值的平方。过程 fun的参数指定为 ByRef 方式,即按址传递,因此会影响实参的值。 Str函数是 将数值转换为字符串。过程fun定义时没有指明返回类型,因此默认为 Variant类型,它可以表示任何值,因此 A选项的说法不正确。 【知识模块】 过程 14 【正确答案】 A 【试题解析】 Form_Load()过程中, Command1 获得焦点。当按 Enter键时,触发 Command1_Click()事件。该事件中给定 a和 b 的值,并调用函数 Fun。函数Fun 返回整型数据。 IIf(x y, x, y)表示的意思是 x y成立时,返回 x,否则返回 y

39、。函数调用时传过来的参数是 x=20, y=12。因此 IIf(x y, x, y)返回的值是12。选 A。 【知识模块】 过程 15 【正确答案】 A 【试题解析】 定义函数过程的格式: Function 函数过程名 (形参表 )As函数返回值的数据类型函数过程名 =表达式 End Function 说明: 形参的类型可以是任何数据类型,函数返回值的类型是调用函数后返回的数据类型,它们没有关系,互不影响。故选项 A正确。 选项 B错误的原因是函数过程中可以有多个 “函数过程名 =表达式 ”这样的语句,但是最终函数只能有一个返回值 。如果省略这条语句,函数过程则返回一个默认值,数值函数过程返回

40、 0,字符串函数过程返回空字符串。 选项 C错误的原因是数组作为函数过程的参数时,这时数组名看作是一个符号地址,实参和形参之间传递的是地址。所以以传址方式传递。 选项 D错误的原因是:形参如果没指明数据类型,默认为 Variant类型。 【知识模块】 过程 16 【正确答案】 D 【试题解析】 调用函数过程时的实参与函数过程的形参必须是类型、顺序、个数相同。 本题中函数过程的形参有 2个,调用时实参也要是 2个,故排除 选项 B和C。 选项 A虽然语法没错误,但不符合题意。 选项 D是正确的。调用函数过程时可以嵌套调用。 【知识模块】 过程 17 【正确答案】 C 【试题解析】 题目中过程 s

41、的功能是实现一个数的阶乘,而题目是求 1到 10的阶乘的和,则程序空缺处应该是过程 s返回值的累加,因此就应该为 y=y+s(i)。 【知识模块】 过程 18 【正确答案】 C 【试题解析】 i=1 时,执行 Fun(i),返回值为 -10, i=2时,执行 Fun(i),即Fun(2),返回值为 2*2-11=-7。因此 程序会输出 -10和 -7。 【知识模块】 过程 19 【正确答案】 B 【试题解析】 本题是过程的嵌套调用,过程嵌套调用时要先计算最内层的过程,然后由里向外执行。因此 Fun1(Fun1(x, (Fun1(x, x-1), x-1)执行过程如下: 先执行 Fun1(x,

42、x-1),由于形参 a是按值传递,因此不会影响 x的值, x=10,即 Fun1(10, 9)。 t=1, b=1+10=11,则函数返回值为 1+11=12。 再执行 Fun1(x, (Fun1(x, x-1),由于内层过程返回 12, 因此又可写成。Fun1(x, (12),由于 x仍为原值,因此过程即 Fun1(10, 12)。 t=-2, b=-2+10=8,则函数返回值为 -2+8=6。 最后执行 Fun1(Fun1(x, (Fun1(x, x-1), x-1),即Fun1(6, x-1),由于 x仍为原值,因此过程即为 Fun1(6, 9)。 t=-3, b=-3+6=3,则函数返

43、回值为 -3+3=0。 【知识模块】 过程 20 【正确答案】 D 【试题解析】 程序功能是统计 1 500范围内不能被 7整除的整数个数;函数过程 p 的返回值根据函数定 义可知为 Boolean类型。选 D。 【知识模块】 过程 21 【正确答案】 C 【试题解析】 函数 fun 执行后, x值被改变, y值不变。即 x=9, y=5;计算得结果为 33,选 C。 【知识模块】 过程 22 【正确答案】 A 【试题解析】 在过程定义中,过程的形式参数定义时如果没有 ByVal 指明参数的传递方式,那么默认为地址传递,这样过程中对形参的改变将影响到实参的值。本程序中过程定义语句 Privat

44、e Sub pro(n As Integer)说明形参 n为按地址传递的,而在过程 内语句 n=n 10改变了形参的值,因此, a、 b的值就不再是最初输入的值了,表达式 a+b 就不是期望的两个输入数的和。因此得不到正确结果。 只要把 Private Sub pro(n As Integer)改为 Private Sub pro(ByVal n As Integer),程序即可得到正确结果,因此 A选项正确。 【知识模块】 过程 23 【正确答案】 A 【试题解析】 变量 x在按钮单击事件过程中没有定义,因此系统自动将它定义为Variant类型,由于过程中参数类型为 Integer,所以 程

45、序运行时会提示 “ByRd参数类型不符 ”错误。 A选项正确。只在按钮事件中加上 Dim x as Integer就可以解决问题,或者 f 过程中的 y as integer改为 ByVal y as integer也可以解决。 【知识模块】 过程 24 【正确答案】 D 【试题解析】 程序中过程 f的参数 a默认为按址传递,参数 b指定按值传递,因此调用 f(x, y)时, x的值会受到影响, y的值不会。程序中输入 10和 15,则x=10, y=15。调用 f(x, y),在过程中 a=a*2,即 a=10*2=20,变量 x是 过程 f 中的局部变量,没有用处可不用理会, b: b+1

46、00,即 b=15+100=115。 a的值,即按钮单击事件中变量 x的值,因此 x=20,而 y的值仍是原来的值 15,因此 Print x, y输出 20 15。 【知识模块】 过程 25 【正确答案】 B 【试题解析】 子函数 Sub f(ByVal x, ByRd y, z)中 x值通过值传递, y、 z是传地址,子函数执行后 b, c值会被加 1。而 a值维持不变。选 B。 【知识模块】 过程 26 【正确答案】 C 【试题解析】 在调用过程的语句中,要求 实参个数与被调用过程形参个数一致。 【知识模块】 过程 27 【正确答案】 D 【试题解析】 f(ByVal a As Inte

47、ger, ByRd b As Integer, c As Integer)函数中 a是值传递 b地址传递, c缺省为地址传递。值传递使用两个存储单元,地址传递使用同一个存储单元,会改变变量的值。选 D。 【知识模块】 过程 28 【正确答案】 A 【试题解析】 函数传递参数有值传递和引用传递。默认是引用传递。 sV(ByVal m As Integer, n As Integer)函数中 m为值传递, n为引用传递。值传递不改变实参值。即在 FormClick()过程中调用 sV不会改 x的值。选 A。 【知识模块】 过程 29 【正确答案】 C 【试题解析】 过程定义时,形参除了可以是整型、

48、单精度、双精度等数据类型外,还可以是控件或窗口等对象型。相对应的调用过程,实参也可以是一般数据类型、控件名或窗体。故 A、 D选项正确。 调用过程时,如果过程的参数是数组,则实参传给形参的是地址,这个地址是用数组名表示的一个符号地址,是数组的起始地址,形参和实参用的是同一 个地址,在过程中形参的改变会引起实参的改变。故 B 选项正确。 在过程调用时,不只是函数过程能把过程中处理的信息传回到调用程序中, Sub过程也可以。 Sub过程中形参声明时前面有关键字 ByRet。或省略 ByRef(默认 )时,实参和形参之间传递的是地址, Sub过程中形参的变化也会引起实参的变化。这样 Sub过程中处理

49、的信息也可以传回调用程序中。故 C选项说法错误。 【知识模块】 过程 30 【正确答案】 C 【试题解析】 过程定义时,形参除了可以是整型、单精度、双精度等数据类型外,还可以是控件或 窗口等对象型。相对应的调用过程时实参也可以是一般数据类型、控件名或窗体。故选项 A、 D正确。 调用过程时使用的实参的个数、类型、顺序应与过程中形参相同。故选项 B 正确。 在过程调用时,不只是函数过程能把过程中处理的信息传回到调用程序中, Sub过程也可以。 Sub过程中形参声明时前面有关键字 ByRef或省略 ByRd(默认 )时,实参和形参之间传递的是地址, Sub过程中形参的变化也会引起实参的变化,这样 Sub过程中处理的信息也可以传回调用程序中。故选项 C说法错误。 【知识模块】 过程 31 【 正确答案】 B 【试题解析】 Value是控件的属性名。用 ByVal关键字声明形参表示该参数按值传递。 ByRef 是默认的参数类型,表示该参数按地址传递。没有 Reference关键字。故 B 选项正确。 【知识模块】 过程 3

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1