题目大意:找出分数最高的女学生和分数最低的女学生求差值
解题思路:因为分数保证不重合 ,因此直接用数组下标来表示分数,方便进行遍历
从高往低遍历 一旦性别是F 则就是分数最高的女学生
从低往高遍历 一旦性别是M 就是分数最低的男学生
假若遍历都达到了终点 则说明没有 输出Absent
#include<iostream>
using namespace std;
#define max 101
struct Student{//建立学生结构
string name;
char sex;
string id;
} stu[max];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){//输入学生的信息
string nname,nid;
char nsex;
int nscore;
cin>>nname>>nsex>>nid>>nscore;//c++里的string类型尽量不要用%s 犯了好几次这样的错误 直接用cin或者cout更方便
stu[nscore]={nname,nsex,nid};
}
int i,j;
for(i=100;i>=0;i--){//找分数最高的女生
if(stu[i].sex=='F'){
cout<<stu[i].name<<" "<<stu[i].id<<endl;
break;
}
}
if(i<0) printf("Absent\n");
for(j=0;j<=100;j++){//找分数最低的男生
if(stu[j].sex=='M') {
cout<<stu[j].name<<" "<<stu[j].id<<endl;
break;
}
}
if(j>100) printf("Absent\n");
if(i>=0&&j<=100) printf("%d",(i<j)?(j-i):(i-j));//输出差值
else printf("NA");
}