c++结构体成绩排序
时间: 2023-12-19 14:06:30 浏览: 181
以下是使用结构体数组实现c++成绩排序的示例代码:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
struct student{
int score;
string name;
};
bool cmp(student a, student b){
return a.score > b.score; // 按照成绩从高到低排序
}
int main(){
const int N = 5; // 学生人数
student stu[N] = {{90, "Tom"}, {80, "Jerry"}, {95, "Alice"}, {70, "Bob"}, {85, "David"}};
sort(stu, stu + N, cmp); // 使用sort函数进行排序
for(int i = 0; i < N; i++){
cout << stu[i].name << " " << stu[i].score << endl; // 输出排序后的结果
}
return 0;
}
```
相关问题
C++结构体处理班级成绩
假设一个班级有n个学生,每个学生有如下信息:
- 姓名(字符串)
- 学号(字符串)
- 数学成绩(整数)
- 英语成绩(整数)
- 语文成绩(整数)
我们可以用C++结构体来表示每个学生的信息:
```c++
struct Student {
string name; // 姓名
string id; // 学号
int math_score; // 数学成绩
int english_score; // 英语成绩
int chinese_score; // 语文成绩
};
```
接下来,我们可以定义一个数组来存储该班级的所有学生信息:
```c++
const int MAXN = 100; // 最多存储100个学生信息
Student students[MAXN];
int n; // 学生数量
```
对于每个学生,我们可以通过下标访问其信息:
```c++
students[0].name = "张三";
students[0].id = "1001";
students[0].math_score = 90;
students[0].english_score = 85;
students[0].chinese_score = 95;
```
如果要计算该班级的平均分,我们可以用一个循环遍历所有学生的成绩并累加:
```c++
int total_math = 0, total_english = 0, total_chinese = 0;
for (int i = 0; i < n; i++) {
total_math += students[i].math_score;
total_english += students[i].english_score;
total_chinese += students[i].chinese_score;
}
double avg_math = (double)total_math / n;
double avg_english = (double)total_english / n;
double avg_chinese = (double)total_chinese / n;
```
类似地,我们可以计算每个学生的总分和平均分:
```c++
for (int i = 0; i < n; i++) {
int total_score = students[i].math_score + students[i].english_score + students[i].chinese_score;
double avg_score = (double)total_score / 3;
cout << students[i].name << " " << students[i].id << " " << total_score << " " << avg_score << endl;
}
```
当然,这只是一个简单的例子,实际应用中可能还需要对学生信息进行排序、筛选、修改、添加等操作。
学生结构体按成绩排序c++
要按照学生的成绩来排序,可以先定义一个学生的结构体,包含学生的姓名和成绩两个属性。然后创建一个学生数组,存储多个学生的信息。
```c
#include <stdio.h>
#define MAX_STUDENTS 5
typedef struct Student {
char name[20];
int score;
} Student;
int main() {
Student students[MAX_STUDENTS] = {
{"Tom", 85},
{"Jerry", 76},
{"Alice", 92},
{"Bob", 68},
{"Lisa", 80}
};
// 使用冒泡排序按照成绩排序学生
for (int i = 0; i < MAX_STUDENTS - 1; i++) {
for (int j = 0; j < MAX_STUDENTS - i - 1; j++) {
if (students[j].score > students[j+1].score) {
// 交换两个学生的位置
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
// 打印排序后的学生信息
printf("按照成绩排序后的学生信息:\n");
for (int i = 0; i < MAX_STUDENTS; i++) {
printf("姓名:%s,成绩:%d\n", students[i].name, students[i].score);
}
return 0;
}
```
以上代码中,我们首先定义了一个`Student`结构体,包含学生的姓名和成绩属性。然后创建了一个学生数组`students`,用于存储五个学生的信息。我们使用冒泡排序的算法,按照成绩从低到高对学生进行排序。最后,通过遍历数组打印排序后的学生信息。
阅读全文