应该是比较简单的问题: 你写一个求单科成绩求最大值\最小值\平均值的函数,将每科成绩的相应值求出来就行了. 比如: Option ExplicitPrivate Sub Command1_Click() Dim a, b a = Array(78, 87.5, 64, 92, 67, 99, 100, 63.5, 77, 47.5, 81, 88, 76, 94, 29, 66, 57, 40, 95, 79) '某科分数 b = Max_Min_Mean(a) MsgBox "最高分=" & b(0) MsgBox "最低分=" & b(1) MsgBox "平均分=" & Format(b(2), "0.00") End SubPrivate Function Max_Min_Mean(ByRef a As Variant) As Variant Dim l As Long, i As Long Dim x As Single, y As Single, s As Single l = UBound(a) x = a(0) y = a(0) s = a(0) For i = 1 To l - 1 If a(i) > x Then x = a(i) If a(i) < y Then y = a(i) s = s + a(i) Next s = s / (l + 1) Max_Min_Mean = Array(x, y, s)End Function
楼主帖子发错了地方,一般都不想在非技术区回复技术问题,请楼主下次注意! Option ExplicitPrivate Sub Form_Load() '放四个标签label控件label1...4 Dim i As Long Dim Grade(1 To 20) As Single Dim Max As Single, Min As Single, Mean As Single '最大值,最小值,平均值
Label1.Caption = "随机成绩": Label2.Caption = "最大值": Label3.Caption = "最小值": Label4.Caption = "平均值" Call CreateRndArray(Grade) For i = 1 To 20 Label1.Caption = Label1.Caption & vbCrLf & CStr(Grade(i)) Next i Call MaxMinMean(Grade, Max, Min, Mean) Label2.Caption = Label2.Caption & vbCrLf & CStr(Max) Label3.Caption = Label3.Caption & vbCrLf & CStr(Min) Label4.Caption = Label4.Caption & vbCrLf & CStr(Mean) End Sub '利用随机函数产生20个0~100之间的随机数 myArray(小标从1开始)存储随机数 随机数个数 Seed种子 Private Sub CreateRndArray(ByRef myArray() As Single, Optional ByVal Seed As Long = 65535) Dim i As Long, rndNum As Single, Num As Long i = 0 Num = UBound(myArray) '随机数个数 Call Rnd(Seed) Do While i < Num rndNum = Format$((Rnd * 100), "0.#") If rndNum >= 0 And rndNum <= 100 Then i = i + 1 myArray(i) = rndNum End If Loop End Sub '从数组中得到最大值 最小值 平均值 myArray(小标从1开始)需要处理的数组 Private Sub MaxMinMean(ByRef myArray() As Single, ByRef Max As Single, ByRef Min As Single, ByRef Mean As Single) Dim Num As Long, i As Long Dim x As Single, y As Single, s As Single Num = UBound(myArray) Max = myArray(1): Min = myArray(1): Mean = 0 '初始化
For i = 1 To Num If myArray(i) > Max Then Max = myArray(i) If myArray(i) < Min Then Min = myArray(i) Mean = Mean + myArray(i) Next Mean = Format(Mean / Num, "0.#") End Sub
你写一个求单科成绩求最大值\最小值\平均值的函数,将每科成绩的相应值求出来就行了.
比如:
Option ExplicitPrivate Sub Command1_Click()
Dim a, b
a = Array(78, 87.5, 64, 92, 67, 99, 100, 63.5, 77, 47.5, 81, 88, 76, 94, 29, 66, 57, 40, 95, 79) '某科分数
b = Max_Min_Mean(a)
MsgBox "最高分=" & b(0)
MsgBox "最低分=" & b(1)
MsgBox "平均分=" & Format(b(2), "0.00")
End SubPrivate Function Max_Min_Mean(ByRef a As Variant) As Variant
Dim l As Long, i As Long
Dim x As Single, y As Single, s As Single
l = UBound(a)
x = a(0)
y = a(0)
s = a(0)
For i = 1 To l - 1
If a(i) > x Then x = a(i)
If a(i) < y Then y = a(i)
s = s + a(i)
Next
s = s / (l + 1)
Max_Min_Mean = Array(x, y, s)End Function
拿到某个值时做如下操作:
Redim preserve Arr(i) as Integer
Arr(i) = iValue'你拿到的值
i=i+1
这需要取值
Option ExplicitPrivate Sub Form_Load()
'放四个标签label控件label1...4
Dim i As Long
Dim Grade(1 To 20) As Single
Dim Max As Single, Min As Single, Mean As Single '最大值,最小值,平均值
Label1.Caption = "随机成绩": Label2.Caption = "最大值": Label3.Caption = "最小值": Label4.Caption = "平均值"
Call CreateRndArray(Grade)
For i = 1 To 20
Label1.Caption = Label1.Caption & vbCrLf & CStr(Grade(i))
Next i
Call MaxMinMean(Grade, Max, Min, Mean)
Label2.Caption = Label2.Caption & vbCrLf & CStr(Max)
Label3.Caption = Label3.Caption & vbCrLf & CStr(Min)
Label4.Caption = Label4.Caption & vbCrLf & CStr(Mean)
End Sub
'利用随机函数产生20个0~100之间的随机数 myArray(小标从1开始)存储随机数 随机数个数 Seed种子
Private Sub CreateRndArray(ByRef myArray() As Single, Optional ByVal Seed As Long = 65535)
Dim i As Long, rndNum As Single, Num As Long
i = 0
Num = UBound(myArray) '随机数个数
Call Rnd(Seed)
Do While i < Num
rndNum = Format$((Rnd * 100), "0.#")
If rndNum >= 0 And rndNum <= 100 Then
i = i + 1
myArray(i) = rndNum
End If
Loop
End Sub
'从数组中得到最大值 最小值 平均值 myArray(小标从1开始)需要处理的数组
Private Sub MaxMinMean(ByRef myArray() As Single, ByRef Max As Single, ByRef Min As Single, ByRef Mean As Single)
Dim Num As Long, i As Long
Dim x As Single, y As Single, s As Single
Num = UBound(myArray)
Max = myArray(1): Min = myArray(1): Mean = 0 '初始化
For i = 1 To Num
If myArray(i) > Max Then Max = myArray(i)
If myArray(i) < Min Then Min = myArray(i)
Mean = Mean + myArray(i)
Next
Mean = Format(Mean / Num, "0.#")
End Sub