收藏 分享(赏)

第6章过程.ppt

上传人:hyngb9260 文档编号:7884057 上传时间:2019-05-29 格式:PPT 页数:74 大小:1.52MB
下载 相关 举报
第6章过程.ppt_第1页
第1页 / 共74页
第6章过程.ppt_第2页
第2页 / 共74页
第6章过程.ppt_第3页
第3页 / 共74页
第6章过程.ppt_第4页
第4页 / 共74页
第6章过程.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

1、本章主要内容,过程、函数的定义和使用函数和过程参数的传递变量、过程的作用域,第6章 过程,过程是一个具有某种功能的独立程序单位,供多次调用。,第6章 过程,使程序变得更简短而清晰 有利于程序维护 可以提高程序开发的效率 提高了代码的重用性,为什么设计过程,过程的分类,VB中过程按是否由系统提供分为两种过程:系统提供的: 内部函数:例:print abs(-90) 事件过程: 例:private sub form_click() print abs(-90)End sub,用户自定义的:通用过程,通用过程:有时多个不同的事件过程可能需要使用同一段程序代码,这时可将这段代码独立出来,编写为一个共用

2、的过程,称为通用过程。 通用过程常用的有两类:Sub过程 (无返回值)Function 过程 (有返回值),通用过程的分类,6.1 函数过程的定义与调用,1.引例:已知多边形的边和对角线的长 度,求多边形的面积,6.1 函数过程的定义与调用,若三角形三个边的长度为x,y,z,则三角形的面积公式:,其中:,6.1 函数过程的定义与调用,分析:首先定义一个求三角形面积的函数过程,过程中有三个参数,分别代表三角形的三个边,函数返回值为所求的面积,然后三次调用该函数,6.1 函数过程的定义与调用,定义函数 Public Function area(x!, y!, z!) As SingleDim C!

3、C = 1 / 2 * (x + y + z)area = Sqr(C * (C - x) * (C - y) * (C - z) End Function,其中: Public可以省略,也可以用Private 注意: 函数返回值一定要通过函数名赋值实现,形参x , y, z,函数过程名,函数返回值的类型,6.1 函数过程的定义与调用,Private Sub Form_Click() 调用过程求面积Dim a!, b!, c!, d!, e!, f!, g!, s1!, s2!, s3!a = InputBox(“请输入a“)b = InputBox(“请输入b“)c = InputBox(“

4、请输入c“)d = InputBox(“请输入d“)e = InputBox(“请输入e“)f = InputBox(“请输入f“)g = InputBox(“请输入g“)s1 = area(a, b, c) 第一次调用函数s2 = area(c, d, e) s3 = area(e, f, g)Print s1 + s2 + s3 End Sub,实参a ,b ,c,6.1 函数过程的定义与调用,2. 函数过程的定义 :1) 利用菜单命令工具-添加过程,再单击”函数”单选钮,6.1 函数过程的定义与调用,2. 函数过程的定义 : 2) 利用代码窗口直接定义,Public|Private Fu

5、nction 函数名(形参声明) As 类型 局部变量或常数定义语句块Exit Function函数名=返回值 End Function,说明: Public: 公有过程,被程序中的所有模块访问调用。 Private: 私有过程,只能被本模块的其它过程访问。 As 类型: 函数返回值的类型 Exit Function : 在函数过程中终止过程的运行。 形参声明形式: 形参名1 As 类型,形参名2 As 类型, 形参:只能是变量或数组,函数过程体,例6.1,6.1 函数过程的定义与调用,3. 函数过程的调用 :,函数过程名(实参),如例6.1的三条调用函数area求面积:s1 = area(a

6、, b, c) s2 = area(c, d, e) s3 = area(e, f, g),第1次调用过程 实参 a b c 形参 x y z,例6.2 编一个程序求最大公约数的函数过程,m n n0 r=m mod n m=n n=r 124 24 T 体 4 24 44 T 体 0 4 00 F 结束循环,公约数为m,Function gcd(m%, n%) As IntegerIf m 0 求最大公约数r = m Mod n m = n : n = rLoopgcd = m End Function,6.1 函数过程的定义与调用,例6.2 编一个程序求最大公约数的函数过程,Functio

7、n gcd(m%, n%) As IntegerIf m 0 求最大公约数r = m Mod nm = nn = rLoopgcd = m End Function,调用函数 Private Sub Form_Click() Dim x%, y%, z%x = 124: y = 24z = gcd(x, y)Print “最大公约数“; z End Sub,6.1 函数过程的定义与调用,例6.3 编一个函数过程,统计字符串中汉字个数,6.1 函数过程的定义与调用,例6.3 编一个函数过程,统计字符串中汉字个数,Function CountC%(s$) 定义函数过程Dim i%, k%, c$F

8、or i = 1 To Len(s)c = Mid(s, i, 1)If Asc(c) 0 Then k = k + 1Next iCountC = k End Function,汉字的ASCII码值小于0,6.1 函数过程的定义与调用,例6.3 编一个函数过程,统计字符串中汉字个数,Private Sub Command1_Click() 调用Dim C1!C1 = CountC(Text1)Picture1.Print Text1; Tab(30); “:有 “; C1; “个汉字“ End Sub,注意:书上P150 倒数第2行,末尾的分号应该去掉,6.2 子过程的定义与调用,1. 引例

9、 例6.4 编一个过程,对Label1控件进行移动,其中通过参数Tag的值(1或-1)决定向右下角还是左上角移动,6.2 子过程的定义与调用,1. 引例,Sub MyMove(Tag%) 定义过程MyMove,形参为TagLabel1.Left = Label1.Left + Tag * 200Label1.Top = Label1.Top + Tag * 200 End Sub Private Sub Command1_Click() Dim k%If Rnd 0.5 Then k = 1 Else k = -1Call MyMove(k) 调用过程,k是实参或 MyMove k End S

10、ub,6.2 子过程的定义与调用,2. Sub子过程的定义 Private | Public Sub 过程名(形参声明) 局部变量或常数定义Exit Sub语句块 End Sub,3. Sub子过程的调用方法一: Call 过程名 (实参列表) 方法二: 过程名 实参列表,P151括号位置写错位了,例6.4,8.1.1 Sub 子过程的定义与调用,注意:定义一个过程中,不能在该过程中又定义了另一个过 程,即定义过程时不能嵌套,否则出错。,Private Sub a()Print “*“Private Sub b()Print “*“End Sub End Sub Private Sub Com

11、mand1_Click()Call a End Sub,6.2 子过程的定义与调用,8.1.1 Sub 子过程的定义与调用,注意:定义过程时不能嵌套定义,但可以调用另一个过程。,Private Sub a()Print “*“Call b End Sub Private Sub b()Print “*“End Sub Private Sub Command1_Click()Call a End Sub,06.9,下列叙述中正确的是( )。 A)一个Sub过程至少要有一个Exit Sub语句 B)一个Sub过程必须有一个End Sub语句 C)可以在Sub过程中定义一个Function过程, 但

12、不能定义Sub过程 D)调用一个Function过程可以获得多个返回值,b,Function和Sub两种过程的区别,例6.5 分别编一个统计字符串S中定冠词” the “出现的个数的子过程和函数过程,并分别调用,运行界面如图,如:输入”If you cant find the answers you need in the product”,则显示结果如上,6.2 子过程的定义与调用,Function FuncThe(s$) 方法一,定义函数过程Dim Count%, i%, st$Count = 0 : st = Trim(s)i = InStr(st, “ the “)Do While i

13、 0Count = Count + 1st = Mid(st, i + 1)i = InStr(st, “ the “)LoopFuncThe = Count End Function Private Sub Command1_Click() 调用函数过程Text2 = FuncThe(Text1) End Sub,两边要有空格,Function和Sub两种过程的区别,为找下一个准备,6.2 子过程的定义与调用,Sub ProcThe(s$, Count%) 方法二,定义sub过程 Dim i%, st$Count = 0 : st = Trim(s)i = InStr(st, “ the “

14、)Do While i 0Count = Count + 1st = Mid(st, i + 1) : i = InStr(st, “ the “)LoopEnd Sub Private Sub Command2_Click() 调用子程序过程Dim n% : Call ProcThe(Text1, n) : Text3 = n End Sub,增加一个形参Count,保存个数,Function和Sub两种过程的区别,6.2 子过程的定义与调用,1.若程序有一个返回值,用函数过程比较直观,当过程有多个返回值时,习惯用子过程 2.函数过程有返回值,过程名就有类型,同时在函数过程 体内必须对函数过

15、程名赋值. 3.形参个数的确定: 不要将过程中使用过的变量均作为形 参 4. 形参只能是简单变量、数组名、自定义类型,Function和Sub两种过程的区别,如例6.1 求面积 Public Function area(x!, y!, z!) As SingleDim C!C = 1 / 2 * (x + y + z)area = Sqr(C * (C - x) * (C - y) * (C - z) End Function,6.3 参数传递,参数传递: 在调用过程时,就是参数传递,是虚(形参)实(实参)结合。 虚实结合的两种方式:传值和传址,6.3.1 传址与传值,传值: “单向” 传递,

16、传址: “双向” 传递,实参,形参,传值时:在形参前用 ByVal来界定,传址时,在形参前用 ByRef或无ByRef和Byval关键字。,实参,形参,例6.7 编写交换两个数的过程,Swap1用传值传递,Swap2用传址传递,请读者区别两个过程分别调用后的结果,6.3.1 传址与传值,Public Sub Swap1(ByVal x%, ByVal y%) 传值Dim t% : t = x : x = y : y = t End Sub Public Sub Swap2(ByRef x%, y%) 传址Dim t% : t = x : x = y : y = t End Sub,Privat

17、e Sub Command1_Click()Dim a%, b% : a = 10: b = 20Swap1 a, b 调用sub过程Swap1,值单向Print “A1 = “; a; “ B1 = “; b; “a = 10: b = 20Swap2 a, b 调用sub过程Swap2,址双向Print “A1 = “; a; “ B1 = “; b; “ End Sub,传址:形参的变化会对实参 产生影响。(双向传递), ,传值:形参的变化不会对实参产生影响。(单向传递), ,6.3.1 传址与传值,6.3 参数传递 实验书P174-4,Sub m(x As Integer, y As

18、Integer)x = x + yy = y + x End Sub Private Sub Form_Click()Dim x As IntegerDim y As Integerx = 4: y = 5m x, y 址传递Print x; y;m (x), (y) 值传递Print x; y : End Sub 单击命令按钮,则结果是_。,m x, y,调用过程m, 址传递 形: X=4+5=9, Y=5+9=14 实参等于形参 m (x), (y),调用过程m, 值传递 形:x=9+14=23 y=14+23=37 实参:不变,注意: 带括号的变量传递时按值传递,6.3.2 数组参数的传

19、递,用数组名作为形参或实参,按址传递,忽略维数的定义,但数组的圆括号不能省 如果被调用过程不知道实参数组的上界和下界,可用LBound和UBound函数来确定传送给过程的数组的下界和上界 用数组元素作为实参进行传递,6.3.2 数组参数的传递,例6.8 编一个函数过程,求任意一维数组中各元素之积,主调该函数,分别求,Function tim(a() As Integer) As Double 定义t = 1For i = LBound(a) To UBound(a)t = t * a(i)Next itim = t End Function Private Sub Command1_Click

20、()Dim a%(1 To 5), b%(2 To 10), i%, t1#, t2#For i = 1 To 5 赋初值a(i) = iNext iFor i = 2 To 10 赋初值b(i) = iNext it1 = tim(a() : t2 = tim(b() 调用 Print “t1=“; t1, “t2=“; t2 End Sub,6.3.2 数组参数的传递,例6.9 编两个子过程:子过程一求数组中最大值和最小值;子过程二以每行5列来显示数组结果. 主调程序有10个元素,分别调用两个子过程.,Sub fmaxmin(a(), maxa, mina) 求最大值最小值的过程n1 =

21、LBound(a) : n2 = UBound(a)maxa = a(n1) : mina = a(n1)For i = n1 + 1 To n2If a(i) maxa Then maxa = a(i)If a(i) mina Then mina = a(i)Next i End Sub Sub printa(b() 一行输出5个数组元素的过程For i = LBound(b) To UBound(b)Print b(i);j = j + 1If j Mod 5 = 0 Then PrintNext i End Sub,P157 的代码错写在一行上了,Private Sub Command1

22、_Click()Dim a(1 To 10)For i = 1 To 10Randomizea(i) = Int(Rnd * 100)Next iCall printa(a() 调用Call fmaxmin(a(), a1, a2)Print “最大值为:“; a1, “最小值为:“; a2 End Sub,补充对象作为过程的参数,设一个工程由两个窗体组成,其名称分别为 Form1和Form2,在Form1上有一个名称为command1的命 令按钮.窗体Form1的程序代码如下: Private Sub Command1_Click()Dim a As Integera = 10Call G(

23、Form2, a) End Sub Private Sub G(f As Form, x As Integer)y = IIf(x 10, 100, -100)f.Showf.Caption = YEnd Sub,运行程序后,正确的结果是( ) orm1的caption的属性值为 orm的caption的属性值为 orm1的caption的属性值为 orm的caption的属性值为,B,作用域是某些事物起作用或有效的区域。,限于陆地,限于海洋,限于空中,6.4 过程和变量的作用域,在程序中我们定义的变量、过程、函数均有其作用范围即作用域。 过程作用域分为: 1.窗体/模块级:指在某个窗体或标准

24、模块内定义的过程,定义的过程前加Private 关键字,只能被本窗体或本标准模块中的过程调用 2. 全局级:指在某个窗体或标准模块内定义的过程,其默认是全局的,也可以加Public关键字, 作用域最大,作用在整个工程范围所有窗体和所有标准模块内。,6.4.1 过程的作用域,1. 局部变量(过程级) : 在过程中用Dim或不加声明直接使用的变量 2. 窗体/模块级变量:在窗体模块中的“通用”过程中用Dim/Private声明,可被本窗体/模块的任何过程访问 3. 全局级变量(工程级):必须在标准模块的通用过程中用Public或global定义,可以被应用程序的任何过程或函数访问.全局变量的值在整

25、个应用程序中始终不会消失和重新初始化,只有当整个应用程序执行结束时,才会消失。,6.4.2变量的作用域,6.4.2变量的作用域,例: 在一个标准模块中进行不同级的变量声明 Public pa As Integer 全局变量 Private mb As String * 10 窗体模块级变量 Sub F1()Dim Fa As Integer 局部变量 End Sub Sub F2()Dim Fb As Single 局部变量 End Sub,6.4.2变量的作用域,说明: 在一个过程中,变量不能同名,但可以与过程外的窗体/模块级变量或全局变量同名.如果存在同名情况,则在过程内使用的变量一般是指

26、过程内定义的局部变量,全局变量被同名的局部变量”屏蔽”掉了,若要访问,则要在变量名前加窗体名或模块名,使用形式如下:,窗体名或模块名.变量名,6.4.2变量的作用域,Public temp As Integer 全局变量 Private Sub Form_Click()Dim temp As Integer 局部变量temp = 10 访问局部变量 Form1.temp = 20 访问全局变量必须加窗体名Print Form1.temp, temp End Sub,6.4.2 变量的作用域 实验P164-21,在窗体上画一个名称为Commandl的命令按钮,再画两个名称分别为Labell、La

27、bel2的标签,然后编写如下程序代码: 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(ByVal a As Integer, ByVal b As Integer)x = a * a :Y = b + b End Sub 程序运行后,单击命令按钮,则两个标签中显示的内容分别是: A) 5和3 B) 25和3 C)25和6 D)5和6,6.4.3 静态变量,静

28、态变量:在程序运行过程中可以保留变量的值。每次调用过程时,静态变量的初值为上一次调 用过程结束后的变量的值,有如下三种定义形式:Static 变量名 As 类型Static Function 函数名(参数列表) As 类型Static sub 过程名(参数列表),若函数名、过程名前加Static,表示该函数、过程内的局部变量为静态变量,例6.10 一个窗体单击事件过程(Form_Click())和一个求和函数(sum()组成的应用程序,在Form_Click()过程中5次调用函数sum()。,注意:若将Static j%修改为dim j %,则结果如下面 的图所示.,Private Sub F

29、orm_Click()Dim i%, isum%For i = 1 To 5isum = sum(i)Print “isum=“; isum Next i End Sub Public Function sum(n As Integer)Static j% : j = j + nsum = j End Function,6.4.3 静态变量,补例(实验:P215-20) Function F( a As Integer)b = 0Static cb= b + 1c= c + 2F= a + b + cEnd FunctonPrivate Sub Command1_Click()Dim a As

30、 Integera = 2For i = 1 to 3Print F(a);Next i End Sub 运行上面的程序,单击命令按钮,输出结果为_。 A) 4 5 6 B) 5 7 9 C) 4 6 8 D) 4 7 9,分析: I=1,b=1,c=2,f=2+1+2=5 I=2,b=1,c=4,f=2+1+4=7 I=3,b=1,c=6,f=2+1+6=9,6.5 递归,过程的嵌套调用: 在一个过程(Sub过程或Function过程)中调用另外一个过程,称为过程的嵌套调用。,主程序调用S1End Sub,子过程 S1调用S2End Sub,子过程S2End Sub,执行过程: 主程序或子过

31、程遇到调用子过程语句就转去执行子过程,而本程序的余下部分要等从子过程返回后才得以继续执行。,6.5 递归,递归:就是一个过程调用过程本身。在递归调用中,一个过程执行的某一步要用到它自身的上一步(或上几步)的结果。 例:用递归方法求n!(4!)。 用递归方法求4!,即4!等于4 3!,而3!32!1!1。 可用下面的递归公式表示:,例6.11 求fac(n)=n! 用递归方法求n!(4!)。,递归编程特点:二分支 1.一分支结束 2. 二分支规则,Public Function fac(n As Integer) As Integer 定义If n = 1 Thenfac = 1Elsefac

32、= n * fac(n - 1)End If End Function Private Sub Command1_Click() 调用Print “fac(4)=“; fac(4) End Sub,6.5 递归,8.4 递归,例:用递归方法求n!(4!)的调用过程。,fac(4)=4*fac(3),fac(3)=3*fac(2),fac(2)=2*fac(1),fac(1)=1,fac(2)=2*1,fac(3)=3*2,fac(4)=4*6,6.5 递归,例6.12 用函数过程及递归实现求两个数的最大公约数,6.5 递归,例6.12 用函数过程及递归实现求两个数的最大公约数,6.5 递归,F

33、unction gcd1(m%, n%) As Integer 方法一函数Dor = m Mod nm = nn = rLoop While r 0gcd1 = m End Function Private Sub Command1_Click() 调用函数过程gcd1Dim x%, y%x = CInt(Text1)y = CInt(Text2)If x y Then t = x: x = y: y = tText3 = gcd1(x%, y%) End Sub,6.5 递归,Public Function gcd%(m%, n%) 方法二,递归If (m Mod n) = 0 Thengc

34、d = nElsegcd = gcd(n, m Mod n)End If End Function Private Sub Command2_Click() 调用递归函数gcdDim x%, y%x = CInt(Text1)y = CInt(Text2)If x y Then t = x: x = y: y = tText3 = gcd(x%, y%) End Sub,查找:在数组中,根据指定的关键值,找出与其值相同的元素。有顺序查找和二分查找方法。,6.6综合应用,例6.15 顺序查找根据查找的关键字与数组的元素逐一比较,若相同,则查找成功,若找不到,则查找失败。界面如下:,程序: Pub

35、lic Sub Search(a(), ByVal key, index%) Dim i% For i = LBound(a) To UBound(a)If key = a(i) Then 如找到,下标保存在index形参中,结束查找index = iExit SubEnd If Next iindex = -1 如找不到,index形参的值为-1 End Sub,6.6综合应用,程序: Private Sub Form_Click()Dim b() ( 此行需补充到P166 )b = Array(1, 3, 5, 7, 9, 2, 4)k = Val(InputBox(“输入要查找的值“)C

36、all Search(b, k, n%)If n = 0 Then Print n Else Print “找不到“ End Sub,6.6综合应用,本章小结,1. 子程序sub及函数Function函数定义与调用 2. 参数的址传递及值传递的定义及特点 3. 变量的作用域(局部、模块、全局) 4. 静态变量几种定义形式,作业 P167 二、选择题 三、填空题,本章等级考试大纲要求,八、过程 1. Sub过程: (1)Sub过程的建立。 (2)调用Sub过程。 (3)调用过程和事件过程。 2. Funtion过程: (1)Funtion过程的定义。 (2)调用Funtion过程。 3. 参数传

37、送: (1)形参与实参。(2)引用。 (3)传值。 (4)数组参数的传送。 4. 可选参数和可变参数。 5. 对象参数: (1)窗体参数。(2)控件参数。,教材P169-5:写结果,Public Function f(ByVal n%, ByVal r%)If n 0 Thenf = f(n r, r)Print n Mod r;End If End Function Private Sub Command1_Click()Print f(100, 8) End Sub,教材P169-5:写结果,分析:f(100,8) n r n0 f(nr,r)8 T f(12,8) 12 8 T f(1,

38、8) 1 8 T f(0,8) 0 8 F,教材P169-5:写结果,为方便分析,以f(16,8)为例:讲解16转为八进制的递归过程 f(16,8) n r n0 16 8 T f(168,8) 2 8 T f( 28, 8) 0 8 F, 结束函数f(28,8)过程,返回 f(168,8)中的下一 条语句 print 2 mod 8, 输出2,再返回f(16,8)中的 print 16 mod 8,即输出0,即输出20. 同理:print f(100,8)输出结果为144 用F9设置断点,然后”调试逐语句”可以观察过程,教材P169-6:写运行结果,Private Sub Command1_

39、Click() Dim m%, i%, x%(10)For i = 0 To 4x(i) = i + 1Next iFor i = 1 To 2Call proc(x)Next iFor i = 0 To 4Print x(i);Next i End Sub,Public Sub proc(a%()Static i%Doa(i) = a(i) + a(i + 1) i = i + 1Loop While i 2 End Sub,答案: 3 5 7 4 5,Private Sub Command1_Click() Dim m%, i%, x%(10)For i = 0 To 4x(i) = i

40、+ 1Next iFor i = 1 To 2Call proc(x)Next iFor i = 0 To 4Print x(i);Next i End Sub,Public Sub proc(a%()Static i%Doa(i) = a(i) + a(i + 1) i = i + 1Loop While i 2 End Sub,答案: 3 5 7 4 5,分析: x(0)=1, x(1)=2, x(2)=3, x(3)=4, x(4)=5 i=1,proc(x), i=0,a(0)=a(0)+a(1)=3, i=i+1=12i=1,a(1)=a(1)+a(2)=5,i=i+1=2,返回主

41、i=2,proc(x) i=2,a(2)=a(2)+a(3)=3+4=7,返回主 i=3,结束循环,输出数组元素,注意主程序i和Proc过程中的i是两个不同的变量,Private Sub Command1_Click()s = p(1) + p(2) + p(3) + p(4)Print s; End Sub Public Function p(n As Integer)Static sumFor I = 1 To nsum = sum + INext Ip = sum End Function,分析: P(1) =1因为:sum=1 ,p(1)=1 P(2) =4 因为 For I=1 to

42、 2Sum=1+1+2=4 P(3)=10 4+1+2+3=10 P(4)=10+1+2+3+4=20 所以最后结果:1+4+10+20=35,实验P164-23,实验P165-24,Private Sub Form_Click()Dim a As Integer, b As Integera = 8 : b = 3Call test(6, a, b + 1)Print “主程序“, 6, a, b End Sub Sub test(x As Integer, y As Integer, z As Integer)Print “子程序“, x, y, zx = 2: y = 4: z = 9E

43、nd Sub 当运行程序后,显示的结果是_。 A)子程序6 4 3 B) 主程序6 4 3 C)主程序6 8 4 D) 子程序6 8 4主程序6 8 4 子程序6 8 4 子程序6 4 3 主程序6 4 3,a b+1 8 4 x y z2 4 9,D,07年9月实验P166-27,(31)某人编写了一个能够返回数组a中10个数中最大数的函数过程,代码如下: Function Maxvalue(a() As Integer) As IntegerDim max%max=1 For k = 2 To 10If a(k)a(max) Thenmax = kEnd If Next kMaxvalue

44、 = max End Function 程序运行时,发现函数过程的返回值是错的,需要修改,下面的修改方案中正确的是 A)语句max = 1应改为max = a(1) B)语句For k = 2 To 10应改为For k = 1 To 10 C)If语句中的条件a(k)a(max)应改为a(k)max D)语句Maxvalue = max 应改为Maxvalue = a(max),D,06.9 实验P168-32,(26)有下列程序: Sub subP(b( ) As Integer)For i=1 To 4b(i)=2*iNext i End Sub Private Sub Command1

45、_Click( )Dim a(1 To 4) As Integera(1)=5 :a(2)=6 :a(3)=7: a(4)=8sub P a( ) For i=1 To 4Print a(i) Next i End Sub 运行上面的程序,单击命令按钮,输出结果为( )。 A)2 4 6 8 B)5 6 7 8 C)10 12 14 16 D)出错,A,分析:数组做参数,按址传递,(25)在窗体上画一个命令按钮,其名称为Command1,然后编写如下程序:(06年4月考题) Private Sub Command1_Click() Dim a(10)As Integer Dim x As In

46、teger For i=1 To 10a(i)=8+i Nextx=2Print a(f(x)+x) End Sub Function f(x As Integer)x=x+3f=x End Function 程序运行后,单击命令按钮,输出结果为。 12 B) 15 C) 17 D) 18,注意:址传递,调用后 x=2+3=5, f(2)=5 a(f(x)+x)=A(f(2)+5) =a(5+5) =a(10) =8+10=18,选D,实验书P170-36,在窗体上画一个名称为Command1的命令按钮。然后编写如下程序: Option Base 1 Private Sub Command1_

47、Click Dim a(10)As integerFor i=1 To 10a(i)=iNext Call swap( 【 】 )For i=1 To 10Print a(i)Next End Sub Sub swap(b()As Integer) n= 【 】 For i=1 to n/2t=b(i) b(i)=b(n) b(n)=t【 】 Next End Sub 上述程序的功能是,通过调用过程swap, 调换数组中数值的存放位置,即a(1)与a (10)的值互换。a(2)与a(9)的值互换 ,.。请填空。,a或a() Ubound(b) 或10 n=n-1,08年4月考题,分析: 数组做参数的址传递 所以call swap(a)或call swap(a() n代表求数组元素的个数 i=1,a(1)与a(n) 交换 i=2,a(2)与a(n-1)交换,以后依次,所以n=n-1,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报