1、实验十四 过程(续)【实验目的】 1、掌握自定 义子过程以及函数过程的定义和调用方法 ;2、掌握形参和实参对应关系;3、掌握值传递和地址传递的传递方式以及区别。【实验内容】 1、编写一个包含多个窗体及多个模块的工程:窗体 1:主窗体,放置按扭,准备调用其他窗体;窗体 2:输入一个数,显示它是否幸运数;幸运数:指前两位数字之和等于后两位数字之和的数。窗体 3:输入两个数,显示它们之间的所有幸运数;窗体 4:输入一个数,显示比它小的最大幸运数;【提示】 编写判断一个四位数是否幸运数的函数过程 sum(返回值是逻辑型),放在主窗体中。注意,函数过程是必须是全局级的(即在函数定义时加Public或者缺
2、省,但一定不能加 Private),否则 其他窗体不能调用,调用时要在函数名前加窗体名,如:Form1.sum(text1.text) 先添加几个窗体并分别设置相应的控件及属性,并正确设置启动窗体。程序代码中利用多窗体的语句和方法将需要的窗体载入内存,不需要的窗体可隐藏或从内存中删去。Private Sub Command1_Click(Index As Integer)Select Case IndexCase 0Form2.ShowCase 1Form3.ShowCase 2Form4.ShowCase ElseEndEnd SelectEnd SubPublic Function sum
3、(s$) As BooleanDim n%(4)For i = 1 To 4n(i) = Val(Mid(s, i, 1)Nextsum = IIf(n(1) + n(2) = n(3) + n(4), True, False)End FunctionPrivate Sub Command1_Click()If Form1.sum(Text1.Text) ThenLabel1.Caption = Text1 p; m; n(1)End SubPrivate Sub Command1_Click()Dim c()a% = 1: b% = 2c = Array(1, 2, 3)Call test(
4、a, b + 3, c)Print “Main:“; a; b; c(1)End Sub4、运行下面程序段,体会过程调用过程中传值和传址的区别。Private Sub test(ByVal p%, ByVal m%, n()p = p + 1: m = m + 1n(1) = 999Print “Sub:“; p; m; n(1)End SubPrivate Sub Command1_Click()Dim c()a% = 1: b% = 2c = Array(1, 2, 3)Call test(a, b + 3, c)Print “Main:“; a; b; c(1)End Sub 运行程序,
5、分析结果。 将 Private Sub test(ByVal p%, ByVal m%, n()改为 Private Sub test(p%, m%, n()再运行并分析根据运行结果回答下面问题:1) 为什么两种调用方式,a 的输出的结果会发 生变化,而 b却不变?2) 可以将 Private Sub test(ByVal p%, ByVal m%, n()改为Private Sub test(ByVal p%, ByVal m%, ByVal n()吗?为什么?【选作】从键盘上输入一个整数,则在窗体上显示此整数所有不同的因子及因子个数。(求因子及因子个数要求用过程完成)Private Sub test(p%, m%, n()p = p + 1: m = m + 1n(1) = 999Print “Sub:“; p; m; n(1)End SubPrivate Sub Command1_Click()Dim c()a% = 1: b% = 2c = Array(1, 2, 3)Call test(a, b + 3, c)Print “Main:“; a; b; c(1)End Sub