题目大意:
给出N个同学的信息,输出女生中最高分数获得者的信息与男生中最低分数获得者的信息,并输出它们的差。如果不存在女生或者男生,则在对应获得者信息处输出Absent,同时分数差处输出NA。
算法思路:
使用结构体Student同学的名字,性别,ID和分数,girl保存最高分的女生其分数初始为-1,boy保存最低分的男生其分数初始为101,对于每一次输入的信息,如果是男生,就判断当前输入的分数是否比boy的分数低,如果是,boy=student,如果是女生,判断该输入的分数是否比girl的分数高,如果是,girl=student.在最后输出的时候,对于girl.grade == -1的情况,说明没有相应的女生,boy.grade == 101说明没有相应的男生,对于以上2种情况之一最后都得输出NA
注意点:
1、name和ID的数组长度得开到11以上。
提交结果:
AC代码:
#include<cstdio>
using namespace std;
struct Student{
char name[20];
char gender;
char ID[20];
int grade;
};
int main(){
int N;
scanf("%d",&N);
Student student;
Student girl;//保存最高分的女生
girl.grade = -1;
Student boy;//保存最低分的男生
boy.grade = 101;
for(int i=0;i<N;++i){
scanf("%s %c %s %d",student.name,&student.gender,student.ID,&student.grade);
if(student.gender=='M'&&boy.grade>student.grade){
boy = student;
}else if(student.gender=='F'&&girl.grade<student.grade){
girl = student;
}
}
if(girl.grade != -1){
printf("%s %s\n",girl.name,girl.ID);
}else{
printf("Absent\n");
}
if(boy.grade != 101){
printf("%s %s\n",boy.name,boy.ID);
}else{
printf("Absent\n");
}
if(girl.grade != -1&&boy.grade != 101){
printf("%d",girl.grade-boy.grade);
}else{
printf("NA");
}
return 0;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。