用一个简易的C++的类实现以下功能,一个班有6个学生,开5门课。 (1)求第一门课的平均分 (2)找出有2门及以上不及格的学生,输出他们的学号,姓名,全部课程成绩和平均成绩 (3)找出平均成绩90分以上或全部课程成绩在85分及以上的学生
时间: 2024-09-15 09:10:51 浏览: 51
编制一个程序,要求输入5个学生的学号、2门课的成绩,然后输出每个学生的学号、2门课成绩、平均成绩。
3星 · 编辑精心推荐
为了实现这个简易的C++类,我们可以创建一个名为`Student`的类,它包含学生的属性如姓名、学号和各科成绩。同时,我们还需要一个`Class`类来管理班级和课程信息。以下是基本的实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 学生类
class Student {
public:
int id;
string name;
vector<int> grades; // 存储6门课的成绩
// 构造函数和获取平均成绩
Student(int _id, const string& _name) : id(_id), name(_name) { }
double getAverageGrade() {
if (grades.empty()) return 0;
double sum = 0;
for (int grade : grades) {
sum += grade;
}
return sum / grades.size();
}
private:
};
// 班级类
class Class {
public:
vector<Student> students;
void addStudent(Student student) { students.push_back(student); }
// 计算第一门课的平均分
double calculateFirstCourseAverage() {
if (students.empty()) return 0;
int firstCourseIndex = 0; // 假设第一门课是第一个元素
double total = students[0].grades[firstCourseIndex];
for (const auto& student : students) {
total += student.grades[firstCourseIndex];
}
return total / students.size();
}
// 找出2门及以上不及格的学生
void findStudentsWithTwoOrMoreFailures() {
for (auto& student : students) {
int failures = count_if(student.grades.begin(), student.grades.end(), [](int grade) { return grade <= 60; });
if (failures >= 2) {
cout << "学生:" << student.id << ", " << student.name << ", 成绩:";
for (int grade : student.grades) {
cout << grade << " ";
}
cout << ", 平均成绩:" << student.getAverageGrade() << endl;
}
}
}
// 查找平均成绩90分以上或全部课程成绩在85分及以上的学生
void findStudentsWithHighGrades() {
for (const auto& student : students) {
double avgGrade = student.getAverageGrade();
if (avgGrade >= 90 || all_of(student.grades.begin(), student.grades.end(), [gradeThreshold = 85](int grade) { return grade >= gradeThreshold; })) {
cout << "学生:" << student.id << ", " << student.name << ", 平均成绩:" << avgGrade << endl;
}
}
}
};
int main() {
Class classInstance;
// 创建学生并加入班级
for (int i = 1; i <= 6; ++i) {
Student student(i, "学生" + to_string(i));
// 假设每门课的成绩在这儿生成,例如:student.grades = {75, 80, 88, 92, 68, 78};
classInstance.addStudent(student);
}
// 调用方法计算和显示结果
cout << "第一门课平均分:" << classInstance.calculateFirstCourseAverage() << endl;
classInstance.findStudentsWithTwoOrMoreFailures();
classInstance.findStudentsWithHighGrades();
return 0;
}
```
在这个例子中,我们假设每名学生都有六门课程的成绩,并通过向`Class`对象添加学生来模拟班级情况。请注意,实际应用中需要根据具体的课程结构动态填充成绩。
阅读全文