跳至内容
题目二:成绩行筛选器

题目二:成绩行筛选器

截止日期

2026年4月3日(两周)

题目背景

在成绩分析中,常常需要从成绩表中筛选出满足条件的若干行。请你编写一个程序,从输入的成绩数据中保留平均分不低于给定阈值的所有行,并按原顺序输出这些行的信息。

题目描述

给定若干位同学的成绩数据,每位同学有若干次成绩记录。请保留平均分不低于阈值 k 的所有同学的成绩行,并按原顺序输出这些行的信息。

为避免浮点精度问题,如果某同学成绩满足

某同学的成绩总分 >= k * 该同学的成绩次数

则该同学成绩被保留。

输出时,请先输出保留下来的行数;随后对每一行输出:

该行总分 该同学的成绩次数 该同学的 m 个成绩

若没有任何一行被保留,则共输出两行:

0
EMPTY

输入格式

第一行输入整数:n,代表同学数量。

接下来输入 n 行,每行的格式为:m a1 a2 ... am,其中 m 是当前行同学的成绩次数(正整数);a1~am 是该同学的 m 次成绩(非负整数)。

最后一行输入 k,代表平均分阈值。

输出格式

第一行输出保留下来的行数。

如果保留行数大于 0,则接下来每行输出:

sum m a1 a2 ... am

如果保留行数为 0,则接下来第二行输出:

EMPTY

数据范围

  • n, m >= 1
  • 0 <= 成绩 <= 100
  • 0 <= k <= 100

数据不会溢出 int 限制

样例 1

输入

4
2 1 4
3 6 5 4
3 5 5 5
3 8 1 7
5

输出

3
15 3 6 5 4
15 3 5 5 5
16 3 8 1 7

样例 2

输入

3
4 6 6 6 6
5 9 3 6 6 9
2 1 2
6

输出

2
24 4 6 6 6 6
33 5 9 3 6 6 9

样例 3

输入

2
2 9 9
2 8 9
10

输出

0
EMPTY

提示

  • 平均分比较时不必使用浮点数,直接比较 sumk * m 即可。
  • 可以先读入整个矩阵,再筛选出需要保留的行。
  • 如果使用动态二维数组,记得在程序结束前释放内存。

实现要求

  • 建议先动态申请二维数组,再使用二级指针表示成绩单,例如 int **matrix
  • 建议把“创建矩阵”“读入矩阵”“筛选矩阵”“释放内存”拆分到不同函数中。