成绩行筛选器¶
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 <= 500 <= 成绩 <= 1000 <= 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
提示¶
- 平均分比较时不必使用浮点数,直接比较
sum和k * m即可。 - 可以先读入整个矩阵,再筛选出需要保留的行。
- 如果使用动态二维数组,记得在程序结束前释放内存。
实现要求¶
- 必须动态申请二维数组。
- 必须使用二级指针表示矩阵,例如
int **matrix。 - 建议把“创建矩阵”“读入矩阵”“筛选矩阵”“释放内存”拆分到不同函数中。
- 工程需要能通过
Makefile或CMakeLists.txt构建。 - 平台无法进行
CMake编译,所以需要同学将所有文件放在同一目录下。