Untitled

我把我不會的地方標註起來了,拜託有空教教我~
mail@pastecode.io avatar
unknown
plain_text
2 years ago
2.0 kB
1
Indexable
Never
#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;
}