先要求自动生成20个学生的二门课成绩,然后求出最科成绩的最高最低以及平均分。成绩是生成了。但是不懂得怎么比较?要怎么才能获得那个生成的成绩呢??调用数组吗??好头痛啊。。求求大家帮帮忙忙了。。万分感谢!

解决方案 »

  1.   

    应该是比较简单的问题:
    你写一个求单科成绩求最大值\最小值\平均值的函数,将每科成绩的相应值求出来就行了.
    比如:
    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
      

  2.   

    i=0
    拿到某个值时做如下操作:
       Redim preserve Arr(i) as Integer
        Arr(i) = iValue'你拿到的值
        i=i+1
    这需要取值
      

  3.   

    楼主帖子发错了地方,一般都不想在非技术区回复技术问题,请楼主下次注意!
    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