通過(guò)前面的學(xué)習(xí),我們知道,數(shù)組是按一定順序(序號(hào))排列的元素集合。例如s(0)之后就是s(1),s(1)之后是s(2)……等等。那么,由此看來(lái),根據(jù)序號(hào),就可以對(duì)它進(jìn)行一些統(tǒng)計(jì)量的計(jì)算了。 例如,設(shè)置一個(gè)變量,當(dāng)這個(gè)數(shù)組的元素符合某個(gè)條件時(shí),這個(gè)變量就累加1,那么當(dāng)遍歷元素之后,這個(gè)變量就是符合這個(gè)條件的元素個(gè)數(shù)了。這就是“計(jì)數(shù)”;求和也類似,不同的是,不是累加1,而是把數(shù)組的值進(jìn)行累加;至于平均值嘛,把總和除以個(gè)數(shù)不就是了?^_^ 最大值、最小值怎么辦?這個(gè)也簡(jiǎn)單。就拿最大值來(lái)說(shuō)吧,我們可以設(shè)置一個(gè)遠(yuǎn)遠(yuǎn)小于數(shù)組中所有元素的值(想一想:為什么不是遠(yuǎn)遠(yuǎn)比它們大的值?),后然后跟數(shù)組中的值進(jìn)行比較,如果比它大,就替換掉,否則就保留起來(lái);那么最后得到的這個(gè)值就是最大值了。 這里只列出求和的算法,其它算法由大家思考吧: - 定義一個(gè)變量lngSum,初始化為0。
- 定義數(shù)組元素序號(hào)變量i,初始化為0。
- 當(dāng)i<數(shù)組元素個(gè)數(shù)時(shí),重復(fù)執(zhí)行4、5。
- 當(dāng)元素>0時(shí),計(jì)算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
- '這里用長(zhǎng)整型的范圍來(lái)設(shè)置,實(shí)際操作中只需要設(shè)置一個(gè)
- 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 = "符合條件的個(gè)數(shù):" & lngCnt & vbCrLf & "合計(jì):" & lngSum _
- & vbCrLf & "平均:" & lngSum / lngCnt & vbCrLf & "最大值:" & lngMax & vbCrLf & "最小值:" & lngMin
- End Function
復(fù)制代碼可以用以下代碼進(jìn)行測(cè)試:
- Sub test()
- Dim myarr()
- myarr = Array(1, 2, 3, 4, -10)
- Msgbox getAvg(myarr)
- End Sub
復(fù)制代碼需要注意的是:1、數(shù)組變量只能是傳址過(guò)程(ByRef),因此測(cè)試時(shí)不要指定變量類型(例如Dim myarr() As Long),否則會(huì)出錯(cuò)。2、也不能直接輸入數(shù)組【例如:Msgbox getAvg(Array(1, 2, 3, 4, -10))】,而是要先定義數(shù)組,再進(jìn)行輸入。
【新手入門】之一:If分支語(yǔ)句
【新手入門】之二:分支語(yǔ)句總結(jié)
【新手入門】之三:循環(huán)語(yǔ)句For
【新手入門】之四:循環(huán)語(yǔ)句Do和死循環(huán)
【新手入門】之五:公共變量與傳址過(guò)程、傳值過(guò)程
【新手入門】之六:“悲歡離合總無(wú)情”——淺談Split和Join
【新手入門】之七:嵌套與并列——再談If流程問(wèn)題
【新手入門】之八:“連就連”——淺談“&”和“+”連接符的區(qū)別
【新手入門】之九:從百錢百雞談起——淺談“規(guī)劃求解”兼答lingjiang問(wèn)
【新手入門】之十:書到用時(shí)方恨少——自定義菜單(Access 2003)的制作
【新手入門】之十一:淺談ADO之序言
【新手入門】之十二:淺談ADO之Connection
【新手入門】之十三:淺談ADO之Conmmand(上)
【新手入門】之十四:淺談ADO之Command(下)
【新手入門】之十五:淺談ADO之Recordset(上)
【新手入門】之十六:淺談ADO之Recordset(下)
【新手入門】之十七:淺談列表框的使用
【新手入門】之十八:雙擊列表框修改數(shù)據(jù)
【新手入門】之十九:從“書與女友恕不外借”談起——淺談“Bookmark”的使用
【新手入門】之二十:“書與書簽”——bookmark屬性答疑
【新手入門】之二十一:記錄集的“凌遲”——逐條導(dǎo)出記錄集
【新手進(jìn)階】之一:基礎(chǔ)算法(一)
【新手進(jìn)階】之二:基礎(chǔ)算法(二)
【新手進(jìn)階】之三:基礎(chǔ)算法(三)
【新手進(jìn)階】之四:基礎(chǔ)算法(四)
【新手進(jìn)階】之五:排序搜索(一)
【新手進(jìn)階】之六:排序搜索(二)
【新手進(jìn)階】之七:遞歸算法
【新手進(jìn)階】之八:冒泡排序
【新手進(jìn)階】之九:淺談不綁定數(shù)據(jù)源操作記錄
【新手進(jìn)階】之十:工作日的計(jì)算
【新手進(jìn)階】之十一:“庖丁解牛”和“紀(jì)昌學(xué)射”——淺談表格式文本數(shù)據(jù)的導(dǎo)入
【新手進(jìn)階】之十二:從四腳騰空的奔馬談起——原來(lái)界面可以這樣設(shè)計(jì)
【新手進(jìn)階】之十三:Outlook風(fēng)格導(dǎo)航界面
【新手進(jìn)階】之十四:倉(cāng)庫(kù)管理系統(tǒng)
|