c++创建一个学生类和成绩类,具体信息如下,在main函数中显示出每位同学的学号、姓名、高数、英语、思修、c++程序设计、数据结构、计算机网络总分和平均分信息(显示效果如下图),并将“C++程序设计”的最高分同学信息显示出来;
时间: 2024-01-26 19:04:56 浏览: 114
好的,以下是一个可能的实现:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 定义成绩类
class Score {
public:
Score(float math, float english, float ideology, float cpp, float data_struct, float computer_network) :
math(math), english(english), ideology(ideology), cpp(cpp), data_struct(data_struct), computer_network(computer_network) {}
float sum() const {
return math + english + ideology + cpp + data_struct + computer_network;
}
float avg() const {
return sum() / 6.0;
}
float math, english, ideology, cpp, data_struct, computer_network;
};
// 定义学生类
class Student {
public:
Student(int id, string name, Score score) : id(id), name(name), score(score) {}
int id;
string name;
Score score;
};
int main() {
// 创建学生对象
vector<Student> students{
{ 1, "张三", { 90, 80, 95, 85, 80, 90 } },
{ 2, "李四", { 80, 70, 90, 75, 85, 80 } },
{ 3, "王五", { 95, 85, 100, 90, 95, 100 } },
{ 4, "赵六", { 70, 75, 80, 85, 90, 75 } },
{ 5, "钱七", { 85, 90, 85, 95, 80, 90 } }
};
// 计算总分和平均分
vector<float> sums, avgs;
for (auto s : students) {
sums.push_back(s.score.sum());
avgs.push_back(s.score.avg());
}
// 打印每位同学的信息
cout << "学号\t姓名\t高数\t英语\t思修\tC++程序设计\t数据结构\t计算机网络\t总分\t平均分" << endl;
for (int i = 0; i < students.size(); i++) {
cout << students[i].id << "\t" << students[i].name
<< "\t" << students[i].score.math << "\t" << students[i].score.english
<< "\t" << students[i].score.ideology << "\t" << students[i].score.cpp
<< "\t\t" << students[i].score.data_struct << "\t\t" << students[i].score.computer_network
<< "\t\t" << sums[i] << "\t" << avgs[i] << endl;
}
// 找到"C++程序设计"的最高分同学信息
auto max_cpp = max_element(students.begin(), students.end(),
[](const Student& s1, const Student& s2) { return s1.score.cpp < s2.score.cpp; });
cout << "C++程序设计最高分同学信息:" << endl;
cout << "学号:" << max_cpp->id << "\t姓名:" << max_cpp->name << "\t分数:" << max_cpp->score.cpp << endl;
return 0;
}
```
输出结果如下:
```
学号 姓名 高数 英语 思修 C++程序设计 数据结构 计算机网络 总分 平均分
1 张三 90 80 95 85 80 90 520 86.6667
2 李四 80 70 90 75 85 80 480 80
3 王五 95 85 100 90 95 100 565 94.1667
4 赵六 70 75 80 85 90 75 475 79.1667
5 钱七 85 90 85 95 80 90 525 87.5
C++程序设计最高分同学信息:
学号:5 姓名:钱七 分数:95
```
阅读全文