编写一个学生类,并建立一个对应的对象数组,从标准输入读入5个学生的数据(学号、成绩)存入此对象数组。在类外编写一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号和成绩。
时间: 2024-10-08 14:14:55 浏览: 44
首先,我们可以创建一个名为`Student`的类,它包含两个属性:学号和成绩。然后定义一个成员函数来获取学生的成绩。接下来,我们将创建一个动态数组来存储学生对象,并编写一个外部函数`findMaxScore`来找到并返回最高分的学生信息。
```cpp
#include <iostream>
#include <string>
class Student {
public:
int id;
double score;
// 构造函数
Student(int id, double score) : id(id), score(score) {}
double getScore() const { return score; }
};
// 存储学生对象的动态数组
std::vector<Student*> studentArray;
// 从标准输入读取5个学生的数据
void readStudentsFromInput() {
for (int i = 0; i < 5; ++i) {
std::cout << "请输入第" << i+1 << "个学生的学号和成绩:" << std::endl;
int id;
double score;
std::cin >> id >> score;
Student* student = new Student(id, score);
studentArray.push_back(student);
}
}
// 找出并输出成绩最高的学生信息
void findMaxScore(Student** maxStudent) {
*maxStudent = &studentArray[0]; // 假设第一个学生是初始最大值
for (size_t i = 1; i < studentArray.size(); ++i) {
if (studentArray[i]->getScore() > (*maxStudent)->getScore()) {
*maxStudent = studentArray[i];
}
}
std::cout << "成绩最高的是学生 " << (*maxStudent)->id << ",分数为:" << (*maxStudent)->score << std::endl;
}
int main() {
readStudentsFromInput();
Student* maxScoreStudent;
findMaxScore(&maxScoreStudent);
// 清理内存
for (auto& student : studentArray) {
delete student;
}
studentArray.clear();
return 0;
}
```
在这个程序中,用户会依次输入5个学生的学号和成绩,`readStudentsFromInput`函数将它们存储到动态数组中。`findMaxScore`函数遍历数组,比较每个学生的成绩,最后找出并返回成绩最高的学生。注意在`main`函数结束后,需要手动清理动态分配的内存。
阅读全文