有5个学生,每个学生有姓名,学号,数学英语物理化学四门课程成,输入成绩后,求出每个学生的总分和平均

有5个学生,每个学生有姓名,学号,数学英语物理化学四门课程成,输入成绩后,求出每个学生的总分和平均分,并按平均分大小从高到低输出这五个学生的平均分(用自定义类型)


用什么语言编写程序?

Private Type Student
  Name As String * 4
  StudentID As String
  Math As Single
  English As Single
  Physics As Single
  Chemistry As Single
  Total As Single
  Average As Single
  Ranking As Integer
End Type

Private Sub Command1_Click()
  Randomize (Timer)
  Dim Stu(4) As Student
  For i = LBound(Stu) To UBound(Stu)
    With Stu(i)
      .Name = InputBox("No_" & i + 1 & "_Name:", "成绩录入", "000" & i + 1)
      .StudentID = InputBox("No_" & i & "_ID:", "成绩录入", "15F00" + CStr(i))
      .Math = InputBox("No_" & i + 1 & "_Math:", "成绩录入", Int(Rnd(i + 1) * 50 + 50))
      .English = InputBox("No_" & i + 1 & "_English:", "成绩录入", Int(Rnd(i + 1) * 50 + 50))
      .Physics = InputBox("No_" & i + 1 & "_Physics:", "成绩录入", Int(Rnd(i + 1) * 50 + 50))
      .Chemistry = InputBox("No_" & i + 1 & "_Chemistry:", "成绩录入", Int(Rnd(i + 1) * 50 + 50))
      .Total = .Math + .English + .Physics + .Chemistry
      .Average = .Total / 4
      List1.AddItem .Name + Space(2) + .StudentID + Space(2) + CStr(Format(.Math, "0.00")) + Space(2) + CStr(Format(.English, "0.00")) + Space(2) + CStr(Format(.Physics, "0.00")) + Space(2) + CStr(Format(.Chemistry, "0.00")) + Space(2) + CStr(Format(.Total, "0.00")) + Space(2) + CStr(Format(.Average, "0.00"))
    End With
  Next i
  
  For i = LBound(Stu) To UBound(Stu) - 1
    For j = i + 1 To UBound(Stu)
      If Stu(j).Average > Stu(i).Average Then
        t = Stu(i).Name
        Stu(i).Name = Stu(j).Name
        Stu(j).Name = t
        t = Stu(i).StudentID
        Stu(i).StudentID = Stu(j).StudentID
        Stu(j).StudentID = t
        t = Stu(i).Math
        Stu(i).Math = Stu(j).Math
        Stu(j).Math = t
        t = Stu(i).English
        Stu(i).English = Stu(j).English
        Stu(j).English = t
        t = Stu(i).Physics
        Stu(i).Physics = Stu(j).Physics
        Stu(j).Physics = t
        t = Stu(i).Chemistry
        Stu(i).Chemistry = Stu(j).Chemistry
        Stu(j).Chemistry = t
        t = Stu(i).Total
        Stu(i).Total = Stu(j).Total
        Stu(j).Total = t
        t = Stu(i).Average
        Stu(i).Average = Stu(j).Average
        Stu(j).Average = t
      End If
    Next j
  Next i
  Stu(0).Ranking = 1
  For i = LBound(Stu) + 1 To UBound(Stu)
    If Stu(i).Average = Stu(i - 1).Average Then
      Stu(i).Ranking = i + 1 - 1
    Else
      Stu(i).Ranking = i + 1
    End If
  Next i
  List1.Clear
  List1.AddItem "名次" + Space(2) + "姓  名" + Space(2) + "学  号" + Space(2) + "数 学" + Space(2) + "英 语" + Space(2) + "物 理" + Space(2) + "化 学" + Space(2) + "总  分" + Space(2) + "平均分"
  For i = LBound(Stu) To UBound(Stu)
    With Stu(i)
      List1.AddItem Space(2) + CStr(.Ranking) + Space(3) + .Name + Space(1) + .StudentID + Space(2) + CStr(Format(.Math, "0.00")) + Space(2) + CStr(Format(.English, "0.00")) + Space(2) + CStr(Format(.Physics, "0.00")) + Space(2) + CStr(Format(.Chemistry, "0.00")) + Space(2) + CStr(Format(.Total, "0.00")) + Space(2) + CStr(Format(.Average, "0.00"))
    End With
  Next i
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-21
用公式sum和average
相似回答