编写C++程序实现对某一个学生全部或某科成绩的查找以及班内或年级内的排名序号的查找。
时间: 2024-02-19 21:57:43 浏览: 67
以下是一个简单的实现,实现了对某个学生全部成绩的查找、对某科成绩的查找以及班内和年级内的排名序号的查找。代码中使用了`vector`容器来存储学生信息,其中包括学号、姓名、6门课程成绩和平均成绩。这个程序假设班级和年级的学生人数相同,并且每个学生的信息都已经按照平均成绩从高到低排好序了。
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string num; // 学号
string name; // 姓名
int scores[6]; // 6门课程成绩
double average; // 平均成绩
};
// 按照平均成绩从高到低排序
bool compare(const Student& s1, const Student& s2) {
return s1.average > s2.average;
}
int main() {
vector<Student> students {
{"001", "张三", {80, 85, 90, 85, 90, 95}, 88.33},
{"002", "李四", {90, 85, 95, 85, 90, 95}, 90.00},
{"003", "王五", {80, 80, 80, 85, 90, 95}, 84.17}
};
// 按照平均成绩从高到低排序
sort(students.begin(), students.end(), compare);
// 查找某个学生的全部成绩
string num = "001";
auto it = find_if(students.begin(), students.end(), [num](const Student& s) {
return s.num == num;
});
if (it != students.end()) {
cout << "学号:" << it->num << endl;
cout << "姓名:" << it->name << endl;
cout << "成绩:" << it->scores[0] << "," << it->scores[1] << "," << it->scores[2] << ","
<< it->scores[3] << "," << it->scores[4] << "," << it->scores[5] << endl;
cout << "平均成绩:" << it->average << endl;
} else {
cout << "学生不存在" << endl;
}
// 查找某科成绩的排名
int course = 3; // 查找第4门课程
int rank = 0;
for (const auto& s : students) {
rank++;
if (s.scores[course] == 85) { // 查找成绩为85分的学生
cout << "成绩为85分的学生排名为:" << rank << endl;
break;
}
}
// 查找班内和年级内的排名序号
int grade_size = 3; // 年级总人数
int class_size = 3; // 班级总人数
string name = "张三"; // 查找张三的排名
int grade_rank = 0;
int class_rank = 0;
for (int i = 0; i < students.size(); i++) {
if (students[i].name == name) {
grade_rank = i + 1;
class_rank = i % class_size + 1;
break;
}
}
cout << "张三在班内的排名为:" << class_rank << endl;
cout << "张三在年级内的排名为:" << grade_rank << "/" << grade_size << endl;
return 0;
}
```
在这个程序中,我们首先定义了一个`Student`结构体,其中包括学号、姓名、6门课程成绩和平均成绩。然后我们使用`vector`容器来存储所有学生的信息,并且按照平均成绩从高到低进行排序。
接着,我们分别实现了对某个学生的全部成绩的查找、对某科成绩的查找以及班内和年级内的排名序号的查找。在查找某个学生的全部成绩时,我们使用了`find_if`函数来查找匹配的学生信息。在查找某科成绩的排名时,我们遍历所有学生的成绩,并且记录排名。在查找班内和年级内的排名序号时,我们使用了学生在数组中的下标来计算排名。
阅读全文