ImageVerifierCode 换一换
格式:DOCX , 页数:47 ,大小:52.09KB ,
资源ID:6226808      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6226808.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(子过程和子函数题型分析1.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

子过程和子函数题型分析1.docx

1、子过程和子函数题型分析1第八章 过 程学习要求1、 掌握过程的定义和调用方法2、 掌握函数的定义和调用方法3、 掌握进行参数传递的方法4、 熟悉不同变量的作用域5、 掌握递归过程的使用方法6、 掌握常用的排序算法:选择排序法、直接排序法、冒泡排序法、改进的冒泡排序法(设置开关变量)、直接插入排序法。7、 通过学习求最大公约数和判断素数的方法,掌握求符合条件的数的算法。8.1 Sub过程考点:窗体事件过程名由“Form”、下划线和事件名结合而成;如果使用多文档界面(MDI)窗体,则由“MDIForm”、下划线和事件名构成窗体事件过程名。示例:(1999年秋)窗体Form1的名称属性是frm,它的

2、Load事件过程名是 。 A. Form_Load B. Form1_Load C. frm_Load D. Me_Load 答案:A考点:定长字符串变量不能作为形参变量;不定长字符串作为形参变量,其对应的实在参数可以是定长的字符串变量或字符串型数组元素。但是定长字符串数组和不定长字符串数组都能作为形参变量。示例:(2002年秋)下列定义Sub过程的语句中,正确的语句是 。Private Sub Test(St As String * 8) Private Sub Test(Sarray( ) As String * 5) Private Sub Test(Sarray( ) As Strin

3、g ) Private Sub Test(St As String )A B C D 分析:是定长字符串做过程的形参,所以正确答案为C。答案:C分析:参数列表。参数列表中的参数称为形式参数,它可以是变量名或数组名。若有多个参数时,各参数之间用逗号分隔。VB的过程可以没有参数,但一对圆括号不可以省略。不含参数的过程称为无参过程。形式参数格式为:ByVal 变量名 ( ) As 数据类型变量名( ):变量名为合法的VB变量名或数组名。若变量名后无括号,则表示该形参是变量,否则是数组。ByVal:表明其后的形参是按值传递参数或称为“传值”(Passed by Value)参数,若缺省或用“ByRef

4、”替代,则表明参数是按地址传递(传址)参数或称为“引用”(Passed by Reference)参数。As数据类型:该选项用来说明变量类型,若缺省,则该形参是“变体变量”(Variant)。如果形参变量的类型被说明为“String”,它只能是不定长的。而在调用该过程时,对应的实在参数可以是定长的字符串变量或字符串数组元素。如果形参是字符串数组,则没有这个限制。28下面关于过程参数的说法,错误的是 _ 。(A)过程的形参不可以是定长字符串类型的变量(B)形参是定长字符串的数组,则对应的实参必须是定长字符串型数组,且长度相同(C)若形参是按地址传递的参数,形参和实参也能以按值传递方式进行形实结合

5、(D)按值传递参数,形参和实参的类型可以不同,只要相容即可答案:B分析:A是正确的,根据过程语法规定,形参不可以是定长字符串类型变量,但是可以是定长字符串数组;B是错误的,虽然数组是按照地址传递,要是实参和形参数据类型一致,但是若均为定长字符串数组,长度可以不相同,即可以发生截断;C是正确的,当给出的实参是值时,不论形参是否有byRef,均按照值传递;D是正确的,当按照值传递时,实参和形参类型可以不同,但是必须要能够由实参类型自动转换为形参类型;当按照地址传递时,实参和形参类型必须一致。练习 1、(2001年春)应用程序窗体的名称属性为Frm1,窗体上有一个命令按钮,其名称属性为cmd1,窗体

6、和命令按钮的Click事件过程名分别为 。 AForm_Click( ) Command1_Click( )BFrm1_Click( ) Command1_Click( )CForm _Click( ) Cmd1_Click( )DFrm1_Click( ) Cmd1_Click( )答案:C2、(2003年春)第一次显示某窗体时,将引发一系列事件,正确的事件系列是 。A. LoadInitializeActivate BInitializeLoadActivate C LoadActivateInitialize DInitializeActivateLoad答案:B3、(2003年春)定义

7、了两个过程Private Sub1(St( ) As String )和Private Sub2(Ch( ) As String * 6),在调用过程中用Dim S(3) As String *6 , A(3) As String定义了两个字符串数组。下面调用语句中正确的有 。Call Sub1(S) Call Sub1(A) Call Sub2(A) Call Sub2(S)A B C D 答案:D8.2 Function过程定义 考点:Function过程之所以能由函数名有返回值是因为在函数体内有“函数名=表达式”语句给函数名赋值。 示例:(2000年秋)改错题:求下列数列的和,计算到第n

8、项的值小于等于10-4为止。 Y=表达式? 式中:f1=1,f2=2,fn=(fn-1+fn-2),n3。 (本程序运行结果是:Y=2.359646) Option ExplicitPrivate Sub Form_CLICK() Dim A() As Single, I As Integer Dim Y As Single I = 1 Do ReDim A(I) 改为ReDim Preserve A(I) A(I) = 1 / Fib(I) If A(I) = e - 4 Then Exit Do 改为If A(I) = 1e - 4 Then Exit Do Y = Y + A(I) I

9、= I + 1 Loop Print Y=; Y For I = 1 To UBound(A) Print A(I) Next IEnd SubPrivate Function Fib(I As Integer) As Integer If I = 1 Then Fib = 1 ElseIf I = 2 Then Fib = 2 Else Fib(I) = Fib(I - 1) + Fib(I - 2) 改为Fib = Fib(I - 1) + Fib(I - 2) End IfEnd Function 分析:本题第三个错误。通过一个赋值语句给函数名赋值,正确的形式是“函数名=表达式”;此语句

10、中,Fib是函数名,“Fib(I - 1) + Fib(I - 2)”两个递归调用相加构成表达式。而Fib(I)是对函数的递归调用(递归调用将在后面学习)。8.3 过程调用考点:Sub过程用Call语句调用(无参数时括号可省略)或作为一个语句使用,当做语句使用时实参表不需要加括号;Function过程的调用和VB内部函数的方法一样,此时有返回值,若像调用Sub过程那样调用Function过程,其返回值被放弃。示例:(1998年)在调用过程时,下述说明中正确的是 。A 只能使用Call语句调用Sub过程B 调用Sub过程时,实在参数必须用括号括起来C 在表达式中调用Function过程时,可以不

11、用括号把实在参数括起来DFunction过程也可以使用Call语句调用 答案:D8.4 参数的传递 考点:“形实结合”遵循三条规则(不考虑过程有可选参数):1)实参和形参个数相同;2)对应实参和形参的数据类型相同;3)对应形参和实参按“位置”结合(而不是按名称结合)。另外,形参是“变量”,对应的实参可以是“数组元素”,但不能是“数组”。(此考点也经常出现在改错题中) 示例:(2001年秋)改错题:密码组成是由若干个用数字8分隔的8进制数组成的字符串,每个8进制数所对应的10进制数是一个字符的ASCII码。本程序的功能就是进行译码。正确的结果是“BASIC”。Option ExplicitOpt

12、ion Base 1Private Sub Form_Click() Dim St As String, Char As String Dim data() As String, I As Integer, J As Integer St = 10281018123811181038 For I = 1 To Len(St) If Mid(St, I, 1) 8 Then Char = Char & Mid(St, I, 1) Else J = J + 1 ReDim data(J) 改为ReDim Preserve data(J) data(J) = Char Char = End If N

13、ext I Call Conver(data, Char) Print CharEnd SubPrivate Sub Conver(A() As String, Ch As Integer) 改为A() As String, Ch As String Dim I As Integer, J As Integer, N As Integer, Dec As Integer For I = 1 To UBound(A) Dec = 0 N = Len(A(I) For J = 1 To N Dec = Dec + Val(Mid(A(I), J, 1) * 8 (N - J) Next J Ch

14、= Ch & Str(Dec) 改为Ch = Ch & Chr(Dec) NextEnd Sub 分析:本题有三个地方发生错误,其中第二个错误Private Sub Conver(A() As String, Ch As Integer)中定义的参数个数为2,第二个参数Ch是Integer型;而在调用该过程的Call Conver(data, Char)语句中按位置对应的第二个参数Char是Stirng型,所以数据类型不匹配。 考点:按值传递参数时“实参值不随形参值的改变而改变”;按地址传递参数时“实参值将随形参值的改变而改变”。示例:(1998年)当Sub过程Value形参表中存在ByVal

15、关键字时,执行本程序,单击窗体,在窗体上显示的第一行内容是 (1) ,第二行内容是 (2) ;若将形参表中的ByVal关键字删除,再执行本程序,单击窗体后在窗体上显示的第一行内容是 (3) ,第二行内容是 (4) ;Private Sub Value(ByVal m As Integer, ByVal n As Integer)m = m * 2n = n - 5Print m = ; m, n = ; nEnd Sub Private Sub Form_Click()Dim x As Integer, y As Integerx = 10: y = 15Call Value(x, y)Pri

16、nt x = ; x, y = ; yEnd Subxymn打印101510152010m=20 n=10x=10 y=15将形参表中的ByVal关键字删除后执行程序x/my/n打印1015m=20 n=102010x=20 y=10 分析:Value过程的形参前有ByVal时按数值传递,在调用后,实参x,y值没变;形参前去掉ByVal后按地址传递,实参x,y值发生改变;所以答案为 (1)m=20 n=10(2)x=10 y=15(3)m=20 n=10(4)x=20 y=10。 考点:如果在过程调用时与之结合的实参是一个常数或者表达式,VB会用“按值传递“的方法来处理。给按地址传递参数传递的

17、是类型不一致的常数或表达式时,VB会按要求进行数据类型转换,然后再将转换后的值传递给参数。示例:(2000年秋)若在应用程序中用“Private Sub sub1(X As Integer, Y As Single)”定义了子程序sub1,调用程序中的变量I,J均为Integer型,则正确调用子程序sub1的Call语句是 。 Call sub1(I,J) Call sub1(3.1415,I) Call sub1(3.14,234) Call sub1(245,231.5)A B C D无 分析:中实参变量J和形参变量Y数据类型不匹配;中实参变量I和形参变量Y数据类型不匹配。答案为B。分析:

18、用I,J对应y会产生类型不匹配的错误。Private Sub Sub1X As IntegerY As SingleCall Sub1(I,J)I As IntegerJ IntegerCall Sub1(3.1415,I)3.1415I IntegerCall Sub1(3.14,234)3.14234Call Sub1(245,231.5)245231.5 考点:形参数组只能按地址传递,对应实参必须是与形参数组数据类型一致的数组。与变长字符串数组形参结合的实参必须是变长字符串数组;与定长字符串数组形参结合的实参必须是定长字符串数组(长度可以不同)。示例:(1998年)以下有关把数组作为形参

19、的说明中错误的是 。A 形参数组只能按地址传递B 调用过程时,只需把要传递的数组名填入实参表C 使用动态树组时,可用ReDim语句改变形参数组的维界D在过程中也可用Dim语句对形参数组进行说明 答案:D练习4、(1999年秋)在语句Public Sub Sort(I As Integer)中,I是一个按 传递的参数。 A地址 B 值 C变量 D常量答案:A分析:形式参数格式为:ByVal 变量名 ( ) As 数据类型变量名( ):变量名为合法的VB变量名或数组名。若变量名后无括号,则表示该形参是变量,否则是数组。ByVal:表明其后的形参是按值传递参数或称为“传值”(Passed by Va

20、lue)参数,若缺省或用“ByRef”替代,则表明参数是按地址传递(传址)参数或称为“引用”(Passed by Reference)参数。5、(2002年春)调用由语句Private Sub Convert(Y As Integer)定义的Sub过程时,以下不是按值传递的是 。A Call Convert(X) BCall Convert(X*1)C Convert(X) DConvert X 分析:在VB中,将Convert(X)视为Convert (X)。答案:D 6、(2001年春)在应用程序中用“Private Function Fun(X As Integer, Y As Sing

21、le)”定义了函数Fun。调用函数Fun的过程中的变量I,J均定义为Integer型,能正确引用函数Fun的是 。 Fun(I,J) Call Fun(I,3.65) Fun(3.14,234) Fun(“245”,”231.5”)A B C D答案:B分析:Private Function FunX As IntegerY As SingleFun(I,J)I As IntegerJ As IntegerCall Fun(I,3.65)I As Integer3.56Fun(3.14,234)3.14234Fun(245,231.5)245231.57、(2002年秋)在窗体Form1中用“

22、Public Sub Fun(x As Integer, y As Single )”定义过程Fun,在窗体Form2中定义了变量i为Integer,j 为Single,若要在Form2的某事件过程中调用Form1中的Fun过程,则下列语句中,正确的语句有 个。 Call Fun(i,j) Call Form1.Fun(i,j) Form1.Fun(i),j Form1.Fun i+1,(j)A1 B2 C3 D4答案:C分析:Call Fun(i, j)不能调用Form1中的Fun过程。Form1Form2 Dim i As Integer,j As SinglePublic Sub Fun

23、(x As Integer, y As Single)Call Fun(i, j)Call Form1.Fun(i, j)Form1.Fun(i), jForm1.Fun i+1,(j)8、(2001年秋)执行下面的程序,第一行输出结果是 ,第二行输出结果是 。Option ExplicitPrivate Sub Form_click() Dim M As Integer, N As Integer M = 1: N = 2 Print M + N + fun1(M, N) M = 2: N = 1 Print fun1(M, N) + fun1(M, N)End SubPrivate Fun

24、ction fun1(X As Integer, Y As Integer) X = X + Y Y = X + 3 fun1 = X + YEnd Function答案: 18 309、(2002年秋)执行下面程序,单击窗体,在立即窗口上显示的第二行 是,第三行是 。Option ExplicitDim A As IntegerPrivate Sub Form_click() Dim B As Integer Dim D As Integer A = 1: B = 2 D = fun(A, fun(A, B) Debug.Print A; B; DEnd SubPrivate Functio

25、n fun(K As Integer, N As Integer) As Integer Debug.Print K; N; K = N + A + K N = K + A + N fun = K + N Debug.Print funEnd Function答案:4 14 80 22 10 8010、(2001年秋)名为sort的Sub子过程的形式参数为一数组,以下的定义语句中正确的是 。APrivate Sub sort(A() As Integer) BPrivate Sub sort(A(10) As Integer)CPrivate Sub sort(ByVal A() As Int

26、eger) DPrivate Sub sort(A( ,) As Integer)答案:A11、(2002年春)程序中的不同过程之间,不能通过 进行数据传递。 全局变量 窗体或模块级变量形参与实参结合 静态变量A B C D答案:D12、(2000年春)执行下面程序,第一行输出结果是 ,第二行输出结果是 (UBound函数返回指定数组维的维上界)。Private Sub Form_click() Dim i As Integer, j As Integer Dim m As Integer, n As Integer Dim a() As Integer Call arry(a) n = UB

27、ound(a, 1): m = UBound(a, 2) For i = 1 To m For j = 1 To n Print a(i, j); Next j Print Next iEnd SubPrivate Sub arry(b() As Integer) Dim i As Integer, j As Integer, k As Integer ReDim b(3, 3) For i = 1 To 3 For j = 1 To 3 b(i, j) = i * 10 + j Next j Next iEnd Sub答案: 11 12 1321 22 2313、(2001年春)改错题:下面

28、程序功能是找出一个正整数的所有质因子。例如,48的质因子是2,2,2,2,3。 Option ExplicitPrivate Sub Form_click() Dim Fac() As Integer, N(3) As Integer Dim I As Integer, J As Integer N(1) = 48: N(2) = 308: N(3) = 1155 For I = 1 To 3 Call Factor(Fac, N(I) Print N(I); 的质因子是:; For J = 1 To UBound(Fac) Print Fac(J); Next J Print ReDim F

29、ac(1) Next IEnd SubPrivate Sub Factor(F() As Integer, ByVal N() As Integer) ByVal N As Integer Dim I As Integer, J As Integer, Idx As Integer Dim K As Integer K = 2 Do Until N = 1 If N Mod K = 0 Then Idx = Idx + 1 ReDim F(Idx) ReDim Preserve F(Idx) F(Idx) = K N = N / K Else N = N + 1 k = k + 1 End If LoopEnd Sub(同考点题:2001年春VB02改错题,2001年秋VB05改错题) 14、(2002年春)改错题:本程序的功能是求出不超过6位数的Armstrong数,所谓Armstrong数是指一个N位的正整数,它的每位数字的N次方之和等于它本身,例如153=13+53+33是一个3位的Armstrong数,54748=55+47+75+47+85是一个5位

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1