注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

长风明志的博客

不要也不能做下一个谁,应该且可以做第一个自己

 
 
 

日志

 
 

简单模拟洗牌发牌过程  

2012-02-28 20:32:16|  分类: C/C++编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 
n一付扑克有52张牌,分为4种花色(Suit)
黑桃(Spades)、红桃(Hearts)、草花(Clubs)、方块(Diamonds)
n每种花色有13张牌面(Face)
A2345678910JackQueenKing
n设计一个结构体表示一张牌,由两个成分组成:花色、牌面:
  struct CARD
  {
   char suit[10];
   char face[10];
  };
  struct CARD card[52];     /*顺序存放扑克牌*/
  int    result[52];     /*存放洗牌发牌结果*/
  char *suit[] = {"Spades","Hearts","Clubs","Diamonds"};
  char *face[] = {"A","2","3","4","5","6","7","8","9",
                  "10","jack","Queen","King"};  
 
n用结构体数组做函数参数
/* 函数功能:将52张牌按黑桃、红桃、草花、方块花色顺序,面值按A~K顺序排列
函数参数:结构体数组wCard[],表示不同花色和面值的52张牌
    指针变量wFace,表示指向面值字符串数组face[]的指针
    指针变量wSuit,表示指向花色字符串数组suit[]的指针
函数返回值:无
*/
void  FillCard(struct CARD wCard[],char *wFace[],char *wSuit[])
{
int i;
for (i=0; i<52; i++)
{
strcpy(wCard[i].suit, wSuit[i/13]);
strcpy(wCard[i].face, wFace[i%13]);
}
}
 
n用结构体指针做函数参数
/* 函数功能:将52张牌的顺序打乱,
函数参数:结构体数组变量wCard[],表示52张牌
函数返回值:无
*/
void Shuffle(struct CARD *wCard)
{
int    i,j;
struct card temp;
for (i=0; i<52; i++)
{
j = rand()%52;          /*j = random(52);TC的库函数*/
temp = wCard[i];
wCard[i] = wCard[j];
wCard[j] = temp; /* 洗牌过程 */
}
}
 
n用结构体指针做函数参数
/*函数功能:输出发牌结果
函数参数:结构体数组变量wCard[],表示有52张牌
函数返回值:无
*/
void Deal(struct CARD *wCard)
{
int i;
for (i=0; i<52; i++) /*输出发牌结果*/
printf("%10s%10s\n", wCard[i].suit,
            wCard[i].face);
}
 
 
  评论这张
 
阅读(1195)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017