下面是一个使用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