思路:每次输入,单独更新女生的最高分和男生的最低分,记录数组下标i。输出时女生和男生都要判断是否为Absent,所以girl和boy初值可以设为-1,便于判断。
注意:gender输入时要用%c,如果设成了%s,则要用strcmp进行比较。字符串输入不用&。
代码:
#include<cstdio>
struct student{
char name[20]; //数组大小要大于10
char gender;
char ID[20];
int grade;
}student[100010];
int main(){
int n,girl = -1,boy = -1;
int fmax=0,mmin=100;
scanf("%d",&n);
for(int i = 0;i < n;i ++){
scanf("%s %c %s %d",student[i].name,&student[i].gender,student[i].ID,&student[i].grade); //字符串输入不用&
if(student[i].gender == 'F'){ //字符直接用=比较,如果是字符串要用strcmp
if(student[i].grade >= fmax){
fmax = student[i].grade;
girl = i;
}
}
else{
if(student[i].grade <= mmin){
mmin = student[i].grade;
boy = i;
}
}
}
if(girl == -1){
printf("Absent\n"); //判断如果没有的话
}
else printf("%s %s\n",student[girl].name,student[girl].ID);
if(boy == -1){
printf("Absent\n");
}
else printf("%s %s\n",student[boy].name,student[boy].ID);
if(girl == -1 || boy == -1){
printf("NA\n");
}
else printf("%d",fmax-mmin);
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。