有5个学生,包括学生学号(字符型)、姓名(字符型)和3门课成绩(整型),编程完成下面的要求:(1)计算每个学生的总成绩、平均分,并输出。(2)将学生成绩按总分从高到低排序并输出,输出项有学生学号、姓名、3门课成绩及总分。
时间: 2023-06-26 12:05:12 浏览: 129
这是一个比较基础的 C++ 编程问题,需要使用结构体和数组来实现。以下是示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct Student {
string id; // 学号
string name; // 姓名
int scores[3]; // 3门课成绩
int total_score; // 总成绩
float avg_score; // 平均成绩
};
int main() {
const int n = 5; // 学生数量
Student students[n];
// 输入学生信息和成绩
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个学生的学号、姓名和3门课成绩:" << endl;
cin >> students[i].id >> students[i].name;
for (int j = 0; j < 3; j++) {
cin >> students[i].scores[j];
}
// 计算总成绩和平均成绩
students[i].total_score = 0;
for (int j = 0; j < 3; j++) {
students[i].total_score += students[i].scores[j];
}
students[i].avg_score = students[i].total_score / 3.0;
}
// 按总分从高到低排序
sort(students, students+n, [](const Student& a, const Student& b) {
return a.total_score > b.total_score;
});
// 输出每个学生的总成绩和平均分
for (int i = 0; i < n; i++) {
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "总成绩:" << students[i].total_score << endl;
cout << "平均分:" << students[i].avg_score << endl;
}
// 输出排序后的学生成绩
cout << "按总分从高到低排序的学生成绩:" << endl;
for (int i = 0; i < n; i++) {
cout << "学号:" << students[i].id << endl;
cout << "姓名:" << students[i].name << endl;
cout << "3门课成绩:";
for (int j = 0; j < 3; j++) {
cout << students[i].scores[j] << " ";
}
cout << endl;
cout << "总成绩:" << students[i].total_score << endl;
}
return 0;
}
```
示例运行结果:
```
请输入第1个学生的学号、姓名和3门课成绩:
1001 Tom 80 90 85
请输入第2个学生的学号、姓名和3门课成绩:
1002 Jack 75 85 90
请输入第3个学生的学号、姓名和3门课成绩:
1003 Alice 95 87 89
请输入第4个学生的学号、姓名和3门课成绩:
1004 Bob 78 80 85
请输入第5个学生的学号、姓名和3门课成绩:
1005 Lucy 90 88 92
学号:1003
姓名:Alice
总成绩:271
平均分:90.3333
学号:1005
姓名:Lucy
总成绩:270
平均分:90
学号:1001
姓名:Tom
总成绩:255
平均分:85
学号:1002
姓名:Jack
总成绩:250
平均分:83.3333
学号:1004
姓名:Bob
总成绩:243
平均分:81
按总分从高到低排序的学生成绩:
学号:1003
姓名:Alice
3门课成绩:95 87 89
总成绩:271
学号:1005
姓名:Lucy
3门课成绩:90 88 92
总成绩:270
学号:1001
姓名:Tom
3门课成绩:80 90 85
总成绩:255
学号:1002
姓名:Jack
3门课成绩:75 85 90
总成绩:250
学号:1004
姓名:Bob
3门课成绩:78 80 85
总成绩:243
```
阅读全文