舞会课程设计1.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
舞会课程设计1

一.实验目的 1.掌握队列的数据结构的特点。 2.熟练掌握在两种存储结构上实现栈的基本运算。 3.学会用队列的知识去解决实际问题。 4.掌握和理解本实验中出现的一些基本的C语言语句。 5.体会算法在程序设计中的重要性。 二.实验内容 某班级举办周末交谊舞会,舞会规则为: 1. 在舞会开始时,按照到来的先后顺序,男生、女生各排成一对等候。 2. 每支舞曲开始时,排在最前面的男生可以邀请排在最前面的女生跳舞。但当男生身高低于女生或高于女生25cm时,女生就会拒绝男生的邀请。当男生第1次被拒绝后,则男生将会重新去排队;而当男生连续2次遭到拒绝后,则离开舞会。当女生第1次拒绝邀请时,女生并不离开队伍重新去排队;而若女生连续3次拒绝邀请时,则离开舞会。 3. 每支舞曲完毕,所有正在跳舞的同学则按照进入舞池的顺序重新进行排队,等候下一支舞曲。 4. 舞会结束后,跳的舞曲最多且被拒绝次数最少的男生则为男生中的优胜者,同样跳的舞曲最多且拒绝男生次数最少的女生则为女生中的优胜者。 编程模拟此舞会过程,并求出最终舞会的男、女优胜者。 三.实验基本要求 本实验要求在电脑上安装有VC++6.0环境下运行此程序,编程模拟此舞会过程,要求建立一个男生等待队列、女生等待队列、还有一个正在跳舞的队列,舞伴配对成功进入舞池;则男生在先,女生在后依次入队;舞曲结束每对舞伴中男生退出舞池,出队后重新入队;舞曲结束每对舞伴中女生退出舞池,出队后重新入队列。 四.算法设计思想 根据舞会规则,由此可知是一个排队等待问题,应用队列来解决。因为男女生各有一个等待队伍,所以用队列boyQ表示男生等待队伍、队列girlQ表示女生等待队伍,还有一个正在跳舞的等待队列danceQ。队列boyQ和girlQ在舞会开始时按照到来的先后顺序而建立,作为一个模拟程序可采用随机函数来生成每位学生的信息。而当每支舞曲开始及结束后,这两个等待队列将随之变化。若男生邀请女生成功,出队进入舞池;一次被拒绝,重新入队等待; 连续两次被拒绝,出队离开舞会;舞会开始及舞曲结束时,入队;如果女生不拒绝邀请,出队进入舞池;一次拒绝邀请,不出队等待被邀请;连续两次拒绝,重新入队等待;连续三次拒绝,出队离开舞会;舞会开始及舞曲结束时,入队;还有舞会配对成功进入舞池,则男生在先,女生在后依次入队;舞曲结束每对舞伴中退出舞池,出队后重新入队列boyQ; 舞曲结束每对舞伴中女生退出舞池,出队后重新入队列girlQ. 五.算法流程图 六.算法源代码 #includestdio.h #includestdlib.h #includetime.h typedef struct{ int id; //编号 int height; //身高 int refuse; //男生的邀请被拒绝次数或女生拒绝邀请的连续次数 int totalRefuse; //拒绝或被拒绝的总次数 int finished; //完成的跳舞次数 }stuType; //学生信息类型 typedef int QElemType; //队列中元素类型 #include s1.h CirQueue boyQ,girlQ,danceQ; //分别为男生等待队列、女生等待队列、正在跳舞的队列 stuType *stu; //动态数组,存储所有学生信息 void partyStart(int boyNum,int girlNum) //舞会开始生成个男生和个女生信息,并按顺序插入相应队列 { int i; time_t t; stu=(stuType *)malloc((boyNum+girlNum)*sizeof(stuType)); //分配内存空间 InitCirQueue(boyQ,boyNum+1); //男生等待队列初始化 InitCirQueue(girlQ,girlNum+1); //女生等待队列初始化 InitCirQueue(danceQ,boyNum+girlNum+1); //正在舞池跳舞的学生队列初始化 srand((unsigned int)time(t)); //设置随机种子 for(i=0;iboyNum;i++) { stu[i].id=i+1; stu[i].height=165+rand()%30; //随机生成男生身高 stu[i].refuse=stu[i].totalRefuse=0; stu[i].finished=0; inSertQueue(boyQ,i); //将该男生插入队列boyQ } for(i=boyNum;iboyNum+girlNum;i++) { stu[i].id=i-boyNum+1; stu[i].height

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档