江海强
07092007
数据结构作业报告
斗地主洗牌发牌报告姓名:江海强班级:070921班学号:07092007上机时间:201099报告时间:2010913
摘要
1实验目的
编斗地主洗发牌的程序可以让我们了解随机数的生成全局变量和指针的用法,熟悉线性表的基本操作,以及排序的基本思路和方法。
2实验方法
本程序主要是利用全局变量来统筹整个程序,辅之的是指针变量。总共有三个子函数,分别为洗牌子函数,排序子函数,发牌子函数。洗牌这个子函数利用了随机数的生成,而主函数通过指针变量把生成的随机数赋值给全局变量,再通过冒泡排序法对全局变量进行排序,最后按编号换算进行输出。
3实验结果
由运行出来的结果可以看出,此洗牌发牌符合斗地主的规则,是合法的。随机发的牌没有重复,没有遗漏,且按照斗地主的牌的大小进行排列,即从小到大分别为:345678910JQKA2,小鬼,大鬼。所以此程序是正确的,成功的。
1
f江海强
07092007
内容
一.问题重述
设计一个程序生成一副总共54张的牌,来给三个玩家发牌,发给每位玩家17张牌,剩下三张作为底牌。每次发出的牌都不一样,而且按从小到大的顺序显示每个玩家拿到的牌和底牌。
二.算法描述
本程序除了运用一些条件语句,判断语句之外,主要运用了两个算法,一个是随机数的生成,一个是冒泡排序法。随机数的生成的复杂度为ON,其中N54,这是在运行结果最佳的状况下才会出现的,一旦生成的随机数相同的话,通过if语句会重新生成随机数,直到生成不同的随机数。冒泡排序法的空间复杂度为O1,时间复杂度为ON2,本程序中的N为54,而且运行了两次冒泡排序法,分别为牌数和花色进行排序,所以空间复杂度为2×O1,时间复杂度为2×O542。开始利用sra
dtime0ra
d来随机生成54个不同的数把随机生成的1到54的数赋值给a17b17c17d3这四个全局变量的数组中运用for语句和if语句对1到54的数进行变换,变换成3到17运用冒泡排序法对数组中的随机数进行排序,第一次运用解决牌数排序问题,第二次运用解决花色排序问题
结束输出结果
运用switch语句对已经排好序的1到54进行换算,
2
f江海强
07092007
三.变量说明
a17b17c17d3为全局变量的数组,分别存放玩家一,二,三的牌,以及三个底牌。
四.函数与思路说明
本程序总共有3个子函数,1个主函数,其中3个子函数分别为Xipai子函数,Paxu子函数,Fapai子函数。Xipai这个子函数利用了sra
dtime0ra
d来生成随机数1到54。当然,为了使生r