输入n行不同学生的name性别id和成绩,输出成绩最高的女生名字和id,成绩最低的男生名字和id求出二者的差

如果有性别缺少,输出Absent并在结果行输出NA

注意变量不要搞混,可以用结构体……不过似乎没有太大必要性

 1 #include <cstdio>
 2 #include <string.h>
 3 int main(){
 4     int mgrade=1000000,fgrade=-1,grade,n;
 5     char name[11],mname[11],fname[11],gender,
 6          gen1='n',gen2='n',id[11],fid[11],mid[11];
 7     scanf("%d",&n);
 8     while(n--){
 9         scanf("%s %c %s %d",&name,&gender,&id,&grade);
10         if(gender=='M'&&grade<mgrade){
11             strcpy(mname,name);
12             gen1=gender;
13             strcpy(mid,id);
14             mgrade=grade;
15         }
16         if(gender=='F'&&grade>fgrade){
17             strcpy(fname,name);
18             gen2=gender;
19             strcpy(fid,id);
20             fgrade=grade;
21         }
22     }
23     if(gen1=='n'&&gen2=='F'){
24         printf("%s %s\nAbsent\nNA",fname,fid);
25     }
26     else if(gen2=='n'&&gen1=='M'){
27         printf("Absent\n%s %s\nNA",mname,mid);
28     }
29     else{
30         printf("%s %s\n", fname,fid);
31         printf("%s %s\n", mname,mid);
32         printf("%d", fgrade-mgrade);
33     }
34     return 0;
35 }
02-13 23:14