版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
题目大意:输入学生们的成绩、姓名,输出女生的最好成绩与男生的最差成绩,输出他们成绩差的绝对值。
将学生成绩由高至低排序,从高位遍历,输出第一位女生,从低位遍历,输出第一位男生;注意姓名、学号的空间不能分配太少。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct stu
{
char name[20], ID[20];
char sex;
int grade;
}stu_[1000];
bool cmp1(stu a, stu b) {
return a.grade > b.grade;
}
int n;
vector<stu> z(0);
int main() {
scanf("%d", &n);
for (int i=0; i < n; i++) {
cin>>stu_[i].name;
cin>>stu_[i].sex;
cin>>stu_[i].ID;
cin>>stu_[i].grade;
z.push_back(stu_[i]);
}
sort(z.begin(), z.end(), cmp1);
int u = -1, v = -1;
for (int i = 0; i < n; i++) {
if (z[i].sex == 'F') {
cout << z[i].name << " " << z[i].ID << endl;
u = z[i].grade;
break;
}
if (i == n - 1) printf("Absent\n");
}
for (int i = n - 1; i >= 0; i--) {
if (z[i].sex == 'M') {
cout << z[i].name << " " << z[i].ID << endl;
v = z[i].grade;
break;
}
if (i == 0) printf("Absent\n");
}
if (u > 0 && v > 0) {
printf("%d", abs(u - v));
}
else {
printf("NA");
}
}```