结构类型struct Stu描述学生成绩记录;函数void input(struct Stu s[], int n)功能是输入n个学生的成绩记录(包括学号、姓名和两门课成绩);函数void average(struct Stu s[], int n)功能是计算每个学生2门课的平均成绩并存入对应记录的aver单元;函数void sort(struct Stu s[], int n)功能是按平均成绩的升序对学生记录进行排序。main函数调用以上函数,并输出结果,题目保证每个学生的平均分都不一样,请在五个空格之间填写内容。 输入格式: 输入为三行,每行包含学号,姓名(姓名不含空格),两门课成绩(以空格隔开)。 输出格式: 输出为三行,按平均成绩升序依次输出,每行包含学号,姓名,平均分(小数点后保留两位小数),每行的各数据项用空格间隔。
时间: 2024-02-16 11:00:48 浏览: 64
C语言实现简单学生成绩管理系统
5星 · 资源好评率100%
代码如下:
```c++
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
struct Stu {
int sno;
string name;
double grade1;
double grade2;
double aver;
};
void input(struct Stu s[], int n) {
for (int i = 0; i < n; i++) {
cin >> s[i].sno >> s[i].name >> s[i].grade1 >> s[i].grade2;
}
}
void average(struct Stu s[], int n) {
for (int i = 0; i < n; i++) {
s[i].aver = (s[i].grade1 + s[i].grade2) / 2;
}
}
void sort(struct Stu s[], int n) {
std::sort(s, s + n, [](const Stu& a, const Stu& b) {
return a.aver < b.aver;
});
}
int main() {
struct Stu s[3];
input(s, 3);
average(s, 3);
sort(s, 3);
for (int i = 0; i < 3; i++) {
cout << s[i].sno << " " << s[i].name << " ";
cout << fixed << setprecision(2) << s[i].aver << endl;
}
return 0;
}
```
输入示例:
```
1001 Tom 90 80
1002 Jerry 85 90
1003 Bob 95 92
```
输出示例:
```
1002 Jerry 87.50
1001 Tom 85.00
1003 Bob 93.50
```
阅读全文