PAT甲级_1036 Boys vs Girls (25 分)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44705116/article/details/102715148

题目大意:输入学生们的成绩、姓名,输出女生的最好成绩与男生的最差成绩,输出他们成绩差的绝对值。

将学生成绩由高至低排序,从高位遍历,输出第一位女生,从低位遍历,输出第一位男生;注意姓名、学号的空间不能分配太少。

#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");
	}
}```

猜你喜欢

转载自blog.csdn.net/weixin_44705116/article/details/102715148