用Scala语言实现如下要求:学生的成绩单格式为,第一行为表头,各字段分别表示学号、性别、课程名1、课程名2,后面每一行代表一个学生信息。要求才用函数式编程统计出各门课程的平均分,最低分和最高分。还需要按男女生,分别统计出各门课程的平均分,最低分和最高分。
时间: 2023-05-12 20:05:07 浏览: 752
以下是用Scala语言实现的代码:
```scala
case class Student(id: Int, gender: String, score1: Double, score2: Double)
val students = List(
Student(1, "male", 80.0, 90.0),
Student(2, "female", 70.0, 85.0),
Student(3, "male", 90.0, 95.0),
Student(4, "female", 85.0, 80.0)
)
val header = List("id", "gender", "score1", "score2")
def calculateStats(scores: List[Double]): (Double, Double, Double) = {
val sum = scores.sum
val count = scores.length
val avg = sum / count
val min = scores.min
val max = scores.max
(avg, min, max)
}
val (avg1, min1, max1) = calculateStats(students.map(_.score1))
val (avg2, min2, max2) = calculateStats(students.map(_.score2))
val (maleAvg1, maleMin1, maleMax1) = calculateStats(students.filter(_.gender == "male").map(_.score1))
val (maleAvg2, maleMin2, maleMax2) = calculateStats(students.filter(_.gender == "male").map(_.score2))
val (femaleAvg1, femaleMin1, femaleMax1) = calculateStats(students.filter(_.gender == "female").map(_.score1))
val (femaleAvg2, femaleMin2, femaleMax2) = calculateStats(students.filter(_.gender == "female").map(_.score2))
```
这段代码定义了一个`Student`类表示学生信息,以及一个包含学生信息的列表`students`。`calculateStats`函数用于计算平均分、最低分和最高分,它接受一个分数列表作为参数,并返回一个元组。最后,我们分别调用`calculateStats`函数来计算各门课程的平均分、最低分和最高分,以及按男女生分别统计各门课程的平均分、最低分和最高分。
阅读全文
相关推荐

















