题解 | #扑克牌大小#

扑克牌大小

https://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>

typedef struct{
    int type;
    int value;
}poker;

int get_poker_type(char* a){
    int a_len=strlen(a);
    int i,num_pk=1;
    for(i=0;i<a_len;i++){
        if(a[i]==' ') num_pk++;
    }
    if(num_pk==2){
        if(a[0]=='j' || ((a[0]=='J')&&(a[1]=='O'))){//joker JOKER
            num_pk = 6;
        }
    }
    return num_pk;
}

int get_poker_value(char* a,int a_type){
    int value=0;
    if(a_type==4){
        value=18;
    }else if(a_type==6){
        value=36;
    }
       switch(a[0]){
           case '3':value += 3;break;
           case '4':value += 4;break;
           case '5':value += 5;break;
           case '6':value += 6;break;
           case '7':value += 7;break;
           case '8':value += 8;break;
           case '9':value += 9;break;
           case '1':value += 10;break;
           case 'J':{
               if(a[1]=='O')
                   value += 17;
               else
                   value += 11;
               break;
           }
           case 'Q':value += 12;break;
           case 'K':value += 13;break;
           case 'A':value += 14;break;
           case '2':value += 15;break;
           case 'j':value += 16;break;
           default: break;
       }



    return value;
}

bool is_bomb(poker pk){
    if(pk.type==4 || pk.type==6){
        return true;
    }else{
        return false;
    }
}

int main() {
    char *a,*b;
    char input[60] ;//= "5 5 5 5-joker JOKER";
    gets(input);
    a = strtok(input,"-");
    b = strtok(NULL,"-");
//    printf("a=%s\n",a);
//    printf("b=%s\n",b);

    poker poker_a,poker_b;

    poker_a.type= get_poker_type(a);
    poker_b.type= get_poker_type(b);
//    printf("type_a=%d\n",poker_a.type);
//    printf("type_b=%d\n",poker_b.type);

    poker_a.value= get_poker_value(a,poker_a.type);
    poker_b.value= get_poker_value(b,poker_b.type);
//    printf("value_a=%d\n",poker_a.value);
//    printf("value_b=%d\n",poker_b.value);

    if(!is_bomb(poker_a) && !is_bomb(poker_b) && (poker_a.type!=poker_b.type)){
        printf("ERROR\n");
    }else if(poker_a.value>poker_b.value){
        printf("%s\n",a);
    }else if(poker_a.value<poker_b.value){
        printf("%s\n",b);
    }




    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务