#include <stdio.h>
#include <stdlib.h>
#include <time.h>
extern int rand1(void);
extern void srand1(int);
extern void End();
extern void xipai(int *p); //洗牌程序
extern void sjsz(int *p,int n); //产生一组n的随即数组,并存储在p【n】数组中
extern void paixu(int *p,int n);
extern char pipei(int num);
static unsigned int next=1;
#define PAI 54
#define REN 3
char pipei(int num)
{
char paidian;
switch(num)
{
case(1):paidian='A';break;
case(2):paidian='A';break;
case(3):paidian='A';break;
case(4):paidian='A';break;
case(5):paidian='2';break;
case(6):paidian='2';break;
case(7):paidian='2';break;
case(8):paidian='2';break;
case(9):paidian='3';break;
case(10):paidian='3';break;
case(11):paidian='3';break;
case(12):paidian='3';break;
case(13):paidian='4';break;
case(14):paidian='4';break;
case(15):paidian='4';break;
case(16):paidian='4';break;
case(17):paidian='5';break;
case(18):paidian='5';break;
case(19):paidian='5';break;
case(20):paidian='5';break;
case(21):paidian='6';break;
case(22):paidian='6';break;
case(23):paidian='6';break;
case(24):paidian='6';break;
case(25):paidian='7';break;
case(26):paidian='7';break;
case(27):paidian='7';break;
case(28):paidian='7';break;
case(29):paidian='8';break;
case(30):paidian='8';break;
case(31):paidian='8';break;
case(32):paidian='8';break;
case(33):paidian='9';break;
case(34):paidian='9';break;
case(35):paidian='9';break;
case(36):paidian='9';break;
case(37):paidian='0';break;
case(38):paidian='0';break;
case(39):paidian='0';break;
case(40):paidian='0';break;
case(41):paidian='J';break;
case(42):paidian='J';break;
case(43):paidian='J';break;
case(44):paidian='J';break;
case(45):paidian='Q';break;
case(46):paidian='Q';break;
case(47):paidian='Q';break;
case(48):paidian='Q';break;
case(49):paidian='K';break;
case(50):paidian='K';break;
case(51):paidian='K';break;
case(52):paidian='K';break;
case(53):paidian='X';break;
case(54):paidian='X';break;
}
return paidian;
} int rand1(void)
{
next=next*1103515245+123456;
return (unsigned int)(next/65536)%32768;
}
void srand1(int seed)
{
next=seed;
} void End(void)
{
fflush(stdin);
printf("\nThis is End!\n");
getchar();
} void xipai(int *p) //洗牌程序
{
int * sui,temp;
int i,j,k,l;
sui=(int *)calloc(100,sizeof(int)); //申请存放随机数的空间
sjsz(sui,100); //产生n个随机数,并放在数组sui中。
for(i=0;i<98;i++) //根据随机数产生的数组下标交换1000次;
{
temp=p[(sui[i])%PAI];
p[(sui[i])%PAI]=p[(sui[i+1])%PAI];
p[(sui[i+1])%PAI]=temp;
}
free(sui);
} void sjsz(int *p,int n) //产生一组n的随机数组,并存储在p【n】数组中,用于洗牌用
{
int i;
srand1((unsigned int)time(0));
for(i=0;i<n;i++)
{
p[i]=rand1();
}
} void paixu(int *p,int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(p[i]>p[j])
{
temp=p[i];p[i]=p[j];p[j]=temp;
}
}
}
} int main(void)
{
int i,j,k;
int * p=(int *)calloc(PAI,sizeof(int)); //请求54张牌的存储空间;
int * abc[REN]; //根据玩家数目请求存放玩家牌的指针数组
for(i=0;i<PAI;i++)
p[i]=i+1; //初始化牌数组内的牌点数,即对应数组下标
xipai(p);
for(i=0;i<REN;i++) //为每个玩家牌的地址赋值指针;
abc[i]=p+PAI/REN*i;
for(j=0;j<REN;j++) //输出每个玩家手里的牌
{
printf("\nabc[%d]:\n",j);
paixu(abc[j],PAI/REN);
for(k=0;k<PAI/REN;k++)
{
printf("%c ",pipei(abc[j][k]));
}
} free(p) ;
End();
}
#include <stdlib.h>
#include <time.h>
extern int rand1(void);
extern void srand1(int);
extern void End();
extern void xipai(int *p); //洗牌程序
extern void sjsz(int *p,int n); //产生一组n的随即数组,并存储在p【n】数组中
extern void paixu(int *p,int n);
extern char pipei(int num);
static unsigned int next=1;
#define PAI 54
#define REN 3
char pipei(int num)
{
char paidian;
switch(num)
{
case(1):paidian='A';break;
case(2):paidian='A';break;
case(3):paidian='A';break;
case(4):paidian='A';break;
case(5):paidian='2';break;
case(6):paidian='2';break;
case(7):paidian='2';break;
case(8):paidian='2';break;
case(9):paidian='3';break;
case(10):paidian='3';break;
case(11):paidian='3';break;
case(12):paidian='3';break;
case(13):paidian='4';break;
case(14):paidian='4';break;
case(15):paidian='4';break;
case(16):paidian='4';break;
case(17):paidian='5';break;
case(18):paidian='5';break;
case(19):paidian='5';break;
case(20):paidian='5';break;
case(21):paidian='6';break;
case(22):paidian='6';break;
case(23):paidian='6';break;
case(24):paidian='6';break;
case(25):paidian='7';break;
case(26):paidian='7';break;
case(27):paidian='7';break;
case(28):paidian='7';break;
case(29):paidian='8';break;
case(30):paidian='8';break;
case(31):paidian='8';break;
case(32):paidian='8';break;
case(33):paidian='9';break;
case(34):paidian='9';break;
case(35):paidian='9';break;
case(36):paidian='9';break;
case(37):paidian='0';break;
case(38):paidian='0';break;
case(39):paidian='0';break;
case(40):paidian='0';break;
case(41):paidian='J';break;
case(42):paidian='J';break;
case(43):paidian='J';break;
case(44):paidian='J';break;
case(45):paidian='Q';break;
case(46):paidian='Q';break;
case(47):paidian='Q';break;
case(48):paidian='Q';break;
case(49):paidian='K';break;
case(50):paidian='K';break;
case(51):paidian='K';break;
case(52):paidian='K';break;
case(53):paidian='X';break;
case(54):paidian='X';break;
}
return paidian;
} int rand1(void)
{
next=next*1103515245+123456;
return (unsigned int)(next/65536)%32768;
}
void srand1(int seed)
{
next=seed;
} void End(void)
{
fflush(stdin);
printf("\nThis is End!\n");
getchar();
} void xipai(int *p) //洗牌程序
{
int * sui,temp;
int i,j,k,l;
sui=(int *)calloc(100,sizeof(int)); //申请存放随机数的空间
sjsz(sui,100); //产生n个随机数,并放在数组sui中。
for(i=0;i<98;i++) //根据随机数产生的数组下标交换1000次;
{
temp=p[(sui[i])%PAI];
p[(sui[i])%PAI]=p[(sui[i+1])%PAI];
p[(sui[i+1])%PAI]=temp;
}
free(sui);
} void sjsz(int *p,int n) //产生一组n的随机数组,并存储在p【n】数组中,用于洗牌用
{
int i;
srand1((unsigned int)time(0));
for(i=0;i<n;i++)
{
p[i]=rand1();
}
} void paixu(int *p,int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(p[i]>p[j])
{
temp=p[i];p[i]=p[j];p[j]=temp;
}
}
}
} int main(void)
{
int i,j,k;
int * p=(int *)calloc(PAI,sizeof(int)); //请求54张牌的存储空间;
int * abc[REN]; //根据玩家数目请求存放玩家牌的指针数组
for(i=0;i<PAI;i++)
p[i]=i+1; //初始化牌数组内的牌点数,即对应数组下标
xipai(p);
for(i=0;i<REN;i++) //为每个玩家牌的地址赋值指针;
abc[i]=p+PAI/REN*i;
for(j=0;j<REN;j++) //输出每个玩家手里的牌
{
printf("\nabc[%d]:\n",j);
paixu(abc[j],PAI/REN);
for(k=0;k<PAI/REN;k++)
{
printf("%c ",pipei(abc[j][k]));
}
} free(p) ;
End();
}