VB这道题怎么解?谢谢
试题6(每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】PrivateSubf(b()AsInteger,ByRef...
试题6(每小题3分,共12分)
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
Private Sub f(b() As Integer, ByRef m As Integer)
Dim i As Integer, j As Integer, k As Integer
i = 1
Do While i <= m
For j = 1 To m
If b(i) Mod b(j) = 0 And i <> j Then
For k = i To m - 1: b(k) = b(k + 1): Next k
Exit For
End If
Next j
If j > m Then i = i + 1 Else m = m - 1
Loop
End Sub
Private Sub Command1_Click()
Dim a(6) As Integer, i As Integer, n As Integer
n = 6
For i = 1 To 6: a(i) = InputBox("a(" & i & ")="): Next i
Call f(a, n)
For i = 1 To n: Print a(i); : Next i
End Sub
(21)单击Command1输入7、8、5、4、9、3后,相应的显示结果为:
A、8 9 3 B、8 9 3 3 3 3 C、7 5 4 3 3 3 D、7 5 4 3
(22)如果将过程f首句中的“ByRef”改为“Byval”,输入数据同(21),显示结果为:
A、8 9 3 B、8 9 3 3 3 3 C、7 5 4 3 3 3 D、7 5 4 3
(23)单击Command1输入4、12、27、8、-6、3后,相应的显示结果为:
A、4 3 3 3 3 3 B、4 3 C、12 27 8 -6 D、12 27 8
(24)如果将过程f首句中的“ByRef”改为“Byval”,输入数据同(23),显示结果为:
A、4 3 3 3 3 3 B、4 3 C、12 27 8 -6 D、12 27 8
请各位好心人能详细解答下吗 谢谢 万分感谢!~ 展开
阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。
【程序】
Private Sub f(b() As Integer, ByRef m As Integer)
Dim i As Integer, j As Integer, k As Integer
i = 1
Do While i <= m
For j = 1 To m
If b(i) Mod b(j) = 0 And i <> j Then
For k = i To m - 1: b(k) = b(k + 1): Next k
Exit For
End If
Next j
If j > m Then i = i + 1 Else m = m - 1
Loop
End Sub
Private Sub Command1_Click()
Dim a(6) As Integer, i As Integer, n As Integer
n = 6
For i = 1 To 6: a(i) = InputBox("a(" & i & ")="): Next i
Call f(a, n)
For i = 1 To n: Print a(i); : Next i
End Sub
(21)单击Command1输入7、8、5、4、9、3后,相应的显示结果为:
A、8 9 3 B、8 9 3 3 3 3 C、7 5 4 3 3 3 D、7 5 4 3
(22)如果将过程f首句中的“ByRef”改为“Byval”,输入数据同(21),显示结果为:
A、8 9 3 B、8 9 3 3 3 3 C、7 5 4 3 3 3 D、7 5 4 3
(23)单击Command1输入4、12、27、8、-6、3后,相应的显示结果为:
A、4 3 3 3 3 3 B、4 3 C、12 27 8 -6 D、12 27 8
(24)如果将过程f首句中的“ByRef”改为“Byval”,输入数据同(23),显示结果为:
A、4 3 3 3 3 3 B、4 3 C、12 27 8 -6 D、12 27 8
请各位好心人能详细解答下吗 谢谢 万分感谢!~ 展开
2个回答
展开全部
我想,你要的不是答案,而是为什么这样,对吧?
这道题主要考点是在于 ByRef和Byval。
ByRef:按地址传送参数,就是调用函数时,也会改变调用函数中 实参的值。VB缺省的参数传递方式。
(21)题中,调用Call f(a, n) 前后的数组、n值都变化了,=函数里面的m=3,选D
Byval:按值传送参数,就是调用函数时,不会改变调用函数中 实参的值。
(22)题中,调用Call f(a, n) 前后的数组值变化了,而n的值未变,所以输出六个值,选C
PS:再解释一下:
ByRef:实参传给形参后,如果形参的值在函数中改变了,他同时会改变实参的值。因为他们(形参和实参)用来存储的空间是同一块内存。
Byval:形参和实参用来存储数据的空间不是同一块内存。
这道题主要考点是在于 ByRef和Byval。
ByRef:按地址传送参数,就是调用函数时,也会改变调用函数中 实参的值。VB缺省的参数传递方式。
(21)题中,调用Call f(a, n) 前后的数组、n值都变化了,=函数里面的m=3,选D
Byval:按值传送参数,就是调用函数时,不会改变调用函数中 实参的值。
(22)题中,调用Call f(a, n) 前后的数组值变化了,而n的值未变,所以输出六个值,选C
PS:再解释一下:
ByRef:实参传给形参后,如果形参的值在函数中改变了,他同时会改变实参的值。因为他们(形参和实参)用来存储的空间是同一块内存。
Byval:形参和实参用来存储数据的空间不是同一块内存。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询