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

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

1、国家二级 VB机试(过程)模拟试卷 4及答案与解析 一、选择题 1 下面不能在信息框中输出 “VB”的是 ( A) MsgBox“VB“ ( B) x=MsgBox(“VB“) ( C) MsgBox(“VB“) ( D) Call MsgBox“VB“ 2 设子程序过程定义的首部为: Public Sub S(X As Integer,Y As Single)则以下正确的调用形式为 ( A) Call S5,4.8 ( B) Call Sub(5,4.8) ( C) Sub5,4.8 ( D) S5,4.8 3 设 有如下 Command1的单击事件过程及 fun过程: Private Su

2、b Command1_Click() Dim x As Integer x=Val(InputBox(“请输入一个整数 “) fun(x) End Sub Private Sub fun(x As Integer) If x Mod2=0 Then fun(x/2) Print x; End Sub 执行上述程序,输入 6,结果是 ( A) 3 6 ( B) 6 3 ( C) 6 ( D)程序死循环 4 以下关于函数过程的叙述中,正确的是 ( A)函数过程形参的类型与函数返回值的类型没有关系 ( B)在函数过程中,过程的返回值可以有多个 ( C)当数组作为函数过程的参数时,既能以传值方式传递,

3、也能以传址方式传递 ( D)如果不指明函数过程参数的类型,则该参数没有数据类型 5 在窗体上画一个命令按钮 (名称为 Command1),并编写如下代码: Function Fun1(ByVal a As Integer,b As Integer)As Integer Dim t As Integer t=a-b:b=t+a:Fun1=t+b End Function Private Sub Command1_Click() Dim x As Integer x=10 Print Fun1(Fun1(x,(Fun1(x,x-1),x-1) End Sub 程序运行后,单击命令按钮,输出结果是

4、( A) 10 ( B) 0 ( C) 11 ( D) 21 6 现有如下程序: Private Sub Command1_Click() s=0 For i=1 To 5 s=s+f(5+i) Next Print s End Sub Public Function f(x As Integer) If x =10Then t=x+1 Else t=x+2 End If f=t End Function 运行程序,则窗体上显示的是 ( A) 38 ( B) 49 ( C) 61 ( D) 70 7 求 1! +2! +10 !的程序如下: Private Function s(x As In

5、teger) f=1 For i=1 To x f=f*i Next s=f End Function Private Sub Command1_Click() Dim i As Integer,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 8 设有如下事件过程: PrivateSubCommand1_Click()Dima a=Array(12,3,8,5,10,3,5,9,2,4) Fork=

6、1To9 Printfun(a(k-1),a(k);“; Nextk EndSub PrivateFunctionfun(x,y)AsInteger DoWhilex =y x=x-y Loop fun=x EndFunction 程序运行时的输出结果是 ( A) 4 0 1 0 3 0 0 4 0 ( B) 0 3 3 5 1 3 5 1 2 ( C) 9 -5 3 -5 7 -2 -4 7 -2 ( D) 9 3 3 5 7 3 5 7 2 9 窗体上有一个名称为 Command1的命令按钮,其单击事件过程及相关的函数过程如下: Private Sub Command1_Click()Di

7、m 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 Boolean If x Mod 7 0Then p=True Else p=False End If End Function 关于上述程序,以下叙述中正 ( A)程序功能是统计 1-500范围内能被 7整除的整数个数 ( B) Command1_Click事件过程中 If语句的条件表达式不完整 ( C) Function过程定义有误,函数过程 p的名称与该过程中的变量名 p相同 ( D

8、)函数过程 p的返回值为 Boolean类型 10 以下叙述中错误的是 ( A)在通用过程中,多个形式参数之间可以用逗号作为分隔符 ( B)在 Print方法中,多个输出项之间可以用逗号作为分隔符 ( C)在 Dim语句中,所定义的多个变量可以用逗号作为分隔符 ( D)当一行中有多个语句时,可以用逗号作为分隔符 11 下面是求最大公约数的函数的首部 Function gcd(ByVal x As Integer,ByVal y As Integer)As Integer 若要输出 8、 12、 16这 3个数的最大公约数,下面正确的语句是 ( A) Print gcd(8,12), gcd(1

9、2,16), gcd(16,8) ( B) Print gcd(8, 12, 16) ( C) Print gcd(8), gcd(12), gcd(16) ( D) Print gcd(8, gcd(12, 16) 12 以下过程定义中正确的过程首行是 ( A) Private Sub Proc(Optional a as Integer,b as Integer) ( B) Private Sub Proc(a as Integer)as Integer ( C) Private Sub Proc(a()As Integer) ( D) Private Sub Proc(ByVal a()

10、As Integer) 13 有下面程序代码: Private Sub Command1_Click() Dim x As Integer,s As Integer x=1 For k=1 To 3 x=x+1:procx:s=s+x Next k Print s End Sub Private Sub proc(ByVal a As Integer) Static x As Integer x=x+1:a=a+x End Sub 程序运行后,单击命令按钮 Command1,输出结果是 ( A) 6 ( B) 9 ( C) 15 ( D) 19 14 在窗体上画一个名称为 Command1的命

11、令按钮,再画两个名称分别为 Label1、Label2的标签,然后编写如下程序代码: Private X As Integer Private Sub Command1_Click() 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 15

12、 命任何一个滚动条滚动框件过程如下: Private Sub Command1_Click() x=10 Print f(x) End Sub Private Functionf(y As Integer) f=y*y End Function 运行上述程序,如下叙述中正确的是: ( A)程序运行出错, x变量的类型与函数参数的类型不符 ( B)在窗体上显示 100 ( C)函数定义错,函数名 f不能又作为变量名 ( D)在窗体上显示 10 16 现有程序如下: Option Base1 Private Sub Form_Click() Dim x(5,6)As Integer,y(5)As

13、Integer For i=1 To 5 For j=1 To 6 x(i,j)=Int(Rnd*9+1) Next j Next i Call f(5,6,x,y) For i=1 To 5 Print y(i); Next i End Sub Sub f(m As Integer,n As Integer,a()As Integer,b()As Integer) For i=1 To m b(i)=0 For j=1 To n b(i)=b(i)+a(i,j) Next j Next i End Sub 关于上述程序,以下叙述中正确的是 ( A)调用过程语句有错,参数 不匹配 ( B)程序

14、有错,数组下标越界 ( C) y数组中保存的是 x数组每行数据之和 ( D) x数组中数据的取值范围是 1-10 17 窗体上有一个名称为 Command1的命令按钮,并有如下程序代码: Private Sub Command1_Click() Static a a=1:b=2:c=3 Call f(a,b,c) Print 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 18 窗体上有

15、一个名称为 Command1的命令按钮,其单击事件过程及相关的代码如下: Private Sub Command1_Click() Dim x As Integer,y As Integer x=Val(InputBox(“输入整数 “) y=Val(InputBox(“输入整数 “)Print Str(fun(x,y)+x+y) End Sub Private Function fun(ByRef m As Integer,ByVal n As Integer) m=m*m:n=n+n:fun=m+n End Function 运行程序,单击命令按钮时,出现输入对话框,分别输入 3、 5,则

16、窗体上显示的是 ( A) 27 ( B) 28 ( C) 33 ( D) 38 19 设有如下程序: Private Sub sV(ByVal m As Integer,n As Integer) m=m*2:n=n-5:Printm;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 1

17、0 20 编写如下程序: Private Sub Command1_Click() Dim x As Integer,y As Integer x=10:y=20 Call fun1(x,y) Print x;y End Sub Private Function fun1(ByVal m As Integer,n As Integer)As Integer m=m*m:n=n+n End Function 程序运行后,单击命令按钮 Command1,输出结果为 ( A) 10 25 ( B) 10 40 ( C) 100 25 ( D) 100 40 21 以下关于过程及过程参数的描述中,错误

18、的是 ( A)过程的参数可以是控件名称 ( B)调用过程时使用的实参的个数应与过程形参的个数相同 (假定不含可变参数 ) ( C)只有函数过程能够将过程中处理的信息返回到调用 程序中 ( D)窗体可以作为过程的参数 国家二级 VB机试(过程)模拟试卷 4答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 MsgBox()函数用于显示提示信息,并可返回一个代表用户单击了哪个按钮的 Integer类型值,当其作为函数使用时必须将参数放在括号内部,而返回值可以赋值给一个变量,也可以单独使用此函数而不将其返回值赋值给变量;MsgBox过程也用于显示提示信息,作为过程可以独立使用,也可以使用 C

19、all关键字来进行调用,但此时参数需要加括号。 【知识模块】 过程 2 【正确答案】 D 【试题解析】 子过程可以独立使用,也可以使用 Call关键字来进行调用,但此时参数需要加括号。本题中子程序的名字是 S,故此 B、 C选项可以排除, A选项中缺少参数的括号。 【知识模块】 过程 3 【正确答案】 A 【试题解析】 本题中的 fun过程是一个递归调用,如果参数 x为偶数则进入递归;本题中的实参 6传入 fun过程之后,因此是偶数,所以执行 fun(6 2),也就是先输出 3,然后返回到 fun中输出 6。 【知识模块】 过程 4 【正确答案】 A 【试题解析】 本题考查的考点是有关函数过程

20、的。函数过程可以返回一个函数值,们这个函数值的类型和参数类型没有任何关系:如果不指明参数的类型,则默认参数为变体型;数组作为函数参数时只能通过传地址的方式来调用。 【知识模块】 过程 5 【正确答案】 B 【试题解析】 本题考查的考点是有关过程调用的。对于这种复杂的函数调用,一定要搞清楚调用的顺序以及参数传递的是值还是地址。根据过程调用的原则,首先调用最内层的 Fun1(x, x-1),其结果为 12, x的值不变仍为 10:然后调用Fun1(x, 12),其结果为 6, x的值 也不变为 10;最后调用 Fun1(6, x-1),其结果为 0, x的值也不变为 10。本题中的传址调用是没有作

21、用的,因为表达式是不能传地址的。 【知识模块】 过程 6 【正确答案】 B 【试题解析】 本题考查的考点是有关函数调用和 If语句的。要注意往前 4次循环中每次调用 f函数时传递的参数分别为 6、 7、 8、 9,都是小于 10的,最后一次循环传递参数 10,所以最终结果应该为 8+9+10+11+11=49。 【知识模块】 过程 7 【正确答案】 C 【试题解析】 函数过程有一个返回值,一般出 现在表达式中组成表达式的一部分。本题的题目要求累加各个数的阶乘,而函数 s的作用是求参数的阶乘,因此应该在每次循环中累加 f函数的值,参数为循环变量 i。 【知识模块】 过程 8 【正确答案】 B 【

22、试题解析】 本题中函数 fun的作用是当第一个形参比第二个形参大或着相等的时候让它减去第二个形参,直到比第二个形参小为止;在按钮的单击事件中循环调用 9次函数,每次都用数组的前一个元素和后一个元素作为函数的实参,所以应输出的是 12-3-3-3-3、 3、 8-5、 5、 10-3、 3、 5、 9-2、 2。 【知 识模块】 过程 9 【正确答案】 D 【试题解析】 调用 Function过程要返回一个值,因此可以像内部函数一样在表达式中使用。如果在 Function过程中省略 “过程名 =表达式 ”,则该过程返回一个默认值 (数值函数过程返回 0值;字符串函数过程返回空字符串 )。因此,通

23、常要在过程体中给 “过程名 ”赋值。本题中函数 p的返回值为 Boolean类型,功能是判断参数 x是否能被 7整除,如果不能整除返回 True,否则返回 False。Command1_Click事件过程中使用了单行的 If语句,不需要 Else分支和 Endlf语句。程序功能是统计 1-500范围内不能被 7整除的整数个数。 【知识模块】 过程 10 【正确答案】 D 【试题解析】 本题考查的考点是有关分隔符的。在过程的参数中需要用分隔符隔开;在 Print方法中使用逗号可以隔开多个输出项:在一条 Dim语句中定义多个变量时,这些变量也要用逗号隔开;在一行中写多个语句时,多个语句之间需要用冒

24、号隔开。 【知识模块】 过程 11 【正确答案】 D 【试题解析】 函数过程在传递参数时,形参表与实参表中对应变量的名字不必相同,但参数的个数、对应 位置和对应类型必须相同。本题中的 gcd函数有两个参数,任何对于 gcd的调用都必须传递实参为两个整型值;选项 A中得到 3个结果,显然不是我们所需要的;选项 D中的函数嵌套调用能够求出 3个数的最大公约数。 【知识模块】 过程 12 【正确答案】 C 【试题解析】 Visual Basic允许用数组作为参数。但用数组作为过程的参数时,应在数组名的后面加上一对括号,以免与普通变量相混淆;而且只能使用地址传递,不能使用值传递。为了定义可选参数,需要

25、在参数表中使用 Optional关键字来指定可选参数,但是可 选参数必须是变体型,而且放在参数表的最后。 Sub子过程是不能有返回值类型的。 【知识模块】 过程 13 【正确答案】 B 【试题解析】 本题中首先要区分在命令按钮的单击事件中定义的 x是局部变量,仅能在过程内部起作用;在子过程 proc中定义的静态变量 x也是局部变量,也只能在本过程中起作用。在 VB的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用 ByVal声明,说明此参数为传值调用;若用ByRef声明,说明此参数为传址调用;没有说明传递类型,则默认为传址传递。即形参的结 果会传递给实参。本题中 pr

26、oc过程的参数 a用的是值传递,因此形参的改变不会影响到实参,所以在命令按钮的单击事件中循环累加的是 2+3+4=9。 【知识模块】 过程 14 【正确答案】 A 【试题解析】 本题考查的考点是有关参数传递的。在 VB的过程调用时,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用 ByVal声明,说明此参数为传值调用;若用 ByRef声明,说明此参数为传址调用;没有说明传递类型,则默认为传址传递。即形参的结果会传递给实参。由于本题中的实参 Y采用传值传递,实参 X采 用传址传递,而且 X是全局变量,所以在被调过程中改变了 X的值而没有改变 Y的值。 【知识模块】 过程 15 【正

27、确答案】 A 【试题解析】 在调用子过程或者函数过程时,要求实参与形参必须是匹配的,即个数相同、类型相同、顺序一致。本题中命令按钮的 Click事件中隐式声明了变量x,所以 x是变体型;在调用函数 f的时候将变体型的 x作为实参传送,但函数 f中的形参 y是整型的,故此产生类型不匹配的情况。 【知识模块】 过程 16 【正确答案】 C 【试题解析】 本题中子过程 f的四个形参分别为整 型、整型、整型数组和整型数组,在窗体的单击事件中调用过程 f,四个实参和四个形参可以匹配,调用语句没有错误;在二重循环中为二维数组的每个元素赋值,数组下界从 1开始,因此不会越界;在二重循环中为数组 x的元素赋值

28、为 0 9之间的值;在过程 f中用一个二重循环以此计算 x数组每行数据之和放在 v数组中。 【知识模块】 过程 17 【正确答案】 B 【试题解析】 在 Visual Basic中调用过程时,参数有两种传递形式:按值传递(Byval)和按址传递 (Byref),默认为按址传递。其中,当参数按址传递时, 如果在引用该参数的过程中改变了形参的值,同时也就改变了传递参数时实参变量的值。本题中 f的参数 x是按值传递的, y和 z是按地址传递的,因此在 f中对 x的改变不会影响实参 a,对 y和 z的操作会影响实参 b和 c。 【知识模块】 过程 18 【正确答案】 C 【试题解析】 在 Visual

29、 Basic中调用过程时,参数有两利,传递形式:按值传递(Byval)和按址传递 (Byref),默认为按址传递。其中,当参数按址传递时,如果在引用该参数的过程中改变了形参的值,同时也就改变了传递参数时实参变量的值。本题中 fun的参数 m是按地址传递的, n是按值传递的,因此在 f中对 m的改变会影响实参 x,对 n的操作不会影响实参 v,即输出的是 Str(19+9+5)=“33“。 【知识模块】 过程 19 【正确答案】 A 【试题解析】 在 Visual Basic中调用过程时,参数有两种传递形式:按值传递(Byval)和按址传递 (Byref),默认为按址传递。其中,当参数按址传递时

30、,如果在引用该参数的过程中改变了形参的值,同时也就改变了传递参数时实参变量的值。本题中 sV的参数 m是按值传递的, n是按地址传递的,因此在 sV中对 m的改变不会影响实参 x,对 n的操作会影响实参 v。 【知识模块】 过程 20 【正确答案】 B 【试题解析】 在 Visual Basic中调用过程时,参数有两种传递形式:按值传递(Byval)和按址传递 (Byref),默认为按址传递。其中,当参数按址传递时,如果在引用该参数的过程中改变了形参的值,同时也就改变了传递参数时实参变量的值。本题中 fun1的参数 m是按值传递的, n是按地址传递的,因此在 fun1中对m的改变不会影响实参 x,对 n的操作会影响实参 y。 【知识模块】 过程 21 【正 确答案】 C 【试题解析】 本题考查的考点是有关过程参数的。过程的参数可以为任何控件,包括窗体,在传递参数时,形参表与实参表中对应变量的名字不必相同,但参数的个数、对应位置和对应类型必须相同。除了函数过程可以把信息返回到调用程序中,一般过程也可以通过地址传递的方法把信息返回到调用程序中。 【知识模块】 过程

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

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

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