C语言实现扑克牌洗牌与发牌程序
"这是一个使用C语言编写的简单扑克牌洗牌和发牌程序,通过堆栈数据结构实现,包括洗牌函数和显示扑克牌值的函数。" 在计算机编程中,模拟扑克牌游戏是一个常见的练习,它涉及到随机数生成、数组操作以及数据结构的运用。在这个程序中,开发者使用了C语言,一个基础且广泛使用的编程语言,来创建了一个简单的扑克牌洗牌和发牌系统。 首先,程序定义了一个大小为54(包括大王和小王)的堆栈`stack`,并使用两个指针`tos`(top of stack,堆栈顶部)和`p1`来追踪堆栈的状态。`push`函数用于将元素压入堆栈,而`pop`函数用于从堆栈中弹出元素。当堆栈为空或满时,程序会给出相应的错误提示并终止运行。 接下来是`xipai`函数,实现了扑克牌的洗牌操作。该函数通过生成随机数来重新排列52张扑克牌。使用`srand(time(0))`初始化随机数生成器,确保每次程序运行时都能得到不同的序列。接着,使用两个嵌套循环遍历4个花色和13个数字,生成随机的花色和数字组合,如果当前的牌未被洗过(即在b[][]二维数组中对应的值为0),则将其压入堆栈,并在b[][]中做标记,表示该牌已被洗过。这个过程不断重复,直到所有52张牌都被洗过。 最后,`showpai`函数用于显示扑克牌的值。这个函数根据输入的整数(表示扑克牌的花色和数字)来输出对应的牌面,如"A"代表 Ace,"J"代表 Jack,"Q"代表 Queen,"K"代表 King。注意,这个函数考虑了红桃(Heart)、黑桃(Spade)、梅花(Club)和方块(Diamond)四种花色,但没有在代码中直接体现,这可能意味着花色信息是通过整数的前两位来编码的。 这个程序通过堆栈操作实现了扑克牌的洗牌和发牌功能,其中洗牌部分采用了随机化策略,确保每次洗牌的结果都是不可预测的,符合实际扑克牌游戏的规则。虽然这个程序相对简单,但它展示了如何使用基本的数据结构和算法来解决实际问题,对于初学者来说是一个很好的学习实例。
2014-11-18
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define size 54 //大于52即可
#define num 52
int *tos,*p1,stack[size];
void push(int i){ //使用堆栈,入栈函数
p1++;
if(p1==(tos+size)){
printf("堆栈已满\n");
system("pause");
exit(1);
}
*p1=i;
}
int pop(void){ //出栈函数
if(p1==tos){
printf("堆栈空");
system("pause");
exit(1);
}
p1--;
return *(p1+1);
}
void xipai(int a[][13]){ //洗牌程序
int i,j,k=0;
int b[4][13];
for(i=0;i<4;i++)
for(j=0;j<13;j++)
b[i][j]=0;
srand(time(0)); //设置随机数种子保证每次生成的序列都是不一样的 (必须设置为0)
while(k<52){
i=rand()%4;
j=rand()%13;
if(b[i][j]==0)
{push(a[i][j]);
k++;
b[i][j]=i*100+j+1;}
}
}
void showpai(int t){ //显示函数(将数组中的数字转换成有意义的牌打印出来)
if(t/100==0)
{if(t%100==1)
printf("红A ");
else if(t%100>1&&t%100<11)
printf("红%d ",t%100);
else if(t%100==11)
printf("红J ");
else if(t%100==12)
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦