题意分析:
(1)水题,没有什么好分析的。不需要开数组,只需要维护两个结构体,一个是最高分女生、一个最低分男生,然后边输入边更新这两个结构体。
可能坑点:
(1)因为分数的范围是[0,100],初始的最高分女生分数要设置为-1,不能为0,以免出现女生全是0的话,则不能更新,男生要设置为101,同理。
#include <iostream>
#include <string.h>
using namespace std;
struct student
{
string name;
char gender;
string ID;
int grade;
};
int main()
{
student s;
int N,i=0;
cin>>N;
student female={"",'F',"",-1};
student male={"",'M',"",101};
while(i<N)
{
cin>>s.name>>s.gender>>s.ID>>s.grade;
if(s.gender=='F'&&s.grade>female.grade)female=s;
if(s.gender=='M'&&s.grade<male.grade)male=s;
i++;
}
if(female.name==""||male.name=="")
{
if(female.name=="")
{
cout<<"Absent"<<endl;
cout<<male.name<<" "<<male.ID<<endl;
}
else
{
cout<<female.name<<" "<<female.ID<<endl;
cout<<"Absent"<<endl;
}
cout<<"NA"<<endl;
}
else
{
cout<<female.name<<" "<<female.ID<<endl;
cout<<male.name<<" "<<male.ID<<endl;
cout<<female.grade-male.grade<<endl;
}
return 0;
}