版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构上机作业 内容:问题重述:设计一个四个人玩的纸牌游戏的程序,一共有五十四张牌,要发给四个人,并且每次发出的牌都不一样。并且符合纸牌的规则(可以是桥牌、升级、红四、斗地主等,但是必须说明规则)。并且程序能按照设定的游戏规则从小到大进行排序,如果有底牌的话要说明底牌的情况。最后要验证每次发牌是否合法。该程序纸牌的玩法:在一副牌中,去除大小王,然后2最大其次是a,然后按顺序从大到小一次减小。所用到的具体算法:冒泡法, 线性表删除元素操作;具体做法为:先将一副扑克牌中的大小王拿掉,还会剩下52张牌,在进行随机的洗牌,将所有的排顺序打乱,然后在打乱后一定的顺序情况下,按照规则平均分发给四个人,每
2、人会得到十三张牌,最后将每人手里的牌按照3、4、5、6、7、8、9、10、j、q、k、a、2的顺序进行排列,在排列过程中会出现花色的前后顺序排列。再将四个人手里的拍验证,检验是否每张牌是否都出现并且只出现一次。如果出现并且只出现一次,说明程序成功,否则程序失败,则需要重新进行程序的检验,修改。流程图大致情况:设计的结构体变量说明:char cardcolor是存储花色的变量 char cardnumber2是存储扑克牌的面值变量 int flag;/判断标志struct pukepai card52用char类型存储52张扑克牌int card52用int类型形式并且,我们在一开始定义每张牌的
3、变量每张牌现在我们给予赋值,例如108代表方块8,212代表红桃q,其中三位数中第一为代表花色:1代表方块,2代表红桃,3代表梅花,4代表黑桃。01代表a,02代表2,依次类推,11代表j,12代表q,13代表k。具体的函数说明均在程序中标注,不再重复说明。程序执行结果为:1. 2. 3. 结论:通过以上多次程序运行,满足了多次结果不相同,并保证每次都会有所有的排出现且仅出现一次。遇到的问题 :对一些代码的含义不太清楚,用起来不太熟练。解决方法是,通过学习书上的知识,了解代码含义,多训练慢慢熟练。附录 运行程序为:#include#include#include#include/*/这是一个模
4、仿五十k的发牌游戏/定义一个结构体,然后定义一个该结构体的数组card52(大写的),存储扑克牌(这个存储的是字符串)/定义一个int类型的card52(小写的),来表示扑克牌,比如105,1代表花色(方块),05代表面值5/再比如313,就是梅花k,401就是黑桃a (ascii表中3,4,5,6分别表示红桃,方块,梅花,黑桃。将他们减去2就代表百位的数值)/再说一下排序,就是设置一个标志位,标识牌的面值的大小3-0 , 4-1 , 5-2 ,., j-8 , q-9 , k-10 , a-11 , 2-12/然后就是card52排序,再转换一下到结构体数组card52就行了./*/定义结构
5、体,存储扑克牌struct pukepaichar cardcolor;/存储花色char cardnumber2;/存储扑克牌的面值int flag;/判断标志,如果按照card52排序,那么牌由小到大就是:a,2,3,4,5,6,7,8,9,10,j,q,k /而我们需要由小到大排序是:3,4,5,6,7,8,9,10,j,q,k,a,2;struct pukepai card52;/用char类型存储52张扑克牌int card52;/用int类型形式/*/洗牌函数:将牌打乱void xipai()int i,j,k,temp;srand(time(0);for( i=0;i4;i+)f
6、or(j=0;j13;j+) cardi*13+j=(i+1)*100+j+1; /printf(how many times for card:); /scanf(%d,&count); /for(j=1;j=count;j+)/洗牌 for(i=0;icard52,将牌的存储由int类型转换为char类型void zhuanhuan()int i,temp; /将数字转换为牌for(i=0;i52;i+)cardi.cardcolor=cardi/100+2;temp=cardi%100;if(temp=1)cardi.cardnumber0=a;cardi.cardnumber1=0;c
7、ontinue;if(temp=10)cardi.cardnumber0=1;cardi.cardnumber1=0;continue;if(temp=11)cardi.cardnumber0=j;cardi.cardnumber1=0;continue;if(temp=12)cardi.cardnumber0=q;cardi.cardnumber1=0;continue;if(temp=13)cardi.cardnumber0=k;cardi.cardnumber1=0;continue;cardi.cardnumber0=temp+48;cardi.cardnumber1=0;/设置标志位
8、,用来判断牌的面值大小for(i=0;i52;i+)cardi.cardcolor=cardi/100+2;temp=cardi%100;/一律将面值减3作为标志位cardi.flag=temp-3;/如果是a或者是2,那么标志加上13if(temp=1|temp=2)cardi.flag+=13; /*/排序:对char52进行排序(不管花色,只看牌的面值)void paixu()int i,j,k;struct pukepai temp;for(i=0;i4;i+)for(j=0;j13;j+)for(k=0;kcardi*13+k+1.flag)temp=cardi*13+k;cardi
9、*13+k=cardi*13+k+1;cardi*13+k+1=temp;/输出函数:输出四个玩家的扑克牌void output()int i;for(i=0;i52;i+)if(i%13=0)printf(第%d个玩家的牌为:,i/13+1);printf(%c%c%c ,cardi.cardcolor,cardi.cardnumber0,cardi.cardnumber1);if(i%13=12)printf(n);printf(n);/验证函数:验证是否有重复的牌void yanzheng()int flag=0;int i,j;for(i=0;i52;i+)for(j=0;j52;j+)if(i!=j)/如果有重复的牌,那么就让flag=1if(cardi=car
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机器人关节课程设计
- 机关公文培训课程设计
- 2024年信息科技产品交易合同
- 佳木斯大学《幼儿园级管理》2021-2022学年第一学期期末试卷
- 港口投资合同(2篇)
- 2024年全新版合同管理制度规范
- 佳木斯大学《生态景观规划》2021-2022学年第一学期期末试卷
- 2024年企业网站设计与维护合同
- 公路改建拓宽施工合同模板
- 个人房屋借贷合同模板
- 安能代理合同
- 2024年公安机关接处警工作规范
- 皮带机维护与管理策略收藏
- 大型活动策划方案流程
- 2024届新结构“8+3+3”选填限时训练11~20(学生版)
- 2024年特种设备作业人员技能考试-场(厂)内专用机动车辆作业笔试历年真题荟萃含答案
- 人教版九年级上册 第五单元 化学方程式(复习)(教学设计)
- 2023.秋期版国开电大专科《人力资源管理》机考问答题库(珍藏版)
- Unit4-Hows-the-weather-today-说课(课件)人教精通版英语四年级上册
- 大学新生心理压力与情绪管理策略与心理调整与发展计划
- 四川省雅安市2023-2024学年八年级上学期期末考试语文试题(含答案)
评论
0/150
提交评论