利用c++写一个程序,为学生成绩查询程序,可以输入学生姓名、学生编号、学生成绩,可以输出学生成绩排名、学生成绩平均分
时间: 2024-12-23 11:25:19 浏览: 13
为了创建一个简单的C++程序来处理学生成绩查询、排名和平均分计算,我们可以采用结构体来存储学生的数据,并利用数组或容器(如std::map或std::vector)来组织学生信息。下面是一个基础的示例:
```cpp
#include <iostream>
#include <map>
#include <string>
// 定义一个结构体表示学生
struct Student {
std::string name;
int id;
float score;
};
// 函数来添加新学生或更新分数
void addOrUpdateScore(std::map<std::string, Student>& students, const std::string& name, int id, float score) {
if (students.find(name) == students.end()) {
students[name] = {name, id, score};
} else {
students[name].score = score;
}
}
// 函数用于查询学生成绩并打印排名和平均分
void queryStudentInfo(const std::map<std::string, Student>& students) {
std::map<std::string, Student> sortedStudents(students);
std::sort(sortedStudents.begin(), sortedStudents.end(), [](const auto &a, const auto &b) { return a.second.score > b.second.score; });
float totalScore = 0.0f;
for (const auto &student : sortedStudents) {
std::cout << "姓名: " << student.first << ", 成绩: " << student.second.score << ", 排名: " << sortedStudents.size() - std::distance(sortedStudents.begin(), student) << std::endl;
totalScore += student.second.score;
}
std::cout << "所有学生平均成绩: " << totalScore / students.size() << std::endl;
}
int main() {
std::map<std::string, Student> students;
// 添加几个学生
addOrUpdateScore(students, "张三", 1001, 95.0);
addOrUpdateScore(students, "李四", 1002, 98.5);
addOrUpdateScore(students, "王五", 1003, 92.0);
// 查询成绩信息
queryStudentInfo(students);
return 0;
}
```
在这个程序中,我们首先定义了一个`Student`结构体,然后创建了一个`std::map`来存储学生信息。`addOrUpdateScore`函数允许我们向这个映射中添加或更新学生分数。`queryStudentInfo`函数对学生们的成绩进行排序,计算总分,并输出排名和平均分。
运行此程序时,你可以看到每个学生的姓名、成绩以及相应的排名和平均分。
阅读全文