没有必要存储所有信息,没有必要去排序。边输入边判断即可,仅保存当前最佳值。
#include<stdio.h>
#include<memory.h>
#include<string.h>
int main()
{
char bestGirl[11];
memset(bestGirl, 0, 11 * sizeof(char));
char bestID[11];
memset(bestID, 0, 11 * sizeof(char));
int bestGrade = -1;
char worstBoy[11];
memset(worstBoy, 0, 11 * sizeof(char));
char worstID[11];
memset(worstID, 0, 11 * sizeof(char));
int worstGrade = 1000;
int N;
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
char name[11], gender, ID[11];
int grade;
scanf("%s %c %s %d", name, &gender, ID, &grade);
if (gender == 'M')
{
if (grade < worstGrade)
{
strcpy(worstBoy, name);
strcpy(worstID, ID);
worstGrade = grade;
}
}
if (gender == 'F')
{
if (grade > bestGrade)
{
strcpy(bestGirl, name);
strcpy(bestID, ID);
bestGrade = grade;
}
}
}
bool flag = true;
if (bestGrade >= 0)
{
printf("%s %s\n", bestGirl, bestID);
}
else
{
printf("Absent\n");
flag = false;
}
if (worstGrade <= 100)
{
printf("%s %s\n", worstBoy, worstID);
}
else
{
printf("Absent\n");
flag = false;
}
if (flag)
{
printf("%d\n", bestGrade - worstGrade);
}
else
{
printf("NA\n");
}
return 0;
}