思路:该题比较简单,与之前的签入与签收一个思路,就是多几个存储变量。
#include<iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
string MAXname, MINname;
string MAXid, MINid;
int maxGrade=-1, minGrade=101;
for (int i = 0; i < n; i++)
{
string name, fm, id;
int grade;
cin >> name >> fm >> id >> grade;
if (fm == "F" && grade > maxGrade)
{
maxGrade = grade;
MAXname = name;
MAXid = id;
}
if (fm == "M" && grade < minGrade)
{
minGrade = grade;
MINname = name;
MINid = id;
}
}
if (minGrade == 101)
{
cout << MAXname <<" "<< MAXid << endl;
cout << "Absent" << endl;
cout << "NA" << endl;
}
if (maxGrade == -1)
{
cout << "Absent" << endl;
cout << MINname <<" "<<MINid << endl;
cout << "NA" << endl;
}
if(maxGrade!=-1&&minGrade!=101)
{
int Grade = maxGrade - minGrade;
cout << MAXname << " " << MAXid << endl;
cout << MINname << " " << MINid << endl;
cout << Grade << endl;
}
return 0;
}
更优解:
自己用的是minGrade和maxGrade来判断有没有男生或女生,y总用是否为空.empty()和.size()来判断有无男生或女生。