题目粗心:

给出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;}