• 用C语言实现的扑克牌洗牌程序


    一副牌:54张

    从0开始排序:

    0-12表示黑桃   A 1,2,3,... 10,J,Q,K

    13-25表示红桃 A 1,2,3,... 10,J,Q,K

    26-38表示草花 A 1,2,3,... 10,J,Q,K

    39-51表示方块 A 1,2,3,... 10,J,Q,K

    52,53表示大小王

    #include <stdio.h>
    
    void shuffle(char *porker)
    {
        /*将存放数组初始化为1-54*/
        for (int i = 0; i < 54; i++)
        {
            porker[i] = i;
        }
    
        /*生成随机种子*/
        srand(time(NULL));
    
        /*洗牌,生成随机数,两两交换*/
        for (int i = 0; i < 54; i++)
        {
            int rnd = rand() % 54;
            /*指定任意一张牌,与当前牌进行交换*/
            int temp = porker[i];
            porker[i] = porker[rnd];
            porker[rnd] = temp;
        }
    }
    
    void play(char *porker)
    {    
        for (int i = 0; i < 54; i++)
        {
            printf("i=%2d	", porker[i]);
            if ((i + 1) %3==0)
                printf("
    ");
        }
    
    }
    
    void bottom(char *porker)
    {
        /*定义花色的枚举体*/
        enum TYPE{
            黑桃,红桃,草花,方块
        };
        /*定义几个特殊牌的枚举体*/
        enum VALUE{
            A=0,J = 11, Q, K
        };
    
        printf("
    =======底牌=========
    ");
        for (int i = 51; i < 54; i++)
        {
            /*大小王特殊处理*/
            if (porker[i] == 52) printf("小王"); 
            if (porker[i] == 53) printf("大王"); 
            else{
                /*0-12代表红桃的A-1-2-K*/
                int type = porker[i] / 13;
                int value = porker[i] % 13;
                switch (type)
                {
                case 黑桃:printf("黑桃"); break;
                case 红桃:printf("红桃"); break;
                case 草花:printf("草花"); break;
                case 方块:printf("方块"); break;
                }
                switch (value)
                {
                case A:printf("A"); break;
                case J:printf("J"); break;
                case Q:printf("Q"); break;
                case K:printf("K"); break;
                default:printf("%d", value); break;
                }
                printf("	");
            }        
        }
    }
    
    int main()
    {
        /*存放54张扑克的数组*/
        char porker[54] = { 0 };
    
        /*洗牌*/
        shuffle(porker);
        /*出牌*/
        play(porker);
        /*底牌,3张底牌*/
        bottom(porker);
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    POJ3889Fractal Streets
    POJ3263 Tallest Cow
    tyvjP1288 飘飘乎居士取能量块
    洛谷P3369 【模板】普通平衡树(Treap/SBT)
    洛谷P1063 能量项链 [2006NOIP提高组]
    洛谷P1541 乌龟棋 [2010NOIP提高组]
    POJ3322 Bloxorz I
    BZOJ1218:[HNOI2003]激光炸弹
    TyvjP1266 费解的开关
    洛谷P3070 [USACO13JAN]岛游记Island Travels
  • 原文地址:https://www.cnblogs.com/ttss/p/4060957.html
Copyright © 2020-2023  润新知