c语言用指针洗牌发牌,看了20天的新手写的斗地主洗牌发牌程序,求执行,没界面...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

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

{

p[i]=rand1();

}

} void paixu(int *p,int n)

{

int i,j,temp;

for(i=0;i

{

for(j=i+1;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

p[i]=i+1; //初始化牌数组内的牌点数,即对应数组下标

xipai(p);

for(i=0;i

abc[i]=p+PAI/REN*i;

for(j=0;j

{

printf("\nabc[%d]:\n",j);

paixu(abc[j],PAI/REN);

for(k=0;k

{

printf("%c ",pipei(abc[j][k]));

}

} free(p) ;

End();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值