一副扑克有52张牌,打桥牌时应将牌分给四个人,用C语言编写一个程序,完成自动发牌的工作。要求黑桃用S表示,红桃用H表示,方块用D表示,梅花用C表示。
时间: 2023-06-26 21:07:31 浏览: 177
C语言编写的扑克牌发牌程序
4星 · 用户满意度95%
以下是一个简单的自动发牌程序,可以参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
char suits[] = {'S', 'H', 'D', 'C'};
char ranks[] = {'2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A'};
int deck[52];
int i, j, k;
char card[3];
// 初始化牌堆
for (i = 0; i < 52; i++) {
deck[i] = i;
}
// 洗牌
srand(time(NULL));
for (i = 51; i > 0; i--) {
j = rand() % (i + 1);
k = deck[i];
deck[i] = deck[j];
deck[j] = k;
}
// 发牌
for (i = 0; i < 4; i++) {
printf("Player %d: ", i+1);
for (j = 0; j < 13; j++) {
k = deck[i*13+j];
card[0] = suits[k/13];
card[1] = ranks[k%13];
card[2] = '\0';
printf("%s ", card);
}
printf("\n");
}
return 0;
}
```
程序的核心是一个长度为52的整型数组 `deck`,表示牌堆中每张牌的编号,编号从0到51,对应着扑克牌的顺序。牌的花色和点数分别用两个字符表示,存储在字符数组 `card` 中。发牌时,我们只需要将牌堆中的编号转换成花色和点数即可。
程序先将牌堆初始化,然后使用随机数对牌堆进行洗牌。最后,按照每个玩家13张牌的顺序,依次输出每个玩家的牌。
阅读全文