c语言编程 自动发牌程序

2025-06-20 14:33:17
推荐回答(1个)
回答1:

#include 
#include 
#include 

typedef struct
{
int num;      // A:1 , J:11 , Q:12 , K:13
int color;    //黑1,红2,梅3,方4
}POKER;

void build(POKER* s)   //生成扑克函数 
{
int i,count=0,num,color;
while(count<52)
{
num=rand()%13+1;
color=rand()%4+1;
int flag_skip=0,flag_end=0;
for(i=0;i<52;i++)
{
if(s[i].num==num && s[i].color==color)
{
flag_skip=1;
break;
}
}
if(flag_skip==1)
{
continue;
}
while(1)
{
i=rand()%52;
if(s[i].num==0)
{
s[i].num=num;
s[i].color=color;
count++;
break;
}
else
{
continue;
}
}
}
}

void prt(POKER* s)    //打印函数 
{
int i;
for(i=0;i<52;i++)
{
if(i%13==0)
{
printf("\n玩家%d : ",i/13+1);
}
switch(s[i].num)
{
case 1: putchar('A');break;
case 11: putchar('J');break;
case 12: putchar('Q');break;
case 13: putchar('K');break;
default: printf("%d",s[i].num);
}
switch(s[i].color)
{
case 1: putchar(6);break;
case 2: putchar(3);break;
case 3: putchar(5);break;
case 4: putchar(4);break;
default: printf(" ");
}
printf(" ");
}
}

int main()
{
POKER s[52];    //定义结构体数组变量
memset(s,0,sizeof(POKER)*52); //初始化数组 
srand((unsigned)time(0));  //随机种子初始化 
build(s);  //随机生成扑克 
prt(s);    //打印 
return 0;
}