有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求输出三门课程的平均成绩,然后按照平均成绩由高到低输出个学生的信息(包括学号、姓名、3门课程成绩、平均分)
时间: 2024-05-28 14:07:18 浏览: 164
这是一个比较典型的C++程序设计题目。你可以按照以下步骤来实现这个程序:
1. 定义一个结构体表示学生信息,包括学号、姓名和3门课的成绩,还要加上平均成绩。
2. 从键盘输入10个学生的数据,可以使用for循环来实现。
3. 计算三门课的平均成绩,可以使用一个数组来存储每门课程的总分数,再除以学生数得到平均分数。
4. 按照平均成绩由高到低对学生信息进行排序,可以使用STL中的sort函数。
5. 输出排序后的学生信息。
下面是代码实现:
```
#include <iostream>
#include <algorithm>
using namespace std;
const int NUM_OF_STUDENTS = 10;
const int NUM_OF_COURSES = 3;
struct Student {
int id;
string name;
double score[NUM_OF_COURSES];
double averageScore;
};
bool compare(const Student& a, const Student& b) {
return a.averageScore > b.averageScore;
}
int main() {
Student students[NUM_OF_STUDENTS];
// 输入学生信息
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
cout << "请输入第" << i + 1 << "个学生的信息:" << endl;
cout << "学号:";
cin >> students[i].id;
cout << "姓名:";
cin >> students[i].name;
cout << "成绩(语文 数学 英语):";
cin >> students[i].score >> students[i].score >> students[i].score;
students[i].averageScore = (students[i].score + students[i].score + students[i].score) / 3.0;
}
// 计算平均成绩
double totalScore[NUM_OF_COURSES] = {0};
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
for (int j = 0; j < NUM_OF_COURSES; j++) {
totalScore[j] += students[i].score[j];
}
}
double averageScore[NUM_OF_COURSES] = {0};
for (int i = 0; i < NUM_OF_COURSES; i++) {
averageScore[i] = totalScore[i] / NUM_OF_STUDENTS;
}
cout << "三门课程的平均分数分别为:" << endl;
cout << "语文:" << averageScore << endl;
cout << "数学:" << averageScore << endl;
cout << "英语:" << averageScore << endl;
// 按照平均成绩由高到低排序
sort(students, students + NUM_OF_STUDENTS, compare);
// 输出排序后的学生信息
cout << "按照平均成绩由高到低输出学生信息:" << endl;
for (int i = 0; i < NUM_OF_STUDENTS; i++) {
cout << "学号:" << students[i].id << " ";
cout << "姓名:" << students[i].name << " ";
cout << "成绩:";
for (int j = 0; j < NUM_OF_COURSES; j++) {
cout << students[i].score[j] << " ";
}
cout << "平均分:" << students[i].averageScore << endl;
}
return 0;
}
```
阅读全文