定义一个机构体数组,存放10个学生的学号,姓名,三门课的成绩,从键盘上输入10个学生的以上内容,然后输出单门课成绩最高的学生的学号,姓名以及该们课程的成绩,输出三门课程的平均分分数最高的学生的学号,姓名和平均分,将10个学生按照平均分数从高到低进行排序,输出结果
时间: 2023-06-26 18:03:09 浏览: 98
以下是代码实现:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct Student {
int id;
string name;
int score[3];
double avg;
};
bool cmp(Student a, Student b) {
return a.avg > b.avg;
}
int main() {
Student s[10];
for(int i=0; i<10; i++) {
cout << "请输入第" << i+1 << "位学生的学号,姓名和三门课的成绩:" << endl;
cin >> s[i].id >> s[i].name >> s[i].score[0] >> s[i].score[1] >> s[i].score[2];
s[i].avg = (s[i].score[0] + s[i].score[1] + s[i].score[2]) / 3.0;
}
int maxScore = 0;
int maxIndex = 0;
for(int i=0; i<10; i++) {
if(s[i].score[0] > maxScore) {
maxScore = s[i].score[0];
maxIndex = i;
}
}
cout << "单门课成绩最高的学生是:" << s[maxIndex].name << ",学号为" << s[maxIndex].id << ",成绩为:" << maxScore << endl;
double maxAvg = 0;
int maxAvgIndex = 0;
for(int i=0; i<10; i++) {
if(s[i].avg > maxAvg) {
maxAvg = s[i].avg;
maxAvgIndex = i;
}
}
cout << "三门课程的平均分数最高的学生是:" << s[maxAvgIndex].name << ",学号为" << s[maxAvgIndex].id << ",平均分为:" << maxAvg << endl;
sort(s, s+10, cmp);
cout << "按照平均分数从高到低进行排序结果为:" << endl;
for(int i=0; i<10; i++) {
cout << "姓名:" << s[i].name << ",学号:" << s[i].id << ",平均分:" << s[i].avg << endl;
}
return 0;
}
```
代码思路:
1. 定义一个结构体 `Student`,包含学号、姓名、三门课的成绩和平均分四个属性。
2. 通过循环,从键盘上输入10个学生的以上内容,并且计算平均分。
3. 针对单门课成绩最高的学生,依次遍历每个学生的成绩,记录下最高成绩以及最高成绩所在的学生序号,最后输出该学生信息。
4. 针对三门课程的平均分数最高的学生,依次遍历每个学生的平均分,记录下最高平均分以及最高平均分所在的学生序号,最后输出该学生信息。
5. 将10个学生按照平均分数从高到低进行排序,输出结果。
阅读全文