一副牌共52张牌,有四种花色,从大到小依次为:黑桃、 红桃、 方块、草花;每一种花色有十三张牌,顺序如下:A(最大)、K、Q、J、10、9、8、7、6、5、4、3、2(最小)。用C语言编写程序,实现将一副牌随机分发到4个玩家手中,按花色及牌点大小整理为有序并输出。
时间: 2023-08-08 15:10:07 浏览: 59
好的,以下是用 C 语言编写的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define CARD_NUM 52
#define SUIT_NUM 4
#define RANK_NUM 13
char suits[SUIT_NUM][3] = {"黑桃", "红桃", "方块", "草花"};
char ranks[RANK_NUM][3] = {"A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2"};
struct card {
char *suit;
char *rank;
};
void shuffle(struct card deck[]) {
int i, j;
struct card temp;
for (i = CARD_NUM - 1; i > 0; i--) {
j = rand() % (i + 1);
temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
}
void sort_cards(struct card player[], int size) {
int i, j, min_index;
struct card temp;
for (i = 0; i < size - 1; i++) {
min_index = i;
for (j = i + 1; j < size; j++) {
if (strcmp(player[j].suit, player[min_index].suit) < 0 ||
(strcmp(player[j].suit, player[min_index].suit) == 0 &&
strcmp(player[j].rank, player[min_index].rank) < 0)) {
min_index = j;
}
}
if (min_index != i) {
temp = player[i];
player[i] = player[min_index];
player[min_index] = temp;
}
}
}
int main() {
srand(time(NULL));
struct card deck[CARD_NUM];
int i, j, k;
for (i = 0; i < SUIT_NUM; i++) {
for (j = 0; j < RANK_NUM; j++) {
deck[i * RANK_NUM + j].suit = suits[i];
deck[i * RANK_NUM + j].rank = ranks[j];
}
}
shuffle(deck);
struct card players[4][CARD_NUM / 4];
for (i = 0; i < CARD_NUM; i++) {
players[i % 4][i / 4] = deck[i];
}
for (i = 0; i < 4; i++) {
sort_cards(players[i], CARD_NUM / 4);
printf("玩家%d的牌为:", i + 1);
for (j = 0; j < CARD_NUM / 4; j++) {
printf("%s%s ", players[i][j].suit, players[i][j].rank);
}
printf("\n");
}
return 0;
}
```
这段代码定义了一个 `card` 结构体来表示一张牌,包括花色和牌点大小。首先初始化一副牌,然后随机洗牌。接着,将牌分发给四个玩家,其中第 `i` 个玩家的牌为牌堆中每第 `4` 个牌。最后,对每个玩家的牌进行排序,首先按照花色排序,然后按照牌点大小排序。输出每个玩家的有序牌。
注意,为了方便比较,我们在结构体中使用指针来存储花色和牌点大小,并使用 `strcmp` 函数进行比较。同时,在排序函数中也要特别注意比较的顺序。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)