学生搭配问题.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学生搭配问题 1.1需求分析 ?一班有m个女生,有n个男生(m不等于n),现要开一个舞会。男女生分别编号坐在舞池的两边的椅子上。每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴。 请设计一系统模拟动态地显示出上述过程,要求如下: ①输出每曲配对情况 ②计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值。 ③尽量设计出多种算法及程序,可视情况适当加分。 1.2概要设计 1.函数 ①主函数:main( ) ②学生跳舞搭配:dance( ) 2.程序流程图 开始 输入男女生、曲子数量,查找编号 曲子数k 对头元素出队 对头元素入队 Y 结束 N 1.3详细设计 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。 建立两个链式循环队列来分别存储男生和女生,然后调用入队出队函数实现循环队列的配对输出。在循环队列中进行入队、出队操作时,头尾指针仍要加一,朝前移动。只不过当头尾指针指向向量上界时、其加一操作是指向向量的下界。这样就可以通过出队再入队来实现男生女生的循环搭配。 1.4用户手册 ①进入程序后,您会看到以下提示: 1.“请输入男生的数量”; 2.“请输入女生的数量”; 3.“请输入曲子的数量”; 4.“请输入您要查找的男生编号”; 5.“请输入您要查找的女生编号”; ②输入男女生数量和曲子数量后,系统会给出每首曲子的男女生搭配情况,输入您要查找的男女生编号,系统会给出该对男女的跳舞搭配情况。 1.5程序清单 *C++版 #includestdio.h #includemalloc.h typedef struct Qnode { int data; struct Qnode *next; }Qnode,*Queueptr; typedef struct { Queueptr front; Queueptr rear; }Linkqueue; void Initqueue(Linkqueue Q) { Q.front=Q.rear=(Queueptr)malloc(sizeof(Qnode)); if(Q.front) Q.front-next=NULL; } void Enqueue(Linkqueue Q,int m) { Queueptr p; p=(Queueptr)malloc(sizeof(Qnode)); if(p) { p-data=m; p-next=NULL; Q.rear-next=p; Q.rear=p; } } int Dequeue(Linkqueue Q) { int m; Queueptr p; if(Q.rear!=Q.front) { p=Q.front-next; m=p-data; Q.front-next=p-next; } if(Q.front==p) Q.rear=Q.front; free(p); return m; } void Dance(Linkqueue M,Linkqueue W) { int i,m,n,k,a,b,c,d,num=0,r=0; printf(请输入男生的数量:); scanf(%d,n); printf(请输入女生的数量:); scanf(%d,m); printf(请输入曲子的数量:); scanf(%d,k); printf(请输入您要查找的男生编号:); scanf(%d,a); printf(请输入您要查找的女生编号:); scanf(%d,b); for(i=1;i=m;i++) Enqueue(W,i); for(i=1;i=n;i++) Enqueue(M,i); for(i=1;i=k;i++) { printf(\n\n现在正在播放第%d首曲子!\n,i); c=Dequeue(M); d=Dequeue(W); printf(现在正在跳舞的是第%d号男生和第%d号女生!\n,c,d); if(c==ab==d) { r=1; num++; printf(第%d号男生和%d号女生在第%d号曲子一起跳舞!\n,a,b,i); } Enqueue(M,c); Enqueue(W,d); } if(r==0) printf(\n您要查找的%d号男生和%d号女生没有在一起搭配跳舞!\n,a,b); if(r==1) printf(\n您要查找的%d号男生和%d号女生一起跳舞的次数为:%d次!\n,a,b,num); } int main(

文档评论(0)

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

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

1亿VIP精品文档

相关文档