题解 | #扑克牌大小#
扑克牌大小
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;
}
基恩士成长空间 442人发布

查看25道真题和解析