给定n个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩(整数),并顺序输出平均线以下的学生名单。c++
时间: 2024-09-22 08:02:01 浏览: 70
在C++中,你可以通过以下步骤实现这个功能:
1. 首先,创建一个结构体或者类`Student`,用来存储学生的个人信息,包括学号、姓名和成绩。
```cpp
struct Student {
std::string id;
std::string name;
int score;
};
```
2. 创建一个函数`calculateAverageAndFilterStudents`,接收一个`std::vector<Student>`作为参数,计算所有学生的平均成绩,并找出平均线以下的学生。
```cpp
double calculateAverage(const std::vector<Student>& students) {
double sum = 0;
for (const auto& student : students) {
sum += student.score;
}
double average = static_cast<double>(sum) / students.size();
return average;
}
void filterBelowAverage(std::vector<Student>& students, double average) {
std::vector<Student> belowAverageStudents;
for (auto& student : students) {
if (student.score < average) {
belowAverageStudents.push_back(student);
}
}
// 输出平均线以下的学生列表
for (const auto& student : belowAverageStudents) {
std::cout << "学生ID: " << student.id << ", 姓名: " << student.name << ", 成绩: " << student.score << std::endl;
}
}
```
3. 主程序中,读取学生数据并调用上述两个函数。
```cpp
int main() {
// 假设从文件或输入流中获取学生数据
std::vector<Student> studentsData; // 初始化并填充数据
double averageScore = calculateAverage(studentsData);
filterBelowAverage(studentsData, averageScore);
return 0;
}
```
阅读全文