使用C语言写一个随机发牌的程序。用户指定发几张牌,程序打印手牌。
时间: 2024-04-10 07:33:05 浏览: 196
好的,下面是一个使用C语言编写的随机发牌程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义牌的花色和点数
const char *suits[] = {"♠", "♥", "♣", "♦"};
const char *ranks[] = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
// 定义一副扑克牌
const int numSuits = 4;
const int numRanks = 13;
const int numCards = 52;
int main() {
srand(time(NULL)); // 初始化随机数生成器
int numCardsToDeal; // 用户指定要发的牌数
printf("请输入要发的牌数:");
scanf("%d", &numCardsToDeal);
if (numCardsToDeal > numCards) {
printf("牌数超过了一副扑克牌的数量!\n");
return 1;
}
int dealt[numCards]; // 记录已经发过的牌,防止重复发牌
int numDealt = 0; // 已经发过的牌数
printf("发牌结果:\n");
while (numDealt < numCardsToDeal) {
int card = rand() % numCards; // 随机生成一张牌
// 检查该牌是否已经发过
int isDealt = 0;
for (int i = 0; i < numDealt; i++) {
if (dealt[i] == card) {
isDealt = 1;
break;
}
}
if (!isDealt) {
// 打印该牌
printf("%s%s ", suits[card / numRanks], ranks[card % numRanks]);
dealt[numDealt] = card;
numDealt++;
}
}
printf("\n");
return 0;
}
```
这个程序使用了随机数生成器来模拟洗牌和发牌的过程。用户可以指定要发的牌数,然后程序会打印相应数量的随机牌。注意,牌的花色使用了Unicode字符来表示。
请注意,这只是一个简单的示例程序,可能并没有考虑到所有的错误处理和边界情况。在实际应用中,你可能需要进一步完善程序。
阅读全文