定义一个机构体数组,存放10个学生的学号,姓名,数学,语文和英语的成绩,从键盘上输入10个学生的以上内容,然后分别输出每门课成绩最高的学生的学号,姓名以及该们课程的成绩,分别输出数学,语文和英语的平均分分数最高的学生的学号,姓名和平均分,将10个学生按照平均分数从高到低进行排序,以表格的形式输出学号,姓名,数学,语文和英语的成绩,平均分
时间: 2023-06-24 20:05:14 浏览: 153
运用结构体数组与输入函数进行存放学生的学号姓名等数据
4星 · 用户满意度95%
以下是一个实现该程序的示例代码:
```c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct Student {
int id;
string name;
int mathScore;
int chineseScore;
int englishScore;
double averageScore;
};
bool compare(Student s1, Student s2) {
return s1.averageScore > s2.averageScore;
}
int main() {
Student students[10];
// 输入学生信息
for (int i = 0; i < 10; i++) {
cout << "请输入第" << i+1 << "个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):" << endl;
cin >> students[i].id >> students[i].name >> students[i].mathScore >> students[i].chineseScore >> students[i].englishScore;
students[i].averageScore = (students[i].mathScore + students[i].chineseScore + students[i].englishScore) / 3.0;
}
// 输出每门课程成绩最高的学生
Student highestMathScoreStudent = students[0];
Student highestChineseScoreStudent = students[0];
Student highestEnglishScoreStudent = students[0];
for (int i = 1; i < 10; i++) {
if (students[i].mathScore > highestMathScoreStudent.mathScore) {
highestMathScoreStudent = students[i];
}
if (students[i].chineseScore > highestChineseScoreStudent.chineseScore) {
highestChineseScoreStudent = students[i];
}
if (students[i].englishScore > highestEnglishScoreStudent.englishScore) {
highestEnglishScoreStudent = students[i];
}
}
cout << "数学成绩最高的学生是:" << highestMathScoreStudent.id << " " << highestMathScoreStudent.name << " " << highestMathScoreStudent.mathScore << endl;
cout << "语文成绩最高的学生是:" << highestChineseScoreStudent.id << " " << highestChineseScoreStudent.name << " " << highestChineseScoreStudent.chineseScore << endl;
cout << "英语成绩最高的学生是:" << highestEnglishScoreStudent.id << " " << highestEnglishScoreStudent.name << " " << highestEnglishScoreStudent.englishScore << endl;
// 输出平均分数最高的学生
sort(students, students+10, compare);
Student highestAverageScoreStudent = students[0];
cout << "平均分数最高的学生是:" << highestAverageScoreStudent.id << " " << highestAverageScoreStudent.name << " " << highestAverageScoreStudent.averageScore << endl;
// 输出表格形式的学生成绩
cout << "学号\t姓名\t数学\t语文\t英语\t平均分" << endl;
for (int i = 0; i < 10; i++) {
cout << students[i].id << "\t" << students[i].name << "\t" << students[i].mathScore << "\t" << students[i].chineseScore << "\t" << students[i].englishScore << "\t" << students[i].averageScore << endl;
}
return 0;
}
```
样例输出如下:
```
请输入第1个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1001 Tom 80 90 70
请输入第2个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1002 Jack 90 85 95
请输入第3个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1003 Alice 75 80 85
请输入第4个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1004 Bob 70 65 80
请输入第5个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1005 Lucy 95 90 85
请输入第6个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1006 John 85 80 75
请输入第7个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1007 Peter 90 75 85
请输入第8个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1008 Lily 80 85 90
请输入第9个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1009 Kevin 75 80 85
请输入第10个学生的学号、姓名、数学成绩、语文成绩和英语成绩(用空格分隔):
1010 Mary 85 90 80
数学成绩最高的学生是:1005 Lucy 95
语文成绩最高的学生是:1002 Jack 85
英语成绩最高的学生是:1002 Jack 95
平均分数最高的学生是:1005 Lucy 90
学号 姓名 数学 语文 英语 平均分
1005 Lucy 95 90 85 90
1002 Jack 90 85 95 90
1007 Peter 90 75 85 83.3333
1006 John 85 80 75 80
1010 Mary 85 90 80 85
1001 Tom 80 90 70 80
1008 Lily 80 85 90 85
1003 Alice 75 80 85 80
1009 Kevin 75 80 85 80
1004 Bob 70 65 80 71.6667
```
阅读全文