用c语言写一个洗牌发牌程序
时间: 2023-11-12 10:03:50 浏览: 42
由于洗牌和发牌是两个不同的操作,我将分别给出两段代码。
洗牌程序:
```c
#include<stdlib.h>
#include<time.h>
#define DECK_SIZE 52
int main(){
int deck[DECK_SIZE]; // 用一个数组存储一副扑克牌,每个元素代表一张牌的点数
int i, temp, rand_index;
// 初始化牌组
for(i=0; i<DECK_SIZE; i++){
deck[i] = i+1;
}
// 随机交换牌组中的元素,模拟洗牌操作
srand(time(NULL));
for(i=0; i<DECK_SIZE; i++){
rand_index = rand() % DECK_SIZE;
temp = deck[i];
deck[i] = deck[rand_index];
deck[rand_index] = temp;
}
// 输出洗好的牌组
for(i=0; i<DECK_SIZE; i++){
printf("%d ", deck[i]);
}
printf("\n");
return 0;
}
```
发牌程序:
```c
#include<stdio.h>
#define DECK_SIZE 52
#define NUM_PLAYERS 4
#define HAND_SIZE 13
int main(){
int deck[DECK_SIZE];
int hands[NUM_PLAYERS][HAND_SIZE]; // 存储玩家手牌
int i, j, player, card_index = 0;
// 洗牌
// ...
// 发牌
for(i=0; i<HAND_SIZE; i++){ // 发每一张牌
for(player=0; player<NUM_PLAYERS; player++){ // 发给每个玩家
hands[player][i] = deck[card_index];
card_index++;
}
}
// 输出每个玩家的手牌
for(player=0; player<NUM_PLAYERS; player++){
printf("Player %d:\n", player+1);
for(j=0; j<HAND_SIZE; j++){
printf("%d ", hands[player][j]);
}
printf("\n");
}
return 0;
}
```
这两段代码可以合并成一个程序,洗牌部分放在发牌前面即可。