资源描述:
《C语言实现斗地主发牌程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验四、斗地主发牌程序的实现一、实验目的1.了解线性表的顺序存储与基本操作;2.了解线性表的链接存储与基本操作;二、实验工具VC6.0三、实验练习和要求3.1实验内容:1)考虑好纸牌的存储结构,定义好纸牌大小的比较规则;2)分别建立顺序线性表和链接线性表,可以进行定位删除,可以进行保序插入,可以进行顺序输出……;3)利用上述线性表类,构造若干个线性表的实例,构造一个含有全部纸牌的线性表,从中随机抽取……随机发给三家(每家17张),并保留底牌3张;4)按大小顺序分别输出各家的牌和底牌。3.2实验要求:1)
2、利用♣♦♥♠王显示每家发得的牌和底牌(ASCII:5436);2)每家的牌要求有序排列(数字中3最小,2最大,不同的花色按♣,♦,♥,♠,王渐大处理);3)所发的牌是随机的;4)顺序线性表和链接线性表都要用到。3.3实验难点:1)如何存储一张牌;2)如何比较牌的大小(JQKA2);3)如何实现顺序表与链接表的无差别性?3.4实现提示1)54张牌可以用整数:0--53来表示,也可以用两个独立的整数来表示;2)用利用C语言的RAND()函数来产生随机数;3)牌的大小比较规则,除王比较大外,一般的牌先
3、比较点儿数,再比较花色;4)建议用保序插入,而不要使用最后排序。3.5注意事项1)顺序表和链接表的操作接口要尽量一致;2)JQKA2中的10占两位?3)大王与小王的特殊处理。3.6本次实验可以三人构成学习小组,上交一份作业,并给出每一个人贡献分数。四、实验内容本次实验分别使用顺序表和单链表实现,三人手中的牌都已经按照大小以及花色从小到大排序。代码如下:Ø顺序表实现随机发牌#include#include#include#include4、h>#defineMaxSize100typedefintdataType;typedefstruct{dataTypedata[MaxSize];intsize;}SqList;SqList*CreateList(dataTypea[],intn){SqList*t=(SqList*)malloc(sizeof(SqList));for(inti=0;idata[i]=a[i];t->size=n;returnt;}SqList*CreateListemp(){SqList*t=(
5、SqList*)malloc(sizeof(SqList));t->size=0;returnt;}voidExchange(SqList*l,inti,intj){inttemp;temp=l->data[i];l->data[i]=l->data[j];l->data[j]=temp;}intMin(SqList*l){intmin=l->data[0];for(inti=1;isize;i++){if(l->data[i]data[i];}returnmin;}vo
6、idDelete(SqList*l,intk){if(k<1
7、
8、k>l->size)exit(1);for(inti=k;isize;i++)l->data[i-1]=l->data[i];l->size--;}intLocate(SqList*l,dataTypex){for(inti=0;isize;i++)if(l->data[i]==x)returni+1;return0;}voidPrint(SqList*l){for(inti=0;isize;i++)printf("
9、%d",l->data[i]);}SqList*Sort(SqList*pa){SqList*pb=CreateListemp();intM;for(inti=0;i<17;i++){M=Min(pa);pb->data[i]=M;Delete(pa,Locate(pa,M));pb->size++;}returnpb;}intmain(){inta[54],i,j,N;intone[17];inttwo[17];intthree[17];intcover[3];char*poker[]={"梅花3",
10、"方块3","红桃3","黑桃3","梅花4","方块4","红桃4","黑桃4","梅花5","方块5","红桃5","黑桃5","梅花6","方块6","红桃6","黑桃6","梅花7","方块7","红桃7","黑桃7","梅花8","方块8","红桃8","黑桃8","梅花9","方块9","红桃9","黑桃9","梅花10","方块10","红桃10","黑桃10","梅花J","方块J","红桃J","黑桃J","梅花Q","方