斗地主 c语言洗牌函数代码
时间: 2023-08-12 16:30:10 浏览: 66
以下是一个简单的斗地主洗牌函数代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int* deck, int n) {
srand(time(NULL)); // 设置随机数种子
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1);
int temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
}
int main() {
int deck[54];
for (int i = 0; i < 54; i++) {
deck[i] = i + 1;
}
shuffle(deck, 54);
for (int i = 0; i < 54; i++) {
printf("%d ", deck[i]);
}
return 0;
}
```
该函数接受一个整型数组和数组长度作为参数,使用随机数生成器打乱数组元素的顺序。在代码示例中,我们使用了 `srand()` 函数设定随机数生成器的种子,以保证每次运行程序时都能得到不同的随机数序列。最后,我们将洗牌后的数组输出到屏幕上。
相关问题
斗地主 C语言洗牌函数代码
以下是一个简单的斗地主洗牌函数代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int* deck, int n) {
srand(time(NULL)); // 设置随机数种子
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1);
int temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
}
int main() {
int deck[54];
for (int i = 0; i < 54; i++) {
deck[i] = i + 1;
}
shuffle(deck, 54);
for (int i = 0; i < 54; i++) {
printf("%d ", deck[i]);
}
return 0;
}
```
该函数接受一个整型数组和数组长度作为参数,使用随机数生成器打乱数组元素的顺序。在代码示例中,我们使用了 `srand()` 函数设定随机数生成器的种子,以保证每次运行程序时都能得到不同的随机数序列。最后,我们将洗牌后的数组输出到屏幕上。
C语言斗地主出牌源代码
以下是一个简单的C语言版斗地主出牌示例代码,包括发牌和出牌的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CARD_NUM 54
#define PLAYER_NUM 3
#define HAND_CARD_NUM 17
void shuffle(int* cards, int n)
{
srand(time(NULL));
for (int i = n - 1; i > 0; --i) {
int j = rand() % (i + 1);
int temp = cards[i];
cards[i] = cards[j];
cards[j] = temp;
}
}
void sort(int* cards, int n)
{
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - 1 - i; ++j) {
if (cards[j] > cards[j + 1]) {
int temp = cards[j];
cards[j] = cards[j + 1];
cards[j + 1] = temp;
}
}
}
}
void deal(int* cards, int n, int players[][HAND_CARD_NUM])
{
for (int i = 0; i < PLAYER_NUM; ++i) {
for (int j = 0; j < HAND_CARD_NUM; ++j) {
players[i][j] = cards[i * HAND_CARD_NUM + j];
}
}
}
void playCard(int* hand, int* card, int num)
{
for (int i = 0; i < num; i++) {
for (int j = 0; j < HAND_CARD_NUM; j++) {
if (hand[j] == card[i]) {
hand[j] = 0; // 将出的牌从手牌中移除
break;
}
}
}
}
void printCards(int* cards, int n)
{
for (int i = 0; i < n; ++i) {
printf("%d ", cards[i]);
}
printf("\n");
}
void printHand(int* hand)
{
printf("当前手牌:");
for (int i = 0; i < HAND_CARD_NUM; ++i) {
if (hand[i] != 0) {
printf("%d ", hand[i]);
}
}
printf("\n");
}
int main()
{
int cards[CARD_NUM];
int players[PLAYER_NUM][HAND_CARD_NUM];
// 初始化扑克牌
for (int i = 0; i < CARD_NUM; ++i) {
***