Untitled
我把我不會的地方標註起來了,拜託有空教教我~unknown
plain_text
4 years ago
2.0 kB
7
Indexable
#include <stdio.h>
#include <stdlib.h> //這個是甚麼時候要用呢?
#include <string.h>
//這段我不會~
typedef struct _cat{
char name[50];
int occa;
int age;
}cat;
int cmp(const void *a,const void *b){ //這句括號中的我看不懂
cat A=*(cat*)a; //這句我不會
cat B=*(cat*)b;
if(A.occa==B.occa){
if(A.age==B.age){
return strcmp(A.name,B.name); //這個是代表什麼呢?
}
else if(A.age>B.age){
return A.occa==5?1:-1;
}
else{
return A.occa==5?-1:1;
}
}
else if(A.occa>B.occa){
return 1;
}
else{
return -1;
} //1和-1的意思?
}
int main(void){
int N,M;
cat cats[10010]; //這句我也不懂他的意思
while((scanf("%d %d",&N,&M))!=EOF){
for(int i=0;i<N;i++){
char temp[50];
scanf("%s %s %d",cats[i].name,temp,&(cats[i].age)); //為甚麼是用cats?
switch(temp[0]){
case 'e':
cats[i].occa=1;
break;
case 'n':
cats[i].occa=2;
break;
case 'k':
cats[i].occa=3;
break;
case 'w':
cats[i].occa=4;
break;
case 'a':
cats[i].occa=5;
break;
case 'm':
cats[i].occa=6;
break;
case 'd':
cats[i].occa=7;
break;
case 'l':
cats[i].occa=8;
break;
}
}
qsort(cats,N,sizeof(cat),cmp); //這句我不會QQ
for(int i=0;i<M && i<N;i++){
printf("%s\n",cats[i].name);
}
}
return 0;
}Editor is loading...