#include <iostream> #include <vector> #include <algorithm> #include <iomanip> using namespace std; // 计算选手的最终得分 double calculateScore(vector<double>& scores) { // 如果评委人数少于3人,无法去掉最高分和最低分 if (scores.size() <= 2) { cerr << "错误:评委人数必须大于2人!" << endl; return -1; } // 排序分数,便于去掉最高分和最低分 sort(scores.begin(), scores.end()); // 计算总分(去掉第一个最低分和最后一个最高分) double total = 0; for (int i = 1; i < scores.size() - 1; i++) { total += scores[i]; } // 计算平均分 return total / (scores.size() - 2); } int main() { int n; cout << "请输入评委人数:"; cin >> n; // 验证评委人数是否合法 if (n <= 2) { cerr << "评委人数必须大于2人!" << endl; return 1; } vector<double> scores; double score; // 输入每个评委的分数 for (int i = 0; i < n; i++) { cout << "请输入第" << i + 1 << "位评委的分数(0-10):"; cin >> score; // 验证分数是否在有效范围内 if (score < 0 || score > 10) { cerr << "分数必须在0到10之间!" << endl; i--; // 重新输入当前评委的分数 continue; } scores.push_back(score); } // 计算并输出最终得分 double finalScore = calculateScore(scores); if (finalScore >= 0) { cout << fixed << setprecision(2); // 保留两位小数 cout << "选手的最终得分是:" << finalScore << endl; } return 0; } /************************************************************** Problem: 1168 User: mc002 Language: C++ Result: Wrong Answer ****************************************************************/