4. 让用户输入学生的人数n,然后输入这n个学生的语文成绩,保存在数组中。然后分别计算输出:
(1)统计语文成绩平均分。
(2)不及格的学生序号及成绩、并统计不及格人数。
(3)最高分的成绩及最高分的学生的序号。
// bug: 多个最高分只记录了一个 #include <iostream> #include <map> using namespace std; int main() { int N; std::cin >> N; int *score = new int[N]; int sum = 0; float average = 0.0; map<int, int> failMap; int highest[2] = { 0 }; for (int i = 0; i < N; ++i) { cin >> score[i]; sum += score[i]; if(score[i]>highest[1]){ highest[0] = i; highest[1] = score[i]; } if(score[i] < 60){ failMap.insert(make_pair(i, score[i])); } } average = static_cast<float>(sum) / static_cast<float>(N); cout << "(1)语文成绩平均分" << endl; cout << average << endl; cout << "(2)不及格学生序号及成绩" << endl; for (auto x : failMap) cout << "序号:" << x.first << " 成绩:" << x.second << endl; cout << "不及格人数:" << failMap.size() << endl; cout << "(3)最高分学生序号及成绩" << endl; cout << "序号:" << highest[0] << " 成绩:" << highest[1] << endl; return 0; }