作业帮 > 综合 > 作业

vb编程 Call q(1,i):Call q(2,j):Call q(3,k):

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/23 20:16:36
vb编程 Call q(1,i):Call q(2,j):Call q(3,k):
Dim i As Integer,j As Integer,k As Integer,h As Integer
Private Sub Form_click()
i = 0:j = 1:k = 2
Call q(1,i):Print i; j; k
Call q(2,j):Print i; j; k
Call q(3,k):Print i; j; k
End Sub
Private Sub p(i)
i = i + 1:Print i; j; k
End Sub
Private Sub q(ByVal h,j)
i = j
If h = 0 Then
Call p(j)
Else
If h = 1 Then Call p(i) Else j = j + 1
End If
End Sub
Call q(1,i):Call q(2,j):Call q(3,k):怎样传递的?
还有形参h对应的实参是什么,为什么又会有i 呢
Call q(1, i): Call q(2, j): Call q(3, k): 这些是调用子程序
若变量前有byval就是值传递,比如Call q(1, i).i=0,即把1和0分别赋给子程序中的h,j.
形参h对应的实参是在调用的时候第一个传入的值.比如:Call q(2, j)这里2是第一个传入的数,所以就是形参h对应的实参.再比如Call q(3, k).这里3是第一个传入的数,所以3就是h的实参.
这个代码是利用随着变量i 的改变来实现输出各组不同的数.应该是测试什么东西用的.
再问: 这个和二维数组有什么关系吗? 我看到书上输入一个3行5列的二维数组是用dim a(3,5)as single的,然后这个和 dim a(1 to 3 ,1 to 5)有什么区别吗?
再答: 这个和二维数组没关系,调用过程的时候可以设置多个值进行传递。 这个在定义的时候可以设置。比如:Private Sub q(ByVal h),这时候你调用过程的时候就只能这样调用Call q(一个数字或一个变量),括号里只能填一个值。 所以,传递的参数的个数和数组的维数没有关系。只是他们之间定义的格式类似而已。
再问: 比如:Call q(2, j)这里2是第一个传入的数,所以就是形参h对应的实参。 h=2的话下面这步不是做不了了 Private Sub q(ByVal h, j) i = j If h = 0 Then Call p(j) Else If h = 1 Then Call p(i) Else j = j + 1 End If End Sub
再答: 事实上实际过程就是如此。Call q(2, j),在过程里h=2,j=1,i=j=1。经判断后什么也不做。直接输出i,j,k。上述程序只有Call q(1, i)的时候,过程中的判断才成立,即h=1。后面2个调用的过程都是直接过了判断并输出。