一样的,边输入边比较,保存,然后按题目所要求的顺序输出。
#include<stdio.h>
#include<string.h>
struct str{
char name[20];
char status[20];
}crew[110];
struct st{
char name[20];
};
int main(){
int n;
while(scanf("%d",&n)!=EOF){
char captain[20];
struct st wc[110];
struct st man[110];
struct st rat[110];
int j=0,k=0,t=0;
for(int i=0;i<n;i++){
scanf("%s%s",crew[i].name,crew[i].status);
if(strcmp(crew[i].status,"captain")==0)
strcpy(captain,crew[i].name);
if(strcmp(crew[i].status,"woman")==0||strcmp(crew[i].status,"child")==0)
strcpy(wc[j++].name,crew[i].name);
if(strcmp(crew[i].status,"man")==0)
strcpy(man[k++].name,crew[i].name);
if(strcmp(crew[i].status,"rat")==0)
strcpy(rat[t++].name,crew[i].name);
}
for(int i=0;i<t;i++)
printf("%s\n",rat[i].name);
for(int i=0;i<j;i++)
printf("%s\n",wc[i].name);
for(int i=0;i<k;i++)
printf("%s\n",man[i].name);
printf("%s\n",captain);
}
return 0;
}