用c++写一个函数实现摸牌功能
时间: 2023-06-01 11:02:40 浏览: 146
摸牌通常是在一张牌堆中随机抽取一张牌,然后将其从牌堆中移除。以下是用C编写的一个简单的函数来实现摸牌功能。
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CARD_NUM 52
// 定义一副牌
int cards[CARD_NUM] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52};
// 摸牌函数
int draw_card() {
int index = rand() % CARD_NUM; // 随机抽取一张牌
int card = cards[index]; // 取出这张牌
int i;
// 将这张牌从牌堆中移除
for (i = index; i < CARD_NUM - 1; i++) {
cards[i] = cards[i+1];
}
CARD_NUM--; // 牌堆中的牌数减一
return card;
}
int main() {
int i;
srand(time(NULL)); // 初始化随机数种子
printf("摸到的牌是:\n");
for (i = 0; i < 5; i++) {
printf("%d ", draw_card());
}
printf("\n");
return 0;
}
```
在这个程序中,我们首先定义了一副牌,使用一个整数数组来表示。然后实现了一个 `draw_card()` 函数来摸牌,它会从牌堆中随机抽取一张牌,然后将这张牌从牌堆中移除,最后返回这张牌的点数。
在主函数中,我们使用 `draw_card()` 函数来摸出五张牌,并将它们打印出来。需要注意的是,我们在使用 `rand()` 函数来生成随机数之前,需要使用 `srand()` 函数来初始化随机数生成器的种子。在这里,我们使用 `time(NULL)` 函数来获取当前时间作为种子。这样可以保证每次程序运行时,随机数的生成都是不同的。
阅读全文