Private Function GetAverage(Source() As Single, n As Integer) As Single '去除最大最小n个数求平均值 InsertSort Source Dim i As Integer, Sum As Single Dim k As Integer '--0的个数----- Dim n0 As Integer '为0 Dim nn0 As Integer '不为0 n0 = 0 nn0 = 0 For i = LBound(Source) To UBound(Source) If Source(i) = 0 Then n0 = n0 + 1 End If Next '----------- For k = n0 + n To UBound(Source) - n Sum = Sum + Source(k) nn0 = nn0 + 1 Next If nn0 > 0 Then GetAverage = Sum / nn0 Else GetAverage = -1 End If End Function Private Sub InsertSort(Source() As Single) '由小到大排序 Dim i As Long, j As Long, k As Long, c As Long Dim tmpArr() As Single ReDim n(LBound(Source) To UBound(Source)) As Single c = LBound(Source) For i = LBound(Source) To UBound(Source) For j = LBound(Source) To c - 1 If Source(i) <= n(j) Then Exit For Next For k = c - 1 To j Step -1 n(k + 1) = n(k) Next n(j) = Source(i) c = c + 1 Next For i = LBound(Source) To UBound(Source) Source(i) = n(i) Next End SubPrivate Sub Command1_Click()Dim c(10) As Singlec(0) = 2 c(1) = 8 c(2) = 2 c(3) = 3 c(4) = 4 c(5) = 0 c(6) = 0 c(7) = 2 c(8) = 0 c(9) = 0 c(10) = 0 Text1.Text = GetAverage(c, 1) End Sub写了一个,得出2.75
InsertSort Source
Dim i As Integer, Sum As Single
Dim k As Integer
'--0的个数-----
Dim n0 As Integer '为0
Dim nn0 As Integer '不为0
n0 = 0
nn0 = 0
For i = LBound(Source) To UBound(Source)
If Source(i) = 0 Then
n0 = n0 + 1
End If
Next
'-----------
For k = n0 + n To UBound(Source) - n
Sum = Sum + Source(k)
nn0 = nn0 + 1
Next
If nn0 > 0 Then
GetAverage = Sum / nn0
Else
GetAverage = -1
End If
End Function
Private Sub InsertSort(Source() As Single) '由小到大排序
Dim i As Long, j As Long, k As Long, c As Long
Dim tmpArr() As Single
ReDim n(LBound(Source) To UBound(Source)) As Single
c = LBound(Source)
For i = LBound(Source) To UBound(Source)
For j = LBound(Source) To c - 1
If Source(i) <= n(j) Then Exit For
Next
For k = c - 1 To j Step -1
n(k + 1) = n(k)
Next
n(j) = Source(i)
c = c + 1
Next
For i = LBound(Source) To UBound(Source)
Source(i) = n(i)
Next
End SubPrivate Sub Command1_Click()Dim c(10) As Singlec(0) = 2
c(1) = 8
c(2) = 2
c(3) = 3
c(4) = 4
c(5) = 0
c(6) = 0
c(7) = 2
c(8) = 0
c(9) = 0
c(10) = 0
Text1.Text = GetAverage(c, 1)
End Sub写了一个,得出2.75