两人抽取扑克牌比大小

假设有52张扑克牌,分为黑桃,红心,梅花,方块四种花色,每种花色又有从A、2… K共13张牌。若规定扑克牌的大小先以花色优先(即,黑桃>红心>梅花>方块),再以点数(即,A<2<3…<10<J<Q<K)来判大小。请编写程序,模拟两个人出牌(两人各处一张牌),判断出哪张牌大。例如:甲出牌“梅花6”,乙出牌“红心2”,则判定乙的牌大。

解答如下

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define MaxDecor 4
#define MaxPoint 13
#define MaxNum 52
struct poker
{
    int Decor;
    int Point;
};
char dector[MaxDecor][6]={"方块","梅花","红心","黑桃"};
char point[MaxPoint][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
void randpoker(struct poker t[],int n)
{
    for(int i=0;i<n;i++)
    {
        t[i].Decor=rand()%MaxDecor;
        t[i].Point=rand()%MaxPoint;
    }
}
void test(struct poker t[],int n)
{
    srand((unsigned)time(NULL));
    int a=rand()%n;
    int b=rand()%n;
    printf("甲出:%s%s\n",dector[t[a].Decor],point[t[a].Point]);
    printf("乙出:%s%s\n",dector[t[b].Decor],point[t[b].Point]);
    if(a!=b)
    {
        if(t[a].Decor>t[b].Decor)
        {
            printf("甲大\n");
        }
        else if(t[a].Decor<t[b].Decor)
        {
            printf("乙大\n");
        }
        else
        {
            if(t[a].Point>t[b].Point)
            {
                printf("甲大\n");
            }
            else if(t[a].Point<t[b].Point)
            {
                printf("乙大\n");
            }
        }
    }
    else
    {
        printf("一样大\n");
    }
}
int main()
{
    struct poker t[MaxNum];
    randpoker(t,MaxNum);
    for(int i=0;i<10;i++)
    {
        test(t,MaxNum);
        Sleep(1000);
        printf("\n");
    }
    return 0;
}

简单写了下,供参考
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *pka[4]= {"方块","梅花","红心","黑桃"};
char card[13]= {'A','1','2','3','4','5','6','7','8','9','J','Q','K'};

int findCard(char c)
{
    for(int i=0; i<13; i++)
        if(card[i]==c)
            return i;

    return -1;
}

int findPK(char *c)
{
    for(int i=0; i<4; i++)
        if(strcmp(pka[i],c)==0)
            return i;

    return -1;
}

int main()
{
    int a1,b1,a2,b2,re;
    char pk1[10],pk2[10],card1,card2;
    scanf("%s%s",pk1,pk2);

    card1=pk1[4];
    card2=pk2[4];
    pk1[4]=pk2[4]='\0';
    printf("甲出牌\"%s%c\"\n",pk1,card1);
    printf("乙出牌\"%s%c\"\n",pk2,card2);

    a1=findPK(pk1);
    b1=findCard(card1);
    a2=findPK(pk2);
    b2=findCard(card2);
    if(a1==-1 || a2==-1 || b1==-1 || b2==-1)
    {
        printf("输入错误\n");
        exit(1);
    }

    if(a1==a2)
    {
        if(b1>b2)
            b1=1;
        else
            b1=0;
    }
    else if(a1>a2)
        b1=1;
    else
        b1=0;

    if(b1)
        printf("甲的牌大\n");
    else
        printf("乙的牌大\n");

    return 0;
}