请用c语言实现 通过洗牌 打乱扑克牌,并分发给两个人 要求:最大牌数字为13 最小为1 每个数字必须出现四次
时间: 2024-04-12 20:27:56 浏览: 132
下面是一个使用C语言实现洗牌、打乱扑克牌并分发给两个人的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int cards[], int n) {
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1);
int temp = cards[i];
cards[i] = cards[j];
cards[j] = temp;
}
}
int main() {
int cards[52];
int player1[26];
int player2[26];
// 初始化扑克牌
for (int i = 0; i < 13; i++) {
for (int j = 0; j < 4; j++) {
cards[i * 4 + j] = i + 1;
}
}
// 设置随机种子
srand(time(NULL));
// 洗牌
shuffle(cards, 52);
// 分发给两个人
for (int i = 0; i < 26; i++) {
player1[i] = cards[i];
player2[i] = cards[i + 26];
}
// 输出结果
printf("Player 1: ");
for (int i = 0; i < 26; i++) {
printf("%d ", player1[i]);
}
printf("\n");
printf("Player 2: ");
for (int i = 0; i < 26; i++) {
printf("%d ", player2[i]);
}
printf("\n");
return 0;
}
```
这段代码首先使用嵌套循环初始化了包含52张扑克牌的数组 `cards`,每个数字都出现了四次。然后使用 `shuffle()` 函数将扑克牌数组进行洗牌。接下来,将洗好的牌平均分给两个人,每人26张牌。最后,通过循环输出两个人手中的牌的内容。
同样地,为了保证每次运行程序时得到不同的结果,我们在 `srand()` 函数中使用 `time(NULL)` 来设置随机数种子。这样可以根据系统时间产生一个不同的种子,从而生成不同的随机数序列。
请注意,这里的代码实现只是一个简单的示例,并没有考虑到牌的花色。如果需要考虑花色,您可以在初始化扑克牌数组时使用一个包含花色信息的结构体数组来表示每张牌。
阅读全文