通过前面的学习,我们知道,数组是按一定顺序(序号)排列的元素集合。例如s(0)之后就是s(1),s(1)之后是s(2)……等等。那么,由此看来,根据序号,就可以对它进行一些统计量的计算了。 例如,设置一个变量,当这个数组的元素符合某个条件时,这个变量就累加1,那么当遍历元素之后,这个变量就是符合这个条件的元素个数了。这就是“计数”;求和也类似,不同的是,不是累加1,而是把数组的值进行累加;至于平均值嘛,把总和除以个数不就是了?^_^ 最大值、最小值怎么办?这个也简单。就拿最大值来说吧,我们可以设置一个远远小于数组中所有元素的值(想一想:为什么不是远远比它们大的值?),后然后跟数组中的值进行比较,如果比它大,就替换掉,否则就保留起来;那么最后得到的这个值就是最大值了。 这里只列出求和的算法,其它算法由大家思考吧: - 定义一个变量lngSum,初始化为0。
- 定义数组元素序号变量i,初始化为0。
- 当i<数组元素个数时,重复执行4、5。
- 当元素>0时,计算lngSum+arr(i)的值,并保存到lngSum中。
- i加1。
- Function getAvg(ByRef arr()) As String
- Dim lngCnt As Long
- Dim lngSum As Long
- Dim dblAvg As Double
- Dim i As Long
- Dim lngMax As Long
- Dim lngMin As Long
- '这里用长整型的范围来设置,实际操作中只需要设置一个
- lngMax = -2147483647
- lngMin = 2147483647
- For i = LBound(arr) To UBound(arr)
- If arr(i) > 0 Then
- lngCnt = lngCnt + 1
- lngSum = lngSum + arr(i)
- lngMax = arr(i)
- Else
- lngMin = arr(i)
- End If
- Next
- getAvg = "符合条件的个数:" & lngCnt & vbCrLf & "合计:" & lngSum _
- & vbCrLf & "平均:" & lngSum / lngCnt & vbCrLf & "最大值:" & lngMax & vbCrLf & "最小值:" & lngMin
- End Function
复制代码可以用以下代码进行测试:
- Sub test()
- Dim myarr()
- myarr = Array(1, 2, 3, 4, -10)
- Msgbox getAvg(myarr)
- End Sub
复制代码需要注意的是:1、数组变量只能是传址过程(ByRef),因此测试时不要指定变量类型(例如Dim myarr() As Long),否则会出错。2、也不能直接输入数组【例如:Msgbox getAvg(Array(1, 2, 3, 4, -10))】,而是要先定义数组,再进行输入。
【新手入门】之一:If分支语句
【新手入门】之二:分支语句总结
【新手入门】之三:循环语句For
【新手入门】之四:循环语句Do和死循环
【新手入门】之五:公共变量与传址过程、传值过程
【新手入门】之六:“悲欢离合总无情”——浅谈Split和Join
【新手入门】之七:嵌套与并列——再谈If流程问题
【新手入门】之八:“连就连”——浅谈“&”和“+”连接符的区别
【新手入门】之九:从百钱百鸡谈起——浅谈“规划求解”兼答lingjiang问
【新手入门】之十:书到用时方恨少——自定义菜单(Access 2003)的制作
【新手入门】之十一:浅谈ADO之序言
【新手入门】之十二:浅谈ADO之Connection
【新手入门】之十三:浅谈ADO之Conmmand(上)
【新手入门】之十四:浅谈ADO之Command(下)
【新手入门】之十五:浅谈ADO之Recordset(上)
【新手入门】之十六:浅谈ADO之Recordset(下)
【新手入门】之十七:浅谈列表框的使用
【新手入门】之十八:双击列表框修改数据
【新手入门】之十九:从“书与女友恕不外借”谈起——浅谈“Bookmark”的使用
【新手入门】之二十:“书与书签”——bookmark属性答疑
【新手入门】之二十一:记录集的“凌迟”——逐条导出记录集
【新手进阶】之一:基础算法(一)
【新手进阶】之二:基础算法(二)
【新手进阶】之三:基础算法(三)
【新手进阶】之四:基础算法(四)
【新手进阶】之五:排序搜索(一)
【新手进阶】之六:排序搜索(二)
【新手进阶】之七:递归算法
【新手进阶】之八:冒泡排序
【新手进阶】之九:浅谈不绑定数据源操作记录
【新手进阶】之十:工作日的计算
【新手进阶】之十一:“庖丁解牛”和“纪昌学射”——浅谈表格式文本数据的导入
【新手进阶】之十二:从四脚腾空的奔马谈起——原来界面可以这样设计
【新手进阶】之十三:Outlook风格导航界面
【新手进阶】之十四:仓库管理系统
|