人群之中一抹光 2023-04-06 21:59 采纳率: 100%
浏览 113
已结题

扑克问题如何解决??

题面:
背景:两个人每人发3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依次是:2-10、J、Q、K、A),谁手上有最大的一张或多张(如果有相同的牌)牌谁获胜。

输入:A的3张牌(未排序)和B的3张牌(未排序)。(参见用例)

输出:A的3张牌的排序后的输出和B的3张牌的排序后的输出,以及A和B谁获胜。(参见用例)

 测试输入    期待的输出    时间限制    内存限制    额外进程

测试用例 1 以文本方式显示
DA H2 C3↵
H4 H3 DJ↵
以文本方式显示
Winner is B!↵
A: H2 DA C3↵
B: H4 H3 DJ↵
无限制 64M 0
测试用例 3 以文本方式显示
HA CA CB↵
HQ CJ CQ↵
以文本方式显示
Input Error!↵
无限制 64M 0
测试用例 4 以文本方式显示
HA CA CJ↵
DA DK DK↵
以文本方式显示
Input Error!↵
无限制 64M 0
测试用例 5 以文本方式显示
SA SJ SK↵
SA SJ SK↵
以文本方式显示
Winner is X!↵
A: SA SK SJ↵
B: SA SK SJ↵
无限制 64M 0
问题:最后一个保密点过不去
附代码:

char a[3][3],b[3][3];      
#include<stdio.h>      
#include<string.h>      
main(){      
int trb[3]={1,1,1},tra[3]={1,1,1},flag=1,temp1,i,j,a1[3][2],b1[3][2];      
scanf("%s %s %s",a[0],a[1],a[2]);      
scanf("%s %s %s",b[0],b[1],b[2]);      
for(j=0;j<3;j++)      
 if(a[0][j]!=a[1][j])      
 tra[0]=0;      
for(j=0;j<3;j++)      
 if(a[0][j]!=a[2][j])      
 tra[1]=0;      
for(j=0;j<3;j++)      
 if(a[2][j]!=a[1][j])      
 tra[2]=0;      
for(j=0;j<3;j++)      
 if(b[2][j]!=b[1][j])      
 trb[0]=0;      
for(j=0;j<3;j++)      
 if(b[0][j]!=b[1][j])      
 trb[1]=0;      
for(j=0;j<3;j++)      
 if(b[0][j]!=b[2][j])      
 trb[2]=0;      
for(i=0;i<3;i++)      
if(tra[i]==1)      
{printf("Input Error!\n");return 0;}      
for(i=0;i<3;i++)      
if(trb[i]==1)      
{printf("Input Error!\n");return 0;}      
for(i=0;i<3;i++)      
{switch(a[i][0])      
{case'H':a1[i][0]=4;break;      
 case'S':a1[i][0]=3;break;       
 case'D':a1[i][0]=2;break;       
 case'C':a1[i][0]=1;break;       
 default:{printf("Input Error!\n");return 0;}       
}}      
for(i=0;i<3;i++)      
{switch(a[i][1])      
{case'A':a1[i][1]=14;break;      
 case'K':a1[i][1]=13;break;       
 case'Q':a1[i][1]=12;break;       
 case'J':a1[i][1]=11;break;       
 case'1':{ if(a[i][2]=='0') a1[i][1]=10;      
           else {printf("Input Error!\n");return 0;} }      
         break;      
 case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9': { if(a[i][2]=='\0') a1[i][1]=a[i][1]-'0';      
           else {printf("Input Error!\n");return 0;}}break;      
 default:{printf("Input Error!\n");return 0;}      
}}      
for(i=0;i<3;i++)      
{switch(b[i][0])      
{case'H':b1[i][0]=4;break;      
 case'S':b1[i][0]=3;break;       
 case'D':b1[i][0]=2;break;       
 case'C':b1[i][0]=1;break;       
 default:{printf("Input Error!\n");return 0;}      
}}      
for(i=0;i<3;i++)      
{switch(b[i][1])      
{case'A':b1[i][1]=14;break;      
 case'K':b1[i][1]=13;break;       
 case'Q':b1[i][1]=12;break;       
 case'J':b1[i][1]=11;break;       
 case'1':{ if(b[i][2]=='0') b1[i][1]=10;      
           else {printf("Input Error!\n");return 0;} }      
         break;      
 case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9': { if(b[i][2]=='\0') b1[i][1]=b[i][1]-'0';      
           else {printf("Input Error!\n");return 0;}}break;      
 default:{printf("Input Error!\n");return 0;}      
}}                                   
//输入参数,并判断输入是否合法       
for(i=0;i<2;i++)      
{for(j=0;j<2-i;j++)      
if(a1[j][0]<=a1[j+1][0])      
{temp1=a1[j][0];a1[j][0]=a1[j+1][0];a1[j+1][0]=temp1;temp1=a1[j][1];a1[j][1]=a1[j+1][1];a1[j+1][1]=temp1;}      
}      
for(i=0;i<2;i++)      
{for(j=0;j<2-i;j++)      
if(b1[j][0]<=b1[j+1][0])      
{temp1=b1[j][0];b1[j][0]=b1[j+1][0];b1[j+1][0]=temp1;temp1=b1[j][1];b1[j][1]=b1[j+1][1];b1[j+1][1]=temp1;}      
}      
if(a1[0][0]==a1[1][0]&&a1[1][0]==a1[2][0])      
{for(i=0;i<2;i++)      
{for(j=0;j<2-i;j++)      
if(a1[j][1]<=a1[j+1][1])      
{temp1=a1[j][1];a1[j][1]=a1[j+1][1];a1[j+1][1]=temp1;}      
}}       
else{for(i=0;i<2;i++)       
if(a1[i][0]==a1[i+1][0]&&a1[i][1]<=a1[i+1][1])      
{temp1=a1[i][1];a1[i][1]=a1[i+1][1];a1[i+1][1]=temp1;}      
}      
if(b1[0][0]==b1[1][0]&&b1[1][0]==b1[2][0])      
{for(i=0;i<2;i++)      
{for(j=0;j<2-i;j++)      
if(b1[j][1]<=b1[j+1][1])      
{temp1=b1[j][1];b1[j][1]=b1[j+1][1];b1[j+1][1]=temp1;}      
}}       
else{for(i=0;i<2;i++)       
if(b1[i][0]==b1[i+1][0]&&b1[i][1]<=b1[i+1][1])      
{temp1=b1[i][1];b1[i][1]=b1[i+1][1];b1[i+1][1]=temp1;}      
}                                  
 //排序       
for(i=0;i<3;i++)      
{for(j=0;j<2;j++)      
 if(a1[i][j]!=b1[i][j])      
 flag=0;      
}      
if(flag==1) printf("Winner is X!\n");      
if(flag==0)      
for(i=0;i<3;i++)      
{if(a1[i][0]>b1[i][0])      
{printf("Winner is A!\n");break;}      
else if(a1[i][0]<b1[i][0]){printf("Winner is B!\n");break;}      
     else{ if(a1[i][1]>b1[i][1])       
           {printf("Winner is A!\n");break;}      
           else  if(a1[i][1]<b1[i][1]){printf("Winner is B!\n");break;}      
         }      
}      
//比较       
printf("A:");      
for(i=0;i<3;i++)      
{printf(" ");      
switch(a1[i][0])      
{case 4:printf("H");break;      
 case 3:printf("S");break;       
 case 2:printf("D");break;       
 case 1:printf("C");break;       
}      
switch(a1[i][1])      
{case 14:printf("A");break;      
 case 13:printf("K");break;       
 case 12:printf("Q");break;       
 case 11:printf("J");break;       
 default:printf("%d",a1[i][1]);      
}}      
printf("\n");      
printf("B:");      
for(i=0;i<3;i++)      
{printf(" ");      
switch(b1[i][0])      
{case 4:printf("H");break;      
 case 3:printf("S");break;       
 case 2:printf("D");break;       
 case 1:printf("C");break;       
}      
switch(b1[i][1])      
{case 14:printf("A");break;      
 case 13:printf("K");break;       
 case 12:printf("Q");break;       
 case 11:printf("J");break;       
 default:printf("%d",b1[i][1]);      
}}      
printf("\n");      
return 0;      
}  

  • 写回答

3条回答 默认 最新

  • X-道至简 2023-04-06 22:16
    关注

    最后一个保密点过不去。 这句啥意思

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 赞助了问题酬金20元 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系