题目描述 某班开设有英语、数学、程序设计三门课程,该班同学信息保存在文本文件student.txt中,编写程序从文件读入该班同学信息,分别按总成绩和英语成绩排序。该班同学不多于50人。 输入描述 文本文件student.txt,每行数据描述一个同学信息,包括名字、英语、数学、程序设计成绩 输出描述 该班同学总成绩排序和英语成绩排序,成绩相同时按输入次序。 每项占12位。 样例输入 文本文件student.txt,内容格式如下 张三 80 90 88 李四 66 80 90 王五 50 78 87 Jack 68 86 70 Tom 60 88 96 样例输出 Name English Math C Total 张三 80 90 88 258 Tom 60 88 96 244 李四 66 80 90 236 Jack 68 86 70 224 王五 50 78 87 215 Name English Math C Total 张三 80 90 88 258 Jack 68 86 70 224 李四 66 80 90 236 Tom 60 88 96 244 王五 50 78 87 215 C语言
时间: 2024-02-10 08:06:22 浏览: 128
设计一个学生类Student(学生学号、姓名、数学、英语、计算机成绩;)
5星 · 资源好评率100%
以下是 C++ 的实现代码,可以读取当前目录下的 student.txt 文件并按照总成绩和英语成绩排序:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
// 学生信息结构体
struct Student {
string name;
int english;
int math;
int c;
int total;
};
// 按总成绩排序的比较函数
bool cmpTotal(Student a, Student b) {
if (a.total != b.total) {
return a.total > b.total;
} else {
return false;
}
}
// 按英语成绩排序的比较函数
bool cmpEnglish(Student a, Student b) {
if (a.english != b.english) {
return a.english > b.english;
} else {
return false;
}
}
int main() {
ifstream fin("student.txt");
Student students[50];
int n = 0; // 学生人数
// 读取学生信息
while (fin >> students[n].name >> students[n].english >> students[n].math >> students[n].c) {
students[n].total = students[n].english + students[n].math + students[n].c;
n++;
}
// 按总成绩排序
sort(students, students + n, cmpTotal);
cout << "Name English Math C Total" << endl;
for (int i = 0; i < n; i++) {
cout << left << setw(12) << students[i].name
<< setw(12) << students[i].english
<< setw(12) << students[i].math
<< setw(12) << students[i].c
<< setw(12) << students[i].total << endl;
}
// 按英语成绩排序
sort(students, students + n, cmpEnglish);
cout << "Name English Math C Total" << endl;
for (int i = 0; i < n; i++) {
cout << left << setw(12) << students[i].name
<< setw(12) << students[i].english
<< setw(12) << students[i].math
<< setw(12) << students[i].c
<< setw(12) << students[i].total << endl;
}
return 0;
}
```
首先打开文件流 `fin`,然后通过循环读取文件中的每个学生信息,并计算总成绩。接着定义两个比较函数 `cmpTotal` 和 `cmpEnglish`,分别用于按总成绩和英语成绩排序。最后使用 `sort` 函数进行排序,并输出结果即可。注意,使用 `setw` 函数来设置每列的宽度,使输出格式对齐。
阅读全文