使用C语言模拟发牌的案例代码

下面是一个使用C语言模拟发牌的示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct Card {
    char suit;  // 花色
    int number; // 点数
} Card;

void shuffle(Card *deck, int size) {
    srand(time(NULL));
    for (int i = 0; i < size; i++) {
        int j = rand() % size;
        Card temp = deck[i];
        deck[i] = deck[j];
        deck[j] = temp;
    }
}

void printDeck(Card *deck, int size) {
    for (int i = 0; i < size; i++) {
        printf("%c%d ", deck[i].suit, deck[i].number);
    }
    printf("\n");
}

int main() {
    Card deck[52];

    // 初始化牌组
    int index = 0;
    char suits[] = {'S', 'H', 'D', 'C'}; // 黑桃、红桃、方块、梅花
    for (int i = 0; i < 4; i++) {
        for (int j = 1; j <= 13; j++) {
            deck[index].suit = suits[i];
            deck[index].number = j;
            index++;
        }
    }

    shuffle(deck, 52); // 洗牌

    printDeck(deck, 52); // 打印洗好的牌组

    return 0;
}

 

上述代码首先定义了一个`Card`结构体,用于表示一张牌,包含花色和点数两个成员变量。

在`shuffle`函数中,使用`rand`函数生成一个随机数,并将随机数对应的牌与当前牌交换位置,以实现洗牌效果。

在`main`函数中,首先初始化了一个包含52张牌的牌组`deck`。然后调用`shuffle`函数对牌组进行洗牌。最后调用`printDeck`函数打印洗好的牌组。

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享