1、国家二级 VB 机试(过程)模拟试卷 6 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:43,分数:86.00)1.假定有如下事件过程:Private Sub Form_Click() Dim X As Integer,n As Integer x=2:n=0 Do While x28 x=x*3:n=n+1 loop Print x,nEnd Sub 程序运行后,单击窗体,输出结果是(分数:2.00)A.81 4B.56 3C.28 1D.243 52.以下叙述中错误的是(分数:2.00)A.标准模块文件的扩展名是basB.标准模块文件是纯代码文件C.在标准模块中声
2、明的全局变量可以在整个工程中使用D.在标准模块中不能定义过程3.下面不能在信息框中输出“VB”的是(分数:2.00)A.MsgBox“VB“B.x=MsgBox(“VB“)C.MsgBox(“VB“)D.Call MsgBox“VB“4.以下关于过程的叙述中,错误的是(分数:2.00)A.在 Sub 过程中不能再定义 Sub 过程B.事件过程也是 Sub 过程C.过程调用语句的形参个数必须与实参个数相同D.函数过程一定有返回值5.设子程序过程定义的首部为:Public Sub S(X As Integer,Y As Single)则以下正确的调用形式为(分数:2.00)A.Call S 5,4
3、8B.CaU Sub(5,48)C.Sub 5,48D.S 5,486.在窗体上画两个标签和一个命令按钮,其名称分别为 Label1、Label2 和 Command1,然后编写如下程序:Private Sub fune(L As Label) Private Sub Commandl_Click() LCaption=“1234“ a=Val(Label2Caption)End Sub Call func(Label1) Private Sub Form_Load() Label2Caption=a Label 1Caption=“ABCDE“ End Sub Label2Caption=1
4、0End Sub 程序运行后,单击命令按钮,则在两个标签中显示的内容分别为(分数:2.00)A.ABCD 和 10B.1234 和 100C.ABCD 和 100D.1234 和 107.设有如下 Commandl 的单击事件过程及 fun 过程: Pfivate Sub Commandl_Click() Privme Sub fun(x As Integer) Dim x As Integer Ifx Mod 2=0 Then fun(x2) x=Val(InputBox(“请输入一个整数“) Print x; fun(x) End SubEnd Sub 执行上述程序,输入 6,结果是(分数
5、:2.00)A.3 6B.6 3C.6D.程序死循环8.编写如下程序:Private Sub Command1_Click() Sub subf(s1 As String s2 As String) Dim str1 As String,str2 As String Dim temp As String str1InputBox(“输入一个字符串“) Static i As Integer i=i+1 subf str1,str2:Print str2 temp=Mid(s1,i,1)End Sub If temp“Then subf s1,s2 s2=s2&temp End Sub 程序运行
6、后,单击命令按钮 Command1,且输入“abcdef”,则输出结果为(分数:2.00)A.afbecdB.cdbeafC.fedcbaD.adbecf9.以下关于函数过程的叙述中,正确的是(分数:2.00)A.函数过程形参的类型与函数返回值的类型没有关系B.在函数过程中,过程的返回值可以有多个C.当数组作为函数过程的参数时,既能以传值方式传递,也能以传址方式传递D.如果不指明函数过程参数的类型,则该参数没有数据类型10.在 VB 中,函数过程与子程序过程的区别之一是(分数:2.00)A.函数过程必须有参数,而子程序过程可以没有B.函数过程的参数传递只采用值传递,而子程序过程只采用地址传递C
7、.在程序中,子程序过程调用的代码可以写在表达式中,而函数过程不能D.函数过程有返回值,而子程序过程没有11.在窗体上画一个命令按钮(名称为 Commandl),并编写如下代码:Function Fun 1(ByVal a As Integer, Private Sub Commandl_Click() b As Integer)As Integer Dim x As Integer Dim t As Integer x=10 t=ab:b=t+a:Fun1=t+b Print Fun1(Fun1(x,(Fun1(x,x1),x1)End Function End Sub 程序运行后,单击命令按
8、钮,输出结果是(分数:2.00)A.10B.0C.11D.2112.有下面程序代码:Private Sub Commandl_Click() Dim aAs String a=“COMPUTER“n=search(a,“T“):Print IIf(n=0,“未找到“,n) End Sub Private Function search(str As String,ch As String)As Integer For k=1 To Len(str) c=Mid(str,k,1) Ifc=ch Then search=k:Exit Function End If Next k search=0E
9、nd Function 程序运行后,单击命令按钮 Commandl,输出结果是(分数:2.00)A.0B.8C.6D.未找到13.现有如下程序:Private Sub Commandl_Click() Public Function f(x As Integer) s=0 If x=10 Then For i=1 To 5 t=x+1 s=s+f(5+i) ElseNext t=x+2Print s End IfEnd Sub f=t End Function 运行程序,则窗体上显示的是(分数:2.00)A.38B.49C.61D.7014.假定有以下通用过程:Function Fun(n A
10、s Integer)As Integer x=n*n:Fun=x11End Function 在窗体上画一个命令按钮,其名称为 Commandl,然后编写如下事件过程:Private Sub Commandl_Click()Dim i As IntegerFor i=1 To 2 y=Fun(i)Print y; Next iEnd Sub 程序运行后,单击命令按钮,在窗体上显示的内容是(分数:2.00)A.1 3B.10 8C.10 7D.0 515.求 1!+2!+10!的程序如下:Private Function s(x As Integer) Private Sub Commandl_
11、Click() f=1 Dim i As Integer,y As Long For i=1 To x For i=1 To 10 f=f*i ( ) Next Next s=f Print yEnd Function End Sub 为实现功能要求,程序的括号中应该填入的内容是(分数:2.00)A.Call s(i)B.Call sC.y=y+s(i)D.y=y+s16.在窗体上画一个名称为 Commandl 的命令按钮,并编写如下程序:Function Fun(x) Private Sub Commandl_Click() y=0 n=InputBox(“请输入一个数“) Ifx10 Th
12、en n=Val(n) y=x P=Fun(n):Print P Else End Sub y=y+10 End If Fun=yEnd Function 运行程序,单击命令按钮,将显示输入对话框,如果在对话框中输入 100,并单击“确定”按钮,则输出结果为(分数:2.00)A.10B.100C.110D.出错信息17.设有如下事件过程:Private Sub Commandl_Click()Dim a Private Function fun(x,Y)As Integer a=Array(12,3,8,5,10,3,5,9,2,4) Do While x=y For k=1 To 9 x=x
13、y Print fun(a(k1),a(k);“; Loop Next k fun=xEnd Sub End Function 程序运行时的输出结果是(分数:2.00)A.4 0 1 0 3 0 0 4 0B.0 3 3 5 1 3 5 1 2C.9-5 3-5 7-2-4 7-2D.9 3 3 5 7 3 5 7 218.设有如下函数:Function DelSpace(ch As String)As IntegerDim n,st,cst=“:n=0For k=1 To Len(ch) c=Mid(ch,k,1) Ifc“Then st=st&c Else n=n+1 End If Nex
14、t k ch=st:DelSpace=nEnd Function 该函数的功能是(分数:2.00)A.统计并返回字符串 ch 中字符的个数B.删除字符串 ch 中的空格符,返回删除字符的个数C.统计并返回字符串 ch 中非空格字符数D.删除字符串 ch 中除空格符外的其他字符,返回删除字符的个数19.窗体上有一个名称为 Commandl 的命令按钮,其单击事件过程及相关的函数过程如下:Private Sub Commandl_Click() Private Function p(x As Integer)As Boolean Dim i As Integer Ifx Mod 70 Then F
15、or i=1 To 500 p=True Ifp(i)Then s=s+1 Else Next p=False Print s End IfEnd Sub End Function 关于上述程序,以下叙述中正确的是(分数:2.00)A.程序功能是统计 1-500 范围内能被 7 整除的整数个数B.Commandl Click 事件过程中 If 语句的条件表达式不完整C.Function 过程定义有误,函数过程 P 的名称与该过程中的变量名 P 相同D.函数过程 P 的返回值为 Boolean 类型20.设有下面程序代码:Pfivme Sub Commandl_Click() Dim strAs
16、 String,ehAs String str=“Visual Basic Programming“:ch=“a“ n=fun(ch,str):Print str,n End Sub Private Function fun(ch As String,str As String)As Integer Dim strbufAs String,c As String,n As Integer For k=1 To Len(str) c=Mid(str,k,1) Ifcch Then strbuf=strbuf&c Else strbuf=strbuf&UCase(c):n=n+1 End If N
17、ext k str=strbuf:fun=nEnd Function 程序运行时的输出是(分数:2.00)A.Visual Basic Programming 0B.VisuAl BAsic ProgrAmming 3C.Visul Bsic Prograzming 3D.VisualBasicProgramming 221.以下叙述中错误的是(分数:2.00)A.在通用过程中,多个形式参数之间可以用逗号作为分隔符B.在 Print 方法中,多个输出项之间可以用逗号作为分隔符C.在 Dim 语句中,所定义的多个变量可以用逗号作为分隔符D.当一行中有多个语句时,可以用逗号作为分隔符22.以下关于
18、过程及过程参数的描述中,错误的是(分数:2.00)A.调用过程时可以用控件名称作为实际参数B.用数组作为过程的参数时,使用的是“传地址”方式C.只有函数过程能够将过程中处理的信息传回到调用的程序中D.窗体(Form)可以作为过程的参数23.下面是求最大公约数的函数的首部 Function gcd(ByVal x As Integer,ByVal y As Integer)As Integer 若要输出 8、12、16 这 3 个数的最大公约数,下面正确的语句是(分数:2.00)A.Print gcd(8,12),gcd(12,16),gcd(16,8)B.Print gcd(8,12,16)C
19、.Print gcd(8),gcd(12),gcd(16)D.Print gcd(8,gcd(12,16)24.为了通过传值方式来传送过程参数,在函数声明部分应使用的关键字为(分数:2.00)A.ValueB.ByValC.ByRefD.Reference25.以下过程定义中正确的过程首行是(分数:2.00)A.Private Sub Proc(Optional a as Integer,b as Integer)B.Private Sub Proc(a as Integer)as IntegerC.Private Sub Proc(a()As Integer)D.Private Sub Pr
20、oc(ByVal a()As Integer)26.某人编写了下面的程序 Pfivate Sub Commandl_Click() Private Sub pro(n As Integer) Dim a As Integer,b As Integer While(n0) a=InputBox(“请输入整数“) Print n Mod 10;n=n10 b=InputBox(“请输入整数“) Wend pro a:pro b Print Call pro(a+b) End SubEnd Sub 此程序功能是:输入 2 个正整数,反序输出这 2 个数的每一位数字,再反序输出这 2 个数之和的每一位
21、数字。例如:若输入 123 和 234,则应该输出:3 2 1 4 3 2 7 5 3 但调试时发现只输出了前 2 行(即 2 个数的反序),而未输出第 3 行(即 2 个数之和的反序),程序需要修改。下面的修改方案中正确的是(分数:2.00)A.把过程 pro 的形式参数 n As Integer 改为 ByVal n As IntegerB.把 Call pro(a+b)改为 pro a+bC.把 n=n10 改为 n=n10D.在 pro b 语句之后增加语句 c=a+b,再把 Call pro(a+b)改为 pro c27.有下面程序代码:Pfivate Sub Commandl_Cl
22、ick() Private Sub proc(ByVal a As Integer) Dim x As Integer,s As Integer Static x As Integer x=1 x=x+1:a=a+x For k=1 To 3 End Sub x=x+1:proc x:s=s+x Next k Print sEnd Sub 程序运行后,单击命令按钮 Commandl,输出结果是(分数:2.00)A.6B.9C.15D.1928.编写如下程序:Pfivate Sub Commandl_Cliek()Dim x As Integer x=10 Print funl(x,12)+xE
23、nd Sub Private Function fun1(m As Integer,n As Integer)As Integer Ifn10 Then m=n fun1=m+nEnd Function 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.30B.32C.34D.3629.在窗体上画一个名称为 Commandl 的命令按钮,再画两个名称分别为 Label1、Label2 的标签,然后编写如下程序代码:Private X As IntegerPrivate Sub Commandl_Click() Private Sub proc(a As Integer
24、, X=5:Y:3 ByVal b As Integer) Call proc(X,Y、) X:a*a:Y=b+b Label1Caption=X End Sub Label2Caption=YEnd Sub 程序运行后,单击命令按钮,则两个标签中显示的内容分别是(分数:2.00)A.25 和 3B.5 和 3C.25 和 6D.5 和 630.设有如下通用过程:Public Function f(x As Integer) Dim y As Integer x:20:y=2:f=x*yEnd Function 在窗体上画一个命令按钮,其名称为 Commandl,然后编写如下事件过程:Priv
25、ate Sub Commandl_Click() Static x As Integer x=10:y=5:y=f(x)Print x;yEnd Sub 程序运行后,如果单击命令按钮,则在窗体上显示的内容是(分数:2.00)A.10 5B.20 40C.20 5D.10 4031.命任何一个滚动条滚动框件过程如下:Private Sub Commandl_Click() Private Function f(y As Integer) x=10 Print f(x) f=y*yEnd Sub End Function 运行上述程序,如下叙述中正确的是:(分数:2.00)A.程序运行出错,x 变
26、量的类型与函数参数的类型不符B.在窗体上显示 100C.函数定义错,函数名 f 不能又作为变量名D.在窗体上显示 1032.编写如下程序:Private Sub Commandl_Click() Dim x As Integer, y As Integer x=InputBox(“输入第一个数“):y=InputBox(“输入第二个数“) Call f(x,y) Print x,y End Sub Sub f(a As Integer,ByVal b As Integer) a=a*:x=a+b:b=b+100 End Sub 程序运行后,单击命令按钮 Commandl,并输入数值 10 和
27、15,则输出结果为(分数:2.00)A.10 1 15B.20 11 5C.35 15D.20 1533.现有程序如下:Option Base 1Private Sub Form_Click() Sub f(m As Integer,n As Integer, Dim x(5,6)As Integer,y(5)As Integer a()As Integer,b() As Integer) For i=1 To 5 For i=1 To m For j=1 To 6 b(i)=0 x(i,j)=Int(Rnd*9+1) For j=1 To n Nextj b(i)=b(i)+a(i,j) N
28、ext i Nextj Call f(5,6,x,y) Next i For i=l To 5 End Sub Print y(i); Next iEnd Sub 关于上述程序,以下叙述中正确的是(分数:2.00)A.调用过程语句有错,参数不匹配B.程序有错,数组下标越界C.y 数组中保存的是 x 数组每行数据之和D.x 数组中数据的取值范围是 11034.窗体上有一个名称为 Commandl 的命令按钮,一个名称为 Text1 的文本框。编写如下程序:Private Sub Commandl_Click() Private Function fun(ByRef n As Integer) D
29、im x As Integer If n MOd 3=0 Then x=Val(InputBox(“输入数据“) n=n+n Text1=Str(x+fun(x)+fun(x) ElseEnd Sub n=n*n End If fun=n End Function 对于上述程序,以下叙述中错误的是(分数:2.00)A.语句 fun=n 有错,因为 n 是整型,fun 没有定义类型B.运行程序,输入值为 5 时,文本框中显示 655C.运行程序,输入值为 6 时,文本框中显示 42D.ByRef 表示参数按址传递35.窗体上有一个名称为 Commandl 的命令按钮,并有如下程序代码:Priva
30、te Sub Commandl_Click() Sub f(ByVal x,ByRef Y,z) Static a x=x+1:y=y+1:z=z+1 a=1:b=2:c=3 End Sub Call f(a,b,c) Print a;b;cEnd Sub 运行程序,单击命令按钮,窗体上显示的是(分数:2.00)A.1 3 3B.1 3 4C.2 3 3D.2 3 436.窗体上有一个名称为 Commandl 的命令按钮,其单击事件过程如下:Private Sub Commandl_Click() Dim x As Integer,y As Integer Static z As Intege
31、r x=3:y=5:z=y Call f(x,y,z) Print x;y;z End SubPrivate Sub f(ByVal a As Integer,ByRef b As Integer,c As Integer) a=a+a:b=b+b:c=c+cEnd Sub 运行程序,单击命令按钮时,3 个标签中显示的内容分别是(分数:2.00)A.3 5 5B.3 5 10C.3 10 5D.3 10 1037.窗体上有一个名称为 Commandl 的命令按钮,其单击事件过程及相关的代码如下:Private Sub Commandl_Click() Dim x As Integer,y As
32、 Integer x=Val(InputBox(“输入整数“) y=Val(InputBox(“输入整数“) Print Str(fun(x,y)+x+y) End SubPrivate Function fun(ByRef m As Integer,ByVal n As Integer) m=m*m:n=n+n:fun=m+nEnd Function 运行程序,单击命令按钮时,出现输入对话框,分别输入 3、5,则窗体上显示的是(分数:2.00)A.27B.28C.33D.3838.设有如下程序:Private Sub Inv(ByVal xStr As String,As String) D
33、im tStr As String Dim L AS Integer L=Len(xStr) Do While L=1 tStr=tStr+Mid(xStr,L,1):L=L1 Loop yStr=tStr End Sub Private Sub Form_Click() Dim S1 As String,S2 As String S1=“abcdef“Inv S1,S2 Print S2End Sub 运行程序,单击窗体,输出结果为(分数:2.00)A.abcdefB.afbecdC.fedcbaD.defabc39.设有如下程序: Private Sub sV(ByVal m As Int
34、eger,n As Integer) m=m*2:n=n5:Print m;nEnd SubPrivate Sub Form_Click() Dim x As Intege,y As Integer x=10:y=15:sV x,y Print x;yEnd Sub 运行程序,单击窗体,输出结果为(分数:2.00)A.20 10 10 10B.10 15 20 10C.20 15 10 15D.20 10 20 1040.由高中数学可知,对于连续函数 f(x),若 f(x1)与 f(x2)值的符号相反,则在 x1 和 x2 之间必存在x0,使得 f(x0)=0(该点称为“零点”)。设有 VB
35、函数:Private Function f(x As Single) As Single 可以返回 f(x)的值(函数体没有给出)。下面程序的功能是从键盘输入 2 个实数 x1、x2,判断在 x1、x2 之间是否存在零点。Private Sub Commandl_Click() Dim x1 As Single,x2 As Single x1=InputBox(“请输入一个实数 x1“) x2=InputBox(“请再输入一个实数 x2”)If(_)Then Print“在“;x1;“与“;x2;“之间存在零点“ Else Print“不能确定在“;x1;“与“;x2;“之间是否存在零点“ E
36、nd If End Sub Private Function f(x As Single)As Single End Function 为使上面程序可以实现该功能,程序代码中横线处应填写的代码是(分数:2.00)A.f(x1)0 Or f(x2)0B.f(x1)0 And f(x2)0C.f(x1)*f(x2)0D.f(x1).f(x2)041.编写如下程序:Private Sub Commandl_Click() Private Function fun1(ByVal m As Integer, Dim x As Integer,y As Integer n As Integer)As In
37、teger x=10:y=20 m=m*m:n=n+n Call funl(x,y) End Function Print x;yEnd Sub 程序运行后,单击命令按钮 Com_mandl,输出结果为(分数:2.00)A.10 25B.10 40C.100 25D.100 4042.设有以下过程:Private Sub proc(x As Integer,Optional Y As Integer) Print x,yEnd Sub 针对此过程,下面正确的过程调用语句是(分数:2.00)A.Call proc(a!,23)B.Call proc x,12C.proc bD.x=proc(12
38、)43.以下关于过程及过程参数的描述中,错误的是(分数:2.00)A.过程的参数可以是控件名称B.调用过程时使用的实参的个数应与过程形参的个数相同(假定不含可变参数)C.只有函数过程能够将过程中处理的信息返回到调用程序中D.窗体可以作为过程的参数国家二级 VB 机试(过程)模拟试卷 6 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:43,分数:86.00)1.假定有如下事件过程:Private Sub Form_Click() Dim X As Integer,n As Integer x=2:n=0 Do While x28 x=x*3:n=n+1 loop Prin
39、t x,nEnd Sub 程序运行后,单击窗体,输出结果是(分数:2.00)A.81 4 B.56 3C.28 1D.243 5解析:解析:本题考查 Do While 循环。在窗体的 Click 事件代码里面,定义了变量 x 和 n,分析 Do While 循环可知,n 保存循环次数,x 是循环控制变量,如果 x 的值小于 28 则进入循环体,因此 x 和 n 的变化过程是:3 和 1、9 和 2、27 和 3、81 和 4,经过 4 次循环后 x 值变成 81,循环条件不成立,循环结束。2.以下叙述中错误的是(分数:2.00)A.标准模块文件的扩展名是basB.标准模块文件是纯代码文件C.在
40、标准模块中声明的全局变量可以在整个工程中使用D.在标准模块中不能定义过程 解析:解析:本题考查的考点是有关标准模块的。VB 中的标准模块也称全局模块或总模块,由全局变量声明、模块层声明及通用过程等几部分组成,其扩展名为bas,里面只有代码而没有任何控件。其中全局声明放在标准模块的首部,可以在整个工程中使用。3.下面不能在信息框中输出“VB”的是(分数:2.00)A.MsgBox“VB“B.x=MsgBox(“VB“)C.MsgBox(“VB“)D.Call MsgBox“VB“ 解析:解析:MsgBox()函数用于显示提示信息,并可返回一个代表用户单击了哪个按钮的 Integer 类型值,当其
41、作为函数使用时必须将参数放在括号内部,而返回值可以赋值给一个变量,也可以单独使用此函数而不将其返回值赋值给变量;MsgBox 过程也用于显示提示信息,作为过程可以独立使用,也可以使用 Call关键字来进行调用,但此时参数需要加括号。4.以下关于过程的叙述中,错误的是(分数:2.00)A.在 Sub 过程中不能再定义 Sub 过程B.事件过程也是 Sub 过程C.过程调用语句的形参个数必须与实参个数相同 D.函数过程一定有返回值解析:解析:Sub 过程分为事件过程和通用过程,过程不允许嵌套定义,即在 Sub 过程中再定义 Sub 过程;函数过程必须有一个返回值,当过程的声明语句中使用了可选参数的
42、时候,允许实参个数与形参不同。5.设子程序过程定义的首部为:Public Sub S(X As Integer,Y As Single)则以下正确的调用形式为(分数:2.00)A.Call S 5,48B.CaU Sub(5,48)C.Sub 5,48D.S 5,48 解析:解析:子过程可以独立使用,也可以使用 Call 关键字来进行调用,但此时参数需要加括号。本题中子程序的名字是 S,故此 B、c 选项可以排除,A 选项中缺少参数的括号。6.在窗体上画两个标签和一个命令按钮,其名称分别为 Label1、Label2 和 Command1,然后编写如下程序:Private Sub fune(L
43、 As Label) Private Sub Commandl_Click() LCaption=“1234“ a=Val(Label2Caption)End Sub Call func(Label1) Private Sub Form_Load() Label2Caption=a Label 1Caption=“ABCDE“ End Sub Label2Caption=10End Sub 程序运行后,单击命令按钮,则在两个标签中显示的内容分别为(分数:2.00)A.ABCD 和 10B.1234 和 100C.ABCD 和 100D.1234 和 10 解析:解析:本题考查的考点是有关过程调
44、用的。窗体加载时首先执行了 Load 事件里面的代码,设置Label1 的标题为“ABCDE”,Label2 的标题为“10”;当单击命令按钮时,调用了 func 过程,在这个过程中把传入的 Label1 的标题设置为“1234”,Label2 的标题没有发生变化。7.设有如下 Commandl 的单击事件过程及 fun 过程: Pfivate Sub Commandl_Click() Privme Sub fun(x As Integer) Dim x As Integer Ifx Mod 2=0 Then fun(x2) x=Val(InputBox(“请输入一个整数“) Print x;
45、 fun(x) End SubEnd Sub 执行上述程序,输入 6,结果是(分数:2.00)A.3 6 B.6 3C.6D.程序死循环解析:解析:本题中的 fun 过程是一个递归调用,如果参数 x 为偶数则进入递归;本题中的实参 6 传入fun 过程之后,因其是偶数,所以执行 fun(62),也就是先输出 3,然后返回到 fun 中输出 6。8.编写如下程序:Private Sub Command1_Click() Sub subf(s1 As String s2 As String) Dim str1 As String,str2 As String Dim temp As String
46、str1InputBox(“输入一个字符串“) Static i As Integer i=i+1 subf str1,str2:Print str2 temp=Mid(s1,i,1)End Sub If temp“Then subf s1,s2 s2=s2&temp End Sub 程序运行后,单击命令按钮 Command1,且输入“abcdef”,则输出结果为(分数:2.00)A.afbecdB.cdbeafC.fedcba D.adbecf解析:解析:本题中的子过程 subf 会进行递归调用,只要在参数 sl 中取出的字符不是空字符串就进行递归,直到 i 的值超过 s1 的长度才停止,然
47、后进行回归操作,相当于每一次向 s2 中连接的字符都是最后取出的 s1 中的字符,最终实现字符串的逆序操作。9.以下关于函数过程的叙述中,正确的是(分数:2.00)A.函数过程形参的类型与函数返回值的类型没有关系 B.在函数过程中,过程的返回值可以有多个C.当数组作为函数过程的参数时,既能以传值方式传递,也能以传址方式传递D.如果不指明函数过程参数的类型,则该参数没有数据类型解析:解析:本题考查的考点是有关函数过程的。函数过程可以返回一个函数值,但这个函数值的类型和参数类型没有任何关系;如果不指明参数的类型,则默认参数为变体型;数组作为丽数参数时只能通过传地址的方式来调用。10.在 VB 中,
48、函数过程与子程序过程的区别之一是(分数:2.00)A.函数过程必须有参数,而子程序过程可以没有B.函数过程的参数传递只采用值传递,而子程序过程只采用地址传递C.在程序中,子程序过程调用的代码可以写在表达式中,而函数过程不能D.函数过程有返回值,而子程序过程没有 解析:解析:函数过程和 Sub 子过程一样,也可以有参数也可以没有参数:参数传递也可以使用地址传递也可以使用值传递;都是在代码中进行调用,只是函数过程必须有一个返回值,子过程没有。11.在窗体上画一个命令按钮(名称为 Commandl),并编写如下代码:Function Fun 1(ByVal a As Integer, Private
49、 Sub Commandl_Click() b As Integer)As Integer Dim x As Integer Dim t As Integer x=10 t=ab:b=t+a:Fun1=t+b Print Fun1(Fun1(x,(Fun1(x,x1),x1)End Function End Sub 程序运行后,单击命令按钮,输出结果是(分数:2.00)A.10B.0 C.11D.21解析:解析:本题考查的考点是有关过程调用的。对于这种复杂的函数调用,一定要搞清楚调用的顺序以及参数传递的是值还是地址。根据过程调用的原则,首先调用最内层的 Fun1(x,x1),其结果为 12,x的值不变仍为 10;然后调用 Fun1(x,12),其结果为 6,x 的值也不变为 10;最后调用 Fun1(6,x1),其结果为 0,x 的值也不变为 10。本题中的传址调用是没有作用的,因为表达式是不能传地址的。12.有下面程序代码:Private Sub Commandl_Click() Dim aAs String a=“COMPUTER“n=sear