版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE1课程设计课程设计报告样本数据结构课程设计报告题目:猴子选大王院(系):计算机工程学院专业:计算机科学与技术班级:嵌入式109(1)学生:指导教师:寇海洲孙成富邱军林殷路2010年12月目录一、设计目的 1二、设计内容 1三、程序设计步骤 1四、调试分析 5五、测试结果 5六、课程设计小结: 6一、设计目的1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。2、提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。二、设计内容1、系统名称:猴子选大王按照规定的要求,选出最后的一只猴子,为大王。2、要求:一堆有编号的猴子,编号为1,2,3……m,这群猴子(m个)按照1-m的顺序围坐一圈,从第一开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中剩下最后一只猴子,则该猴子为大王。三、程序设计步骤1)功能分析说明图:2)采用主要的数据结构类型。采用了链表的存储方式,属于链接存储结构。for(i=1;i<n;i++)//建立链表的存储结构{ p=(LINK)malloc(sizeof(Monkey)); p2->next=p; p2=p;}以下是用于存储结点的结构体的定义:typedefstructmonkey{ intnum;structmonkey*next;}Monkey,*LINK;基本算法:这个算法的主要流程为:从控制台读取猴子的数量和报数的最大数——>对猴子进行编号,并用链表来存储——>让链表中的猴子进行报数,对于报数为m的猴子则从链表中删除——>当链表中只剩下一个报数后则停止这个过程,这最后一个猴子即选出来的大王。以下为为猴子建立链表: for(i=1;i<n;i++)//建立链表的存储结构 { p=(LINK)malloc(sizeof(Monkey)); p2->next=p; p2=p;}以下为猴子进行编号:for(i=1;i<=n;i++)//对猴子进行编号 { p->num=i; //printf("%d号猴子:%d\n",p->num,p->num); p=p->next;}以下为最主要的算法过程,是通过一个While循环来控制的,是让猴子报数的过程,并删除报数为m的猴子:while(1) { i++; //当链表只剩最后一个元素了则跳出循环,此时报数已完成 printf("%d号猴子报:%d\n",p->num,i);if(p->next==p)break; if(i==m) { i=0; printf("%d号猴被淘汰\n",p->num); printf("\n"); p2->next=p->next; p=p2->next; continue; } else { if(i==m-1)p2=p; p=p->next; }}3)详细设计:#include<stdio.h>#include<stdlib.h>intn=2;intm=1;typedefstructmonkey{ intnum; structmonkey*next;}Monkey,*LINK;voidmain(){ printf("请输入一个整数(猴子数量):"); scanf("%d",&n); printf("请输入一个小于猴子数量的整数(报数的最大数):"); scanf("%d",&m); LINKp,head,p2; inti; head=p=p2=(LINK)malloc(sizeof(Monkey)); for(i=1;i<n;i++)//建立链表的存储结构 { p=(LINK)malloc(sizeof(Monkey)); p2->next=p; p2=p; } p2->next=head; p=head; //printf("对猴子进行编号!\n"); for(i=1;i<=n;i++)//对猴子进行编号 { p->num=i; //printf("%d号猴子:%d\n",p->num,p->num); p=p->next; } i=0; p=head; while(1) { i++; //当链表只剩最后一个元素了则跳出循环,此时报数已完成 printf("%d号猴子报:%d\n",p->num,i);if(p->next==p)break; if(i==m) { i=0; printf("%d号猴被淘汰\n",p->num); printf("\n"); p2->next=p->next; p=p2->next; continue; } else { if(i==m-1)p2=p; p=p->next; } } printf("胜出:%d",p->num);}四、调试分析调试的过程中,对程序做了几点改进,增加了程序的容错能力,不论用户输入什么内容,程序都能安全检查。这个算法主要考察了对数据存储方式的处理和循环判断的处理。我在这里用了链表的存储方式。五、测试结果 调试得到输出结果如图: 当输入n为6,m为4时的运行结果:六、课程设计小结:猴子选大王是一个数据结构很古老很经典的问题,融知识性和娱乐性为一体,能让人产生较大兴趣,因此编写程序实现之是一件很有意义的事。为编写这个程序的代码及写课程设计报告,我们花了两周的时间,下面说说我们在这期间的感悟。在课程设计中,首先要看清问题,将问题要求理解透彻,在构思要如何实现,要用到哪些函数,要用什么算法,在课程构思中选算法是一个很重要的概念,只有确定用这么算法后才能接下来的工作,将流程图画在纸上,再依次编写代码,在程序设计中,编写代码只是一个方面,调试才是关键。它是一个相当繁琐的过程,有许多新的问题需要被解决,但同时它也是一个比较重要的过程,因为在程序调试过程中,你会学到很多新的东西,从而增加你编程的经验。通过本次实习,温固了数据结构的相关知识,加深对课内所学的有关数据的逻辑结构和存储表示、数据结构的选择和应用、算法的设计和时空效率分析等课程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024工程队建房施工承包合同范本参考范文
- 2024至2030年中国水箱清洁剂数据监测研究报告
- 2024至2030年中国防静电彩色环氧地坪数据监测研究报告
- 2024至2030年中国汽缸体数据监测研究报告
- 2024至2030年中国多功能震压制砖机行业投资前景及策略咨询研究报告
- 医疗男科培训
- 人民银行3号令培训
- 内蒙古巴彦淖尔市(2024年-2025年小学五年级语文)统编版专题练习(下学期)试卷及答案
- 湖北省宜昌市(2024年-2025年小学五年级语文)人教版专题练习((上下)学期)试卷及答案
- 水利水电锅炉更换工程合同
- AQ 1117-2020 煤矿井下注浆用高分子材料安全使用管理规范(正式版)
- 《中医药文献检索》课件
- 平衡记分法与关键绩效指标(KPI)(中国联通思茅分公司实际操作模板)
- 2024年美国车辆到电网(V2G)市场现状及上下游分析报告
- 中医医疗技术管理制度
- 2025届新高考地理精准复习 基于素养导向下的高考二轮复习地理备考策略
- 2024年大学试题(农学)-园艺商品学笔试参考题库含答案
- MOOC 数学物理方程-南京信息工程大学 中国大学慕课答案
- 专题复习与圆的切线有关的证明与计算
- GB/T 31384-2024旅游景区公共信息导向系统设置规范
- 母语为英语的汉语学习者习得汉语语音的偏误分析及教学对策
评论
0/150
提交评论