有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求输出三门课程的平均成绩,然后按照平均成绩由高到低输出个学生的信息(包括学号、姓名、3门课程成绩、平均分)

时间: 2024-05-28 09:07:18 浏览: 240
这是一个比较典型的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; } ```
阅读全文

相关推荐