有10个学生,每个学生的数据包括学号、姓名、3门功课的成绩。从键盘输入10个学生的数据,要求按平均成绩降序显示出所有学生的数据(包括学号、姓名、3门课成绩、平均成绩),并将其写入文本文件result.txt中
时间: 2023-12-15 09:44:15 浏览: 61
好的,这个问题是一个典型的排序问题。我可以使用C++语言来解决这个问题。下面是我编写的一份示例代码,可以参考一下:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
struct Student {
string id;
string name;
double score[3];
double avg_score;
};
bool cmp(const Student& a, const Student& b) {
return a.avg_score > b.avg_score;
}
int main() {
Student students[10];
// 从键盘输入学生数据
for (int i = 0; i < 10; i++) {
cin >> students[i].id >> students[i].name;
double sum_score = 0;
for (int j = 0; j < 3; j++) {
cin >> students[i].score[j];
sum_score += students[i].score[j];
}
students[i].avg_score = sum_score / 3;
}
// 按平均成绩降序排序
sort(students, students + 10, cmp);
// 输出学生数据
cout << "学号\t姓名\t科目1\t科目2\t科目3\t平均成绩" << endl;
for (int i = 0; i < 10; i++) {
cout << students[i].id << "\t" << students[i].name << "\t";
for (int j = 0; j < 3; j++) {
cout << students[i].score[j] << "\t";
}
cout << students[i].avg_score << endl;
}
// 将学生数据写入文件
ofstream outfile("result.txt");
outfile << "学号\t姓名\t科目1\t科目2\t科目3\t平均成绩" << endl;
for (int i = 0; i < 10; i++) {
outfile << students[i].id << "\t" << students[i].name << "\t";
for (int j = 0; j < 3; j++) {
outfile << students[i].score[j] << "\t";
}
outfile << students[i].avg_score << endl;
}
outfile.close();
return 0;
}
```
这份代码首先定义了一个结构体`Student`,包含学号、姓名、3门课成绩和平均成绩四个属性。然后使用`cin`从键盘输入10个学生的数据,并按平均成绩降序排序。最后使用`cout`输出所有学生的数据,同时使用`ofstream`将学生数据写入文本文件`result.txt`中。需要注意的是,为了在输出时对齐,我在输出学生数据时使用了制表符`\t`。
希望这份代码可以帮到你!
阅读全文