题目二:成绩行筛选器
截止日期
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 >= 10 <= 成绩 <= 1000 <= 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提示
- 平均分比较时不必使用浮点数,直接比较
sum和k * m即可。 - 可以先读入整个矩阵,再筛选出需要保留的行。
- 如果使用动态二维数组,记得在程序结束前释放内存。
实现要求
- 建议先动态申请二维数组,再使用二级指针表示成绩单,例如
int **matrix。 - 建议把“创建矩阵”“读入矩阵”“筛选矩阵”“释放内存”拆分到不同函数中。