已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目1编写一个能模拟简单猜扑克牌大小游戏的应用程序。该游戏的名称为HILOW,其玩法和规则如下1玩法洗牌每盘游戏开始之前,使扑克牌的排列顺序充分随机。发牌每局开始时,从未使用的扑克牌集合中顺序发给玩家5张扑克牌(明牌)。猜点从未使用的扑克牌集合中按顺序取出一张扑克牌(即庄家的暗牌),要求玩家将手中的第一张扑克牌和这张庄家的暗牌进行比较,确定哪张牌大积分玩家确定回答后,翻开被猜的扑克牌(暗牌变成明牌),同时根据玩家回答的正确与否显示相应的提示,并为玩家的游戏成绩积分。然后将这两张已经比较过的牌回收到已经使用过的扑克牌集合中,玩家手中的下一张扑克牌成为新的一张扑克牌。对玩家手中剩余的扑克牌顺序重复第和步操作,直至玩家手中不再有剩余的扑克牌时,一局游戏结束。如果未使用的扑克牌集合中的扑克牌数目多余10张,则从第步自动开始进行本盘游戏的下一局。询问玩家是否继续进行下一盘游戏,如果继续,则从第步开始进行新的一盘游戏。2规则积分规则猜中1次,积1分;猜错1次,不积分。1局中连续猜中3次,除正常积分外奖励1分;连续猜错3次,罚1分。1局全部猜中,除正常积分外奖励3分;1局全部猜错,罚3分。玩家的最低积分为0,即不出现负分。牌面大小比较规则每张扑克牌的牌面由花色(梅花CLUB、方块DIAMOND、红心HEART和黑桃SPADE)和牌点(A,2,3,4,5,6,7,8,9,10,J,Q,K)组成。确定两张扑克牌牌面大小的规则有两条如果两张牌面的牌点不同,则牌面大小仅与牌点有关,而与牌面的花色无关。牌点的大小顺序为20(连续猜中的次数);连续猜错时,SEQUENCEID时,则返回1。VOIDPRINT/按确定的格式在标准输出设备上输出学生各项信息。输/出格式可以按如下形式/学号XXXXXXXXXX/姓名XXXXX年龄XX性别XX/专业XXXXXXXXXX要求1在类定义体外实现STUDENT类各个成员函数的定义。2定义一个单链表结构的学生信息集合类STUDENTSET,该集合可以按学号顺序插入需要保存所有的学生信息(每个学生的信息保存在STUDENT类对象),可以查询指定的学生信息,可以删除指定的学生信息,可以显示集合中保存的所有学生信息。为此,学生信息集合类STUDENTSET必须具有必要的属性和操作集合链表头指针HEAD,用于指向链表的头结点,因此它的类型应该是STUDENT。该指针在STUDENTSET对象创建时必须被初始化为空(HEAD0)。该指针只在类对象的操作中被访问,所以它是PRIVATE数据成员,并且不需要提供在类对象外访问HEAD的接口。集合构造函数STUDENTSET,链表结构集合创建时应是一个空链表。集合析构函数STUDENTSET,链表结构集合析构(撤消)时,如果链表不为空,则需要将链表中的各个结点逐一撤消。集合判空操作ISEMPTY,该成员函数用于判断集合(即链表)是否为空,并将判断结果以一个布尔(BOOL)类型值作为标志返回。学生信息结点插入操作INSERT,该成员函数的功能是将一个动态创建的STUDENT类型的新生对象作为结点按学号顺序插入链表。创建新生对象所需要的各项属性(姓名、年龄、性别、专业)应通过参数的形式传递给函数的操作。注意,新生必须是在堆中动态创建的对象,而不能是在堆栈中创建的局部对象。查询指定学生信息操作CONTAIN,该成员函数的功能是查询集合中是否存在指定学号的学生。被查询学生的学号通过参数的形式传递给函数的操作,如果被查询学生存在,则返回链表中该学生的地址,否则返回空地址。删除指定学生信息操作DELETE,该成员函数的功能是如果指定学号的学生在链表中,则将该学生从集合中删除;否则结束操作。被删除学生的学号通过参数的形式传递给函数的操作,显示集合中全部学生信息操作SHOWALL,该成员函数的功能是如果集合不为空,则顺序输出集合中所有学生的信息。3在主函数MAIN中完成如下操作建立一个学生信息空集合(STUDENTSET类对象)。显示集合中的全部学生记录信息。编写一段代码实现通过键盘能逐个输入任意个学生的各项信息(姓名、年龄、性别和专业),并以这些信息为参数创建学生信息记录(STUDENT类对象)对象,并将它们顺序插入链表中,直至人为结束输入(例如,通过键盘输入CTRLZ)。再次显示链表中的全部学生记录信息。编写一段代码能够实现以下所描述的任意次查询操作通过键盘输入学号;根据此学号在集合中查找有无学号匹配的学生记录;如果存在,则显示该学生的信息;询问用户是否从集合中删除该学生记录;若删除,则将学生记录从集合中删除,然后显示集合中的全部学生记录信息;如果集合中没有学号匹配的学生记录,否则显示相应的提示信息;直至集合为空或人为结束查询操作(例如,通过键盘输入CTRLZ)。4要求编写编程文档,文档内容包括绘制STUDENT和STUDENTSET类图和类图之间的静态关系图STUDENT和STUDENTSET类定义描述MAIN函数的流程图提示1由于链表集合类STUDENTSET中结点是STUDENT类型,为了操作方便和提高访问速度,应该在STUDENT类中将STUDENTSET声明为友元。为此,需要对STUDENT的定义做相应的修改。2学号的构成规则可以确定为年级5位长度的注册顺序号,例如,2005年级的学生学号基数200500001。3从键盘接收字符串建议调用输入流的成员函数GETLINE,调用方法例如STRINGIDGETLINECIN,ID即可从键盘获取字符串。如果在键盘上键入复合键CTRLZ后回车结束一次输入操作,则会产生输入空串的结果,即ID“”。难度等级题目3数值的进制的表示总是用以进制N为模的余数所对应的数值码组成的,例如,2进制数的数值码为0,1;3进制数的数值码为0,1,2;而10进制数的数值码为0,1,2,3,4,5,6,7,8,9等。根据上述概念,定义一个能够表示任意进制整数的自定义整数类RANDOMINT,该类能表示2至16进制之间的任意进制整数,也就是说,能按照当前进制整数的运算规则和表示规则对该整数类对象施加算术四则运算和进行输入输出操作。要求1正确、合理地设计和实现能满足题意要求的任意进制整数类RANDOMINT。为此要求该类应包括以下属性和操作属性进制属性MOD该属性为INT类型,取值范围为2,16。该属性用于存放RANDOMINT类对象的当前进制值,例如,MOD3,表示RANDOMINT类对象表示的是三进制整数。该属性是判定输入数值码合法性和输出数值码转换的依据。数值属性VALUE该属性为INT类型,取值范围为系统确定的整型数取值范围。该属性用于存放RANDOMINT类对象的当前值,注意该数值总是以十进制表示的,这样将有利于利用系统已经确定的十进制整数的操作规则。而表示该数值的数值码取决于进制属性MOD,例如,RANDOMINT类对象的VALUE45,MOD3,则表示该整数对象的数值码就应该是1200;如果RANDOMINT类对象的MOD8,则表示VALUE45的数值码就应该是55。操作构造函数应能适应两种情况不传递参数的构造函数该构造函数将进制属性MOD设定为缺省进制值10,数值属性VALUE设定0,也就是构造一个表示十进制的RANDOMINT类对象,其初值等于0。传递指定进制值和数值的构造函数该构造函数通过参数将所创建RANDOMINT类对象的进制属性MOD设定为指定进制,将数值属性VALUE设定为指定值。拷贝构造函数由于属性VALUE是一个需要动态分配存储空间的指针,因此必须为RANDOMINT类对象自定义拷贝构造函数。注意根据进制值的取值范围检查参数所传递的进制值的合法性。算术四则运算操作能使用算术四则运算符完成两个RANDOMINT整数的算术四则运算操作并返回计算结果(RANDOMINT整数)。这类操作必须在两个同进制的RANDOMINT整数对象之间进行,因此在运算操作之前,必须判别参与运算的两个RANDOMINT整数对象的进制是否相同;如果不相同,则先进行进制的转换规一,然后在进行相应的四则运算操作。进制的转换规一规则指定为“向左规一”,即转换右操作数的进制与左操作数的进制一致。注意,重载的四则运算符应该能满足参与运算的两个操作数中可以有一个是系统预定义INT类型常数(10进制),而运算符的返回值必须是一个RANDOMINT类对象。输入、输出操作能对标准输入流CIN使用输入运算符和对标准输出流COUT使用输入运算符和对标准输出流COUT使用输入运算符实现两个有理数之间的各种相应的关系运算。参与关系运算的两个操作数中允许有一个实数。关系运算符函数的返回值均为表示比较结果的整型(INT)数值。输入、输出操作能对标准输入流CIN使用输入运算符和对标准输出流COUT使用输入运算符R/1RN/1NP/Q等值变换完成。变换因子N的选择原则是使R消除小数位成为整数,而不损失精度,因此应将N(N为LONG类型)选择得足够大,例如,R3567,则N1000L。2两个整数的最大公约数可以通过辗转相除法计算获得。3算术四则运算符函数可以是RATIONAL类的友元函数。由于RATIONAL类的构造函数ABX2CDXEF能将一个实数隐含转换为RATIONAL类对象,因此不必为每种运算符函数定义多个不同版本,就能满足题意的要求。难度等级题目6集合是由从被称为全集(UNIVERSALSET)的一组对象中选出的若干对象组成(例如,1个整数集合就是从整数全集中选出的若干无重复的整数组成的)。我们将集合写成表的形式,并以逗号为间隔,用大括号将两恻括起来。XI1,I2,I3,IM集合的主要运算包括并集()XY是不重复地包含X中所有元素和Y中所有元素的集合。例如交集()XY是所有既在X中又在Y中的元素的集合。属于集合()如果元素N是集合X的成员,则NX为真;否则为假。例如X0,3,20,55/20X为真,35X为假。要求1定义一个整数集合类SET,要求该类包含如下属性和操作属性元素表属性MEMBERSETSIZE是从0SETSIZE1范围内的整数中选出的元素表,其中SETSIZE指定整数元素值和表中可以容纳的元素个数的范围,例如,可以在类外定义CONSTINTSETSIZE500。注意,元素表MEMBER的元素值只有两种状态(非TRUE即FALSE)。如果元素N对应的元素表的元素值为真(TRUE),则表示N在集合中,即NX当且仅当MEMBERN为真。例如,集合X1,4,5,7对应的元素表中,只有元素MEMBER1,MEMBER4,MEMBER5,MEMBER7为真,而其余元素均为假。操作构造函数构造SET类对象分两种情况如果不通过参数传递初值,则在集合对象的构造过程中,元素表MEMBER的X0,3,20,55Y4,20,45,55XY0,3,4,20,45,55X0,3,20,55Y4,20,45,55XY20,55FALSETRUEFALSEFALSETRURTRUEFALSETRUEFALSEFALSEFALSE0123456789499各个元素被缺省设置为FALSE,即空元素表。如果将一个整型数组A和数组的元素个数N作为参数传递初值,则在集合对象的构造过程中,元素表中由数组A的元素值作为下标的元素值被设置为TRUE,而其他元素设置为FALSE。插入元素操作INSERT通过参数将一个在0SETSIZE1范围内的整数N插入集合中,即MEMBERNTRUE。删除元素操作DELETE通过参数将一个在0SETSIZE1范围内的整数N从集合中删除,即MEMBERNFALSE。并集运算操作OPERATOR将两个SET对象表示的整数集合进行并集运算,并返回结果集合。交集运算操作OPERATOR将两个SET对象表示的整数集合进行交集运算,并返回结果集合。属于集合运算操作OPERATOR判断一个整数元素是否属于一个指定的SET对象表示的整数集合,并返回结果标志(非TRUE即FALSE)。被判断的整数元素和整数集合通过参数传递给操作。输出操作通过标准输出流COUT,按集合的表示格式输出显示整数集合。2编写一个类外全程函数INTFILLSET,该函数的功能是创建一个集合(SET对象)P;产生5个04的随机数,并顺序插入集合P;使用集合的属于集合运算操作OPERATOR分别检测集合P,如果0,1,2,3,4是否都属于集合P,则返回1;否则返回0。3在MAIN函数中,通过如下对SET类对象的使用,全面检测SET类的正确性。创建以下集合S1,5,7,12,24,36,45,103,355,499T2,3,5,7,8,9,12,15,36,45,103,255,355,498U1,2,3,4,5,50其中S和T通过构造函数完成对集合的初始化;而U要求使用INSERT进行初始化。计算并显示ST。计算并显示ST。计算并显示SU。从T中删除8,36,103和498,并在删除操作的前后分别显示T,以便比较删除操作的结果。生成并显示一个1到9之间的随机数,然后验证它是否在集合S中,并显示验证结果(这样的操作过程连续做5次)。使用SET对象模拟在0到4范围内连续随机抽取5次得到5个不同数的概率,此数学概率为14/53/52/51/500384。为此,调用全程函数FILLSET100000次,并累计返回值,用以验证上述数学概率。提示1随机数的产生方法需要调用库函数SRAND和RAND,具体方法可以参考第3章编程练习题中35扑克牌游戏的洗牌操作中的相关提示。2集合的并集OPERATOR、交集OPERATOR和属于集合OPERATOR操作运算符既可以定义为成员函数,也可以定义友员函数。注意,如果这些运算符函数被定义为成员函数,则应该声明为只读函数。难度等级题目7日期类DATE的定义如下CLASSDATEINTMONTH/月份值INTDAY/日值INTYEAR/年份值STRINGFORMAT/输出格式描述串PUBLICDATEINTM1,INTD1,INTY0/使用参数值为相应的属性MONTH,DAY和/YEAR赋初值。各参数值的范围/1M12,1D31,0Y600;/在为各属性赋值之前,需要根据上述范围/对各参数值进行合法性检查;其中对参数D/的合法性检查还需要根据M和Y的值进行/闰年、闰月和大小月份的判断。如果参数/值超越了合法值的上界或下界,则自动修/改为相应值的上界或下界。注意,属性/YEAR1900Y。/使用缺省参数时,各属性被赋值为/MONTH1,DAY1,YEAR1900。/无论是否使用缺省参数值,FORMAT都缺省/设置为”MM/DD/YY”。DATESTRINGDSTR/将参数传送的格式日期字串”MM/DD/YY”转/换为相应的年、月、日值、进行合法性检/查后为相应的属性赋值。例如,日期字串/“12/31/99”将被转换、合法性检查和赋值/为MONTH12,DAY31,YEAR1999,/如果DSTR”,则将各属性被赋值为/MONTH1,DAY1,YEAR1900。/注意,参数DSTR不允许等于0。/无论DSTR是否为”,FORMAT都缺省设置为/”MM/DD/YY”。INTOPERATORDATEDATECONST/按照日期大小规则比较两个DATE对象所表/示的日期,如果THISDATE,返回1;否/则返回0。INTOPERATORDATE10,24,73DATE“12/25/44”DATE9,30,82DATE3,5,105DATE3,7,105检测所定义的运算操作,并显示运算结果产生的新日期。依次修改所定义的日期对象的输出格式为”YY年MM月DD日”,并按新格式逐个显示日期对象。难度等级题目8从下图可以看出一个立方体BOX可以视为是在一个矩形RECTANGLE的相互正交的长LENGTH和宽WIDTH的基础上增加一维与LENGTH和WIDTH相互正交的高HEIGHT而生成的。BOX的体积可以视为是由LENGTH和WIDTH确定的矩形面积沿正交轴在0,HEIGHT区间进行积分获得的;BOX的面积可以视为是由LENGTH和WIDTH确定的矩形周长沿正交轴在0,HEIGHT区间进行积分的结果两倍的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西省浑源县第五中学校2025年化学高一上期中经典试题含解析
- 西宁第十四中学2025-2026学年数学高二第一学期期末检测试题含解析
- 虚拟现实教育应用-第17篇-洞察与解读
- 保险产品创新路径分析-洞察与解读
- 自然形态在室内设计中的应用-洞察与解读
- 快餐供应链实时优化-洞察与解读
- 低品位矿高效利用-洞察与解读
- 2025机关绿化维护管理合同 绿化维护管理合同
- 防腐总包合同范本
- 收购废铁钢厂合同范本
- 2025甘肃白银靖远县北滩镇选聘专业化管理村文书2人考试笔试备考试题及答案解析
- 2025年公司财务总监年终总结(五篇)
- 水厂建设项目施工方案
- 2025湖北随州国有资本投资运营集团有限公司拟聘用人员笔试历年备考题库附带答案详解2卷
- 2025年宁夏交建投校园招聘和社会招聘230人考试笔试参考题库附答案解析
- 非洲猪瘟安全培训课件
- 2025陕西延长石油榆林煤化有限公司招聘120人笔试历年难易错考点试卷带答案解析试卷2套
- 2026中国人民大学管理职员和教师以外专业技术人员招聘考试笔试参考题库附答案解析
- 2025北京海淀高三上学期期中化学试卷和答案
- 幼小衔接阶段教育衔接策略与效果评价
- 口风琴上课课件
评论
0/150
提交评论