1036 Boys vs Girls (25 分)

做了几个同类型题后,这种题基本是套路题了吧。

  1. 男生最低分数获得者的分数初始化为101、女生最高分数获得者的分数初始化为-1。
  2. 在读入学生信息时,根据其性别来判断:
    • 如果是男生,且分数低于当前变量M所记录的分数,则用他的信息覆盖M。
    • 如果是女生,且分数高于当前变量F所记录的分数,则用她的信息覆盖F。
  3. 分别分数是否为-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;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14398846.html