1036 Boys vs Girls (25 分)
做了几个同类型题后,这种题基本是套路题了吧。
- 男生最低分数获得者的分数初始化为101、女生最高分数获得者的分数初始化为-1。
- 在读入学生信息时,根据其性别来判断:
- 如果是男生,且分数低于当前变量M所记录的分数,则用他的信息覆盖M。
- 如果是女生,且分数高于当前变量F所记录的分数,则用她的信息覆盖F。
- 分别分数是否为-1与101,若是,则说明不存在对应女生或男生的信息,输出Absent。之后,如果最高分数女生和最低分数男生的信息都存在,则输出他们的分数差;而只要最高分数女生与最低分数男生的信息中有一个不存在,则输出NA。
struct Node
{
string name;
char sex;
string id;
int grade;
}cur,highest,lowest;
int n;
void init()
{
highest.grade=-1;
lowest.grade=101;
}
int main()
{
init();
cin>>n;
for(int i=0;i<n;i++)
{
cin>>cur.name>>cur.sex>>cur.id>>cur.grade;
if(cur.sex == 'F' && cur.grade > highest.grade)
highest=cur;
if(cur.sex == 'M' && cur.grade < lowest.grade)
lowest=cur;
}
if(highest.grade < 0) puts("Absent");
else cout<<highest.name<<' '<<highest.id<<endl;
if(lowest.grade > 100) puts("Absent");
else cout<<lowest.name<<' '<<lowest.id<<endl;
if(highest.grade < 0 || lowest.grade > 100) puts("NA");
else cout<<highest.grade-lowest.grade<<endl;
//system("pause");
return 0;
}