c++依次输入某个班级n个学生的姓名、数学、物理和化学课程的成绩,在输入姓名时直接回车表示输入结束,计算平均成绩后按姓名的字典顺序输出成绩列表,同时还要输出每个学生的平均成绩是否高于班级的平均成绩。(注意:输出时,姓名的首字母大写。)
时间: 2024-05-01 19:23:12 浏览: 97
以下是一个实现该功能的 C++ 代码:
```cpp
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
int math;
int physics;
int chemistry;
float average;
};
int main() {
int n;
cout << "请输入学生人数:";
cin >> n;
vector<Student> students(n);
float math_sum = 0.0, physics_sum = 0.0, chemistry_sum = 0.0;
for (int i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "个学生的姓名和成绩(数学 物理 化学):" << endl;
cin >> students[i].name;
if (students[i].name == "") break;
cin >> students[i].math >> students[i].physics >> students[i].chemistry;
students[i].average = (students[i].math + students[i].physics + students[i].chemistry) / 3.0;
math_sum += students[i].math;
physics_sum += students[i].physics;
chemistry_sum += students[i].chemistry;
}
float math_avg = math_sum / n;
float physics_avg = physics_sum / n;
float chemistry_avg = chemistry_sum / n;
cout << "成绩列表:" << endl;
sort(students.begin(), students.end(), [](const Student& s1, const Student& s2) {
return s1.name < s2.name;
});
for (auto& student : students) {
cout << student.name << " ";
cout << student.math << " " << student.physics << " " << student.chemistry << " ";
cout << student.average;
if (student.average > (math_avg + physics_avg + chemistry_avg) / 3.0) {
cout << " 高于班级平均成绩";
}
cout << endl;
}
return 0;
}
```
该代码首先读取学生人数,然后使用一个结构体 `Student` 来存储每个学生的姓名和三门课程的成绩,计算平均成绩,并将所有学生存储在一个 `vector` 容器中。然后计算班级的平均成绩(数学、物理、化学三门课程的平均值),并按照学生姓名的字典序排序输出成绩列表,同时判断每个学生的平均成绩是否高于班级平均成绩,如果是则输出对应信息。
阅读全文