一道VB题目

编写窗体的单击事件过程,随机生成一个含有10个元素的一维数组,输出打印到窗体上,调用通用过程avg1求该数组中元素的平均值;再引用函数过程avg2求该数组中元素的平均值。... 编写窗体的单击事件过程,随机生成一个含有10个元素的一维数组,输出打印到窗体上,调用通用过程avg1求该数组中元素的平均值;再引用函数过程avg2求该数组中元素的平均值。
Option Base 1
Private Sub Form_Click()
Dim a(10) As Integer, p As Single
Randomize
For i = 1 To 10
a(i) = Int(90 * Rnd + 10)
Print a(i)
Next i
Print
Call avg1(a, p)
Print "sub过程平均:"; p
p = avg2(a)
Print "fuction 过程平均:"; p
End Sub

编写通用过程avg1和函数过程avg2,求一组数的平均值
展开
 我来答
昔俊能Nq
2011-04-15 · TA获得超过938个赞
知道小有建树答主
回答量:518
采纳率:0%
帮助的人:665万
展开全部
楼上的两位都犯了个错误!
VB中数组的传递只能是Byref方式的,就是传地址方式;byval是编译不通过的;
传地址会同时影响到原变量的值,赋值则反之!
Public Sub avg1(ByRef arr() As Integer, ByRef p As Single)
Dim i As Integer
Dim sum As Long
sum = 0
For i = 1 To 10
sum = sum + arr(i)
Next
p = sum / 10
End Sub

Public Function avg2(ByRef arr() As Integer) As Single
Dim i As Integer
Dim sum As Long
sum = 0
For i = 1 To 10
sum = sum + arr(i)
Next
avg2 = sum / 10
End Function
百度网友e8a369d
2011-04-15 · 超过85用户采纳过TA的回答
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:176万
展开全部
如果在SUB和FUNCTION中都要求得到返回值的话,AVG2可以那样调用,但AVG1就不能了,因为参数P传递进去,回来后P是刚才传入的值,即使在AVG1中作了变化,但结果没有变化,这是因为SUB是默认通过ByVal(值)方式传递的,要想P的值变化,必须得用ByRef(地址)方式传递。如下:
Sub AVG1(byval A() as integer,byref p as integer)
............
End Sub

Function AVG2(byval A() as integer) as integer
............
End Function
'写完才发现与楼上的差不多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
唐山狼HC
2011-04-15 · 超过53用户采纳过TA的回答
知道答主
回答量:162
采纳率:0%
帮助的人:163万
展开全部
sub avg1(byval numarray() as integer,byref res as single)

这个过程运行到最后,把得到的值赋值给res就可以了。参数传地址的方式,就能把值直接带出来。

function avg2(byval numarray() as integer) as single

函数里面的东西就不用我写了吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式