#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 54
#define RANDOM_COUNT 100
#define CARD 18
void input_name(char *name,int n);//输入玩家姓名
void remind();//提醒
void circulate(int *a,int n);//初始化数组循环
void random(int *a,int n,int count);//对数组a中的n个元素进行count次随机
void allocation(int *start,int *end,int n);//将start数组中的n个元素分配给end数组
void show(char *name,int *card,int n);
int main()
{
char s;//决定是否循环
int play_card_total[54]={0};
int play_card_a[CARD]={0};
int play_card_b[CARD]={0};
int play_card_c[CARD]={0};
char a[]="玩家1",b[]="玩家2",c[]="玩家3";
char *pl_a=a,*pl_b=b,*pl_c=c;
input_name(pl_a,1);
input_name(pl_b,2);
input_name(pl_c,3);
remind();
circulate(play_card_total,NUM);
while(1)
{
random(play_card_total,NUM,RANDOM_COUNT);
allocation(play_card_total,play_card_a,CARD);
allocation(play_card_total+CARD,play_card_b,CARD);
allocation(play_card_total+CARD+CARD,play_card_c,CARD);
show(a,play_card_a,CARD);
show(b,play_card_b,CARD);
show(c,play_card_c,CARD);
printf("重新洗牌(Y/N)?");
s=getchar();//将输入的'\n'释放掉
scanf("%c",&s);
if(s=='N'||s=='n')break;
};
return 0;
}
void input_name(char *name,int n)
{
printf("请输入%d号玩家的姓名:",n);
scanf("%s",name);
}
void remind()
{
printf("方=方片,梅=梅花,红=红桃,黑=黑桃\n");
}
void circulate(int *a,int n)
{
int i;
for(i=0;i<n;i++)*(a+i)=i+1;
}
void random(int *a,int n,int count)
{
time_t t;
srand((unsigned)time(&t));
int i,temp_a,temp_b;
while(n--)
{
for (i=0; i<54;)
{
if((temp_a=*(a+rand()%100))<54)
{
temp_b=*(a+temp_a);
*(a+temp_a)=*(a+i);
*(a+i)=temp_b;
i++;
}
}
}
}
void allocation(int *start,int *end,int n)
{
int i;
for(i=0;i<n;i++)*(end+i)=*(start+i);
}
void show(char *name,int *card,int n)
{
int i;
printf("%s:手上的牌是:",name);
for(i=0;i<n;i++)
{
if(*(card+i)>=01&&*(card+i)<=10)printf("方%-3d",*(card+i));
if(*(card+i)>=11&&*(card+i)<=20)printf("梅%-3d",*(card+i)-10);
if(*(card+i)>=21&&*(card+i)<=30)printf("红%-3d",*(card+i)-20);
if(*(card+i)>=31&&*(card+i)<=40)printf("黑%-3d",*(card+i)-30);
switch(*(card+i))
{
case 41:printf("方J ");continue;
case 42:printf("方Q ");continue;
case 43:printf("方K ");continue;
case 44:printf("红j ");continue;
case 45:printf("红Q ");continue;
case 46:printf("红K ");continue;
case 47:printf("梅J ");continue;
case 48:printf("梅Q ");continue;
case 49:printf("梅K ");continue;
case 50:printf("黑J ");continue;
case 51:printf("黑Q ");continue;
case 52:printf("黑K ");continue;
case 53:printf("小王 ");continue;
case 54:printf("大王 ");continue;
}
}
printf("\n");
}