用c++书写这个程序:学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审得到k个成绩。系统需要去掉一个最高分和一个最低分将剩下的分数取平均就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。输入格式:输入第一行给出3个正整数N3 N ≤10 4 学生总数、k3 ≤ k ≤ 10每份作业的评审数、M≤ 20需要输出的学生数。随后N行每行给出一份作业得到的k个评审成绩在区间
#include
using namespace std;
int main() { int N, k, M; cin >> N >> k >> M;
vector<double> scores(N); // 保存每个学生的成绩
// 输入每个学生的成绩
for (int i = 0; i < N; i++) {
vector<int> temp(k); // 保存每个学生的k个评审成绩
for (int j = 0; j < k; j++) {
cin >> temp[j];
}
// 去掉一个最高分和一个最低分,求剩下分数的平均值
sort(temp.begin(), temp.end());
double sum = 0;
for (int j = 1; j < k - 1; j++) {
sum += temp[j];
}
scores[i] = sum / (k - 2);
}
// 按非递减顺序输出最后得分最高的M个成绩
sort(scores.begin(), scores.end(), greater<double>());
for (int i = 0; i < M; i++) {
cout << fixed << setprecision(3) << scores[i] << " ";
}
cout << endl;
return 0;
原文地址: http://www.cveoy.top/t/topic/hTzl 著作权归作者所有。请勿转载和采集!