跳转至

成绩行筛选器

Deadline

2026年4月3日23:59

题目背景

在成绩分析中,常常需要从一个成绩表中筛选出满足条件的若干行。请你编写一个程序,从矩阵中保留平均分不低于给定阈值的所有行。

题目描述

给定一个 n x m 的整数矩阵,第 i 行表示第 i 位同学的 m 次成绩。请保留平均分不低于阈值 k 的所有行,并按原顺序输出这些行的信息。

如果某一行满足:

该行元素和 >= k * m

则该行被保留。

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

该行总分 该行的 m 个成绩

如果没有任何一行被保留,则第二行输出 EMPTY

输入格式

第一行输入 3 个整数 n m k

接下来输入 n 行,每行 m 个整数,表示矩阵中的元素。

输出格式

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

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

sum a1 a2 ... am

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

EMPTY

数据范围

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

时间限制

1 秒

内存限制

128 MB

样例

输入

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

输出

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

提示

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

实现要求

  • 必须动态申请二维数组。
  • 必须使用二级指针表示矩阵,例如 int **matrix
  • 建议把“创建矩阵”“读入矩阵”“筛选矩阵”“释放内存”拆分到不同函数中。
  • 工程需要能通过 MakefileCMakeLists.txt 构建。
  • 平台无法进行CMake编译,所以需要同学将所有文件放在同一目录下。