用c语言写一个洗牌发牌程序
时间: 2023-11-12 16:03:50 浏览: 81
以下是一个简单的洗牌发牌程序的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_CARDS 52
#define NUM_PLAYERS 4
#define HAND_SIZE 5
int main() {
int deck[NUM_CARDS];
int players[NUM_PLAYERS][HAND_SIZE];
int i, j, k;
// Initialize deck
for (i = 0; i < NUM_CARDS; i++) {
deck[i] = i;
}
// Shuffle deck
srand(time(NULL));
for (i = NUM_CARDS - 1; i > 0; i--) {
j = rand() % (i + 1);
int temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
// Deal cards to players
k = 0;
for (i = 0; i < HAND_SIZE; i++) {
for (j = 0; j < NUM_PLAYERS; j++) {
players[j][i] = deck[k];
k++;
}
}
// Print hands
for (i = 0; i < NUM_PLAYERS; i++) {
printf("Player %d's hand:\n", i + 1);
for (j = 0; j < HAND_SIZE; j++) {
int card = players[i][j];
int rank = card % 13;
int suit = card / 13;
char* ranks[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
char* suits[] = {"Clubs", "Diamonds", "Hearts", "Spades"};
printf("%s of %s\n", ranks[rank], suits[suit]);
}
printf("\n");
}
return 0;
}
```
该程序使用一个大小为52的整数数组来表示一副扑克牌,其中每张牌都有一个唯一的整数值。洗牌是通过随机交换数组中的元素来实现的。然后,程序依次将牌发到四个玩家的手中,每个玩家手中有五张牌。最后,程序打印出每个玩家手中的牌。
阅读全文