用c++编写一个程序,该程序提示用户输入学生姓名及考试分数。该程序输出(假定每个班级中最多有学生 30人): (1)班级平均分。 (2)考试分数低于班级平均分的学生姓名。 ITmulst (3)最高分以及最高分的学生姓名。
时间: 2024-12-20 21:21:44 浏览: 17
首先,我们可以创建一个简单的C++程序结构,使用结构体表示学生,并使用`vector`来存储学生的数据。然后,通过循环获取用户输入,计算平均分、筛选低分学生并找到最高分。以下是代码示例:
```cpp
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
// 定义学生结构体
struct Student {
std::string name;
int score;
};
int main() {
// 初始化学生信息数组
const int MAX_STUDENTS = 30;
std::vector<Student> students(MAX_STUDENTS);
int totalScore = 0;
// 提示用户输入学生姓名和分数
for (int i = 0; i < MAX_STUDENTS && i < students.size(); ++i) {
std::cout << "请输入第" << i+1 << "位学生的姓名和分数: ";
std::cin >> students[i].name >> students[i].score;
totalScore += students[i].score;
}
// 计算平均分
double averageScore = static_cast<double>(totalScore) / students.size();
std::cout << "班级平均分: " << averageScore << std::endl;
// 找出分数低于平均分的学生
std::vector<Student> lowScoringStudents;
for (const auto& student : students) {
if (student.score < averageScore) {
lowScoringStudents.push_back(student);
}
}
if (!lowScoringStudents.empty()) {
std::cout << "考试分数低于平均分的学生姓名: ";
for (const auto& student : lowScoringStudents) {
std::cout << student.name << ", ";
}
std::cout << std::endl;
} else {
std::cout << "所有学生都高于平均分。\n";
}
// 找到最高分及其姓名
auto maxScoreIndex = std::distance(students.begin(), std::max_element(students.begin(), students.end(), [](const Student& a, const Student& b) { return a.score < b.score; }));
Student topStudent = students[maxScoreIndex];
std::cout << "最高分: " << topStudent.score << " 分,学生姓名: " << topStudent.name << std::endl;
return 0;
}
```
运行这个程序,用户可以依次输入学生信息,然后会得到相应的班级平均分、低分学生名单(如果有)以及最高分和对应的学生姓名。
阅读全文