c语言编程题!关于扑克牌(要完整代码最好有解释)背景:两个人每人发3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 09:41:14

c语言编程题!关于扑克牌(要完整代码最好有解释)背景:两个人每人发3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依
c语言编程题!关于扑克牌(要完整代码最好有解释)
背景:两个人每人发3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依次是:2-10、J、Q、K、A),谁手上有最大的一张或多张(如果有相同的牌)牌谁获胜.
输入:A的3张牌(未排序)和B的3张牌(未排序).(参见用例)
输出:A的3张牌的排序后的输出和B的3张牌的排序后的输出,以及A和B谁获胜.(参见用例)

c语言编程题!关于扑克牌(要完整代码最好有解释)背景:两个人每人发3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依

#include<stdio.h>
int asc(char p[][3]);
int isError(char p1[][3],char p2[][3]);
void compare(char p3[][3],char p4[][3]);
int main()
{
 char a[3][3],b[3][3],c;
 int i,j,resulta,resultb,result,flag=0;
 printf("请输入A的扑克牌,扑克牌之间以空格隔开,然后按下回车:\n");
 for(i=0;i<3;i++)
 {
  for(j=0;j<3;j++)
  {
   c=getchar();
   if(c!=' '&&c!=10)
   {
    if(j==0)
    {
     if(c=='H'||c=='S'||c=='D'||c=='C')
      ;
     else
     {
      printf("Input Error!\n");
      return 0;
     }
    }
    if(j==1)
    {
     if(c=='J'||c=='Q'||c=='K'||c=='A'||(c>='1'&&c<='9'))
     {
      if(c=='J')
       c=59;
      if(c=='Q')
       c=60;
      if(c=='K')
       c=61;
      if(c=='A')
       c=62;
      if(c=='1')
       flag=1;
     }
     else
     {
      printf("Input Error!\n");
      return 0;
     }
    }
    if(j==2)
    {
     if(c!='0')
     {
      printf("Input Error!\n");
      return 0;
     }else
     {
      flag=0;
      c=58;
      a[i][1]=c;
      break;
     }

    }
    a[i][j]=c;
   }else
   {
    if(flag==1)
    {
     printf("Input Error!\n");
     return 0;
    }
    if(j==2)
     break;
    j--;
   }
  }
 }
 printf("请输入B的扑克牌,扑克牌之间以空格隔开,然后按下回车:\n");
 for(i=0;i<3;i++)
 {
  for(j=0;j<3;j++)
  {
   c=getchar();
   if(c!=' '&&c!=10)
   {
    if(j==0)
    {
     if(c=='H'||c=='S'||c=='D'||c=='C')
      ;
     else
     {
      printf("Input Error!\n");
      return 0;
     }
    }
    if(j==1)
    {
     if(c=='J'||c=='Q'||c=='K'||c=='A'||(c>='1'&&c<='9'))
     {
      if(c=='J')
       c=59;
      if(c=='Q')
       c=60;
      if(c=='K')
       c=61;
      if(c=='A')
       c=62;
      if(c=='1')
       flag=1;
     }
     else
     {
      printf("Input Error!\n");
      return 0;
     }
    }
    if(j==2)
    {
     if(c!='0')
     {
      printf("Input Error!\n");
      return 0;
     }else
     {
      flag=0;
      c=58;
      b[i][1]=c;
      break;
     }

    }
    b[i][j]=c;
   }else
   {
    if(flag==1)
    {
     printf("Input Error!\n");
     return 0;
    }
    if(j==2)
     break;
    j--;
   }
  }
 }
 resulta=asc(a);
 if(resulta==0)
  return 0;
 resultb=asc(b);
 if(resultb==0)
  return 0;
 result=isError(a,b);
 if(result==0)
  return 0;
 compare(a,b);
 for(i=0;i<3;i++)
 {
  a[i][2]='\0';
  b[i][2]='\0';
 }
 printf("A: ");
 for(i=0;i<3;i++)
 {
  if(a[i][1]>'2'&&a[i][1]<'9')
   printf("%s ",a[i]);
  else
  {
   if(a[i][1]==58)
   {
    printf("%c",a[i][0]);
    printf("10 ");
   }
   if(a[i][1]==59)
   {
    printf("%c",a[i][0]);
    printf("J ");
   }
   if(a[i][1]==60)
   {
    printf("%c",a[i][0]);
    printf("Q ");
   }
   if(a[i][1]==61)
   {
    printf("%c",a[i][0]);
    printf("K ");
   }
   if(a[i][1]==62)
   {
    printf("%c",a[i][0]);
    printf("A ");
   }
  }
 }
 printf("\nB: ");
 for(i=0;i<3;i++)
 {
  if(b[i][1]>'2'&&b[i][1]<'9')
   printf("%s ",b[i]);
  else
  {
   if(b[i][1]==58)
   {
    printf("%c",b[i][0]);
    printf("10 ");
   }
   if(b[i][1]==59)
   {
    printf("%c",b[i][0]);
    printf("J ");
   }
   if(b[i][1]==60)
   {
    printf("%c",b[i][0]);
    printf("Q ");
   }
   if(b[i][1]==61)
   {
    printf("%c",b[i][0]);
    printf("K ");
   }
   if(b[i][1]==62)
   {
    printf("%c",b[i][0]);
    printf("A ");
   }
  }
 }
 printf("\n");
 return 0;
}

int asc(char p[][3])
{
 int m,temp[2];
 if(p[0][1]==p[1][1])
 {
  if(p[0][0]==p[1][0])
  {
   printf("Input Error!\n");
   return 0;
  }
 }
 if(p[1][1]==p[2][1])
 {
  if(p[1][0]==p[2][0])
  {
   printf("Input Error!\n");
   return 0;
  }
 }
 if(p[0][1]==p[2][1])
 {
  if(p[0][0]==p[2][0])
  {
   printf("Input Error!\n");
   return 0;
  }
 }
 m=0;
 if(p[m][1]<p[m+1][1])
 {
  temp[0]=p[m][0];
  temp[1]=p[m][1];
  p[m][0]=p[m+1][0];
  p[m][1]=p[m+1][1];
  p[m+1][0]=temp[0];
  p[m+1][1]=temp[1];
 }
 if(p[m][1]<p[m+2][1])
 {
  temp[0]=p[m][0];
  temp[1]=p[m][1];
  p[m][0]=p[m+2][0];
  p[m][1]=p[m+2][1];
  p[m+2][0]=temp[0];
  p[m+2][1]=temp[1];
 }
 m=1;
 if(p[m][1]<p[m+1][1])
 {
  temp[0]=p[m][0];
  temp[1]=p[m][1];
  p[m][0]=p[m+1][0];
  p[m][1]=p[m+1][1];
  p[m+1][0]=temp[0];
  p[m+1][1]=temp[1];
 }
 return 1;
}

int isError(char p1[][3],char p2[][3])
{
 int n;
 for(n=0;n<3;n++)
 {
  if(p1[n][0]==p2[0][0]&&p1[n][1]==p2[0][1])
  {
   printf("Input Error!\n");
   return 0;
  }
  if(p1[n][0]==p2[n][0]&&p1[1][1]==p2[1][1])
  {
   printf("Input Error!\n");
   return 0;
  }
  if(p1[n][0]==p2[n][0]&&p1[2][1]==p2[2][1])
  {
   printf("Input Error!\n");
   return 0;
  }
 }
 return 1;
}

void compare(char p3[][3],char p4[][3])
{
 int x;
 for(x=0;x<3;x++)
 {
  if(p3[x][1]==p4[x][1])
   continue;
  if(p3[x][1]>p4[x][1]){
   printf("Winner is A!\n");
   return;
  }
  if(p3[x][1]<p4[x][1]){
   printf("Winner is B!\n");
   return;
  }
 }
 printf("Winner is X!\n");
}

 

这次对了.

c语言编程题!关于扑克牌(要完整代码最好有解释)背景:两个人每人发3张牌(各从一副牌中),每张牌包括花色(红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club))和大小(从小到大依 C语言编程,计算s=2-4+6-8+……+198-200的和求完整的代码 C语言解不等式的一个编程问题,只要代码 怎么用C语言生成随机数想生成1~13的随机数,最好带上一段完整的代码 C语言编程题 -5 解一元二次方程ax2+bx+c=0的解.c语言编程求代码 求m个数中最小的k个数,用C语言伪代码怎么编写啊?要完整的代码呀, 数值分析计算实习题关于插值法,用C语言编程 C语言编程题:有一个数的立方是个四位数,四次方是个六位数,10个数字里包含了0只能用C语言哦,代码简洁...看看有没有高手 99乘法表的c语言编程,要求能输出完整乘法表 C语言中随机数代码 最小公倍数的算法 分解质因数 急谁能告诉我所有最小公倍数的算法,最好把代码传上来,要PASCAL语言的,主要是分解质因数法求最小公倍数,一定要这个算法的完整代码,算法描述:先将n个数分 C语言编程求解释 急求一个关于洗车仿真的编程代码,题目如下要用C语言做.5.5 课题C5:洗车仿真1.设计目的(1)复习队列的存储和实现方法.(2)进一步掌握队列的实际应用.(3)掌握利用时间函数模拟产生 如何用C语言实现n元多项式乘法急求详细代码,最好是两个三元二次多项式的乘法的详细代码,急啊,提前向各位大侠道谢了!C语言的,要能运行. C语言写代码要求英语要到什么程度? 求五位数各位数字的平方和为100的最大五位数 线等用VB语言进行编程要编程代码 国二C语言编程题:完成分段函数