用C++写一段程序,内容为有10个学生,每个学生的数据包括学号,姓名,3门功课的成绩。从键盘输入10个学生的数据,要求按平均成绩降序显示出所有学生的数据(包括学号、姓名、3门课成绩、平均成绩),并将其写入文本文件resulttxt中。
时间: 2023-12-15 14:13:00 浏览: 65
好的,我来为您编写这段程序。以下是完整的 C++ 代码实现:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
// 定义学生结构体
struct Student {
string id;
string name;
double score1;
double score2;
double score3;
double average;
};
int main() {
// 定义学生数组
Student students[10];
// 从键盘输入10个学生数据
for (int i = 0; i < 10; i++) {
cout << "请输入第 " << i+1 << " 个学生的数据:" << endl;
cout << "学号:";
cin >> students[i].id;
cout << "姓名:";
cin >> students[i].name;
cout << "成绩1:";
cin >> students[i].score1;
cout << "成绩2:";
cin >> students[i].score2;
cout << "成绩3:";
cin >> students[i].score3;
// 计算平均成绩
students[i].average = (students[i].score1 + students[i].score2 + students[i].score3) / 3.0;
}
// 按平均成绩降序排序
for (int i = 0; i < 10; i++) {
for (int j = i + 1; j < 10; j++) {
if (students[i].average < students[j].average) {
swap(students[i], students[j]);
}
}
}
// 显示所有学生数据并写入文件
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"
<< students[i].score1 << "\t" << students[i].score2 << "\t"
<< students[i].score3 << "\t" << fixed << setprecision(1) << students[i].average << endl;
cout << students[i].id << "\t" << students[i].name << "\t"
<< students[i].score1 << "\t" << students[i].score2 << "\t"
<< students[i].score3 << "\t" << fixed << setprecision(1) << students[i].average << endl;
}
outfile.close();
return 0;
}
```
程序的基本思路是先定义一个 `Student` 结构体表示学生,包括学号、姓名、3门课成绩和平均成绩。然后创建一个大小为10的 `students` 数组,从键盘输入10个学生的数据,计算平均成绩,并将其按照平均成绩降序排序。最后,程序将所有学生数据显示在屏幕上,并将其写入文本文件 `result.txt` 中。
注意,为了保证数据的格式美观,程序使用了 `iomanip` 头文件中的 `fixed` 和 `setprecision` 函数,对输出的浮点数进行了格式化处理。此外,程序在写入文件时,使用了 `ofstream` 类型和 `close()` 函数,保证写入操作的正确性。
阅读全文