课程设计说明书敢死队问题.docx
- 文档编号:3430785
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:11
- 大小:117.13KB
课程设计说明书敢死队问题.docx
《课程设计说明书敢死队问题.docx》由会员分享,可在线阅读,更多相关《课程设计说明书敢死队问题.docx(11页珍藏版)》请在冰豆网上搜索。
课程设计说明书敢死队问题
摘要
C是一种通用的程序设计语言,C语言在很多方面继承和发展了以往许多高级程序设计语言的成功经验和特色,具有书写格式自由、数据类型丰富、语句功能强大、执行速度快和存储控制能力强等优点。
敢死队问题是根据著名的“约瑟夫环”演变而来的敢死队问题的处理与计算来设计的一个系统。
整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成敢死队问题的全过程,包括创建三个数据结构(顺序存储结构、单链表存储结构、数组)、数据的处理与计算、数据的分析、结果的输出。
本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。
关键词:
敢死队问题,C语言,数据结构,顺序存储结构,单链表存储结构,数组
目录
1课题背景的介绍1
1.1课题背景1
1.2目的1
2需求分析2
2.1数据需求分析2
2.2功能需求分析2
3系统总体设计3
3.1系统模块划分3
3.2系统模块结构图3
4系统详细设计4
4.1系统操作界面设计4
4.2顺序存储结构6
4.3单链表存储结构7
4.4数组9
5系统连编与运行12
6总结13
参考文献14
1课题背景的介绍
1.1课题背景
有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。
如果前一个战士没完成任务,则要再派一个战士上去。
现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。
如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。
以此类推,直到任务完成为止。
排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。
要求:
至少采用两种不同的数据结构的方法实现。
1.2目的
本课题运用C语言进行开发,C语言能够简单的进行编译一些程序,来实现对一些问题的解决。
它虽然比较简单的处理一些问题,但却有更高的效率。
它能够被大多数用户所接受,因为它能够呈现出清晰的界面,是人们能够很好的理解。
能在一些方面给人们更好的服务,成为人们的好帮手。
经过这一个学期对《数据结构》的学习,我们都学到了不少东西,可能有些学的还不够理想,但无论如何这些知识都为我们的下一步学习打下了坚实的基础。
做这么一个课程设计,一方面是为了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
2需求分析
本程序输入队伍人数n为任意的,最终输出记数的初始位置,首先输入一个报数上限m,当达到报数上限时,那名士兵出列执行任务,从下个人开始记数,再次循环,直到只剩一人,得到其在队伍中的位置,通过数学思想求得题目要求即队长为首的情况下需要记数初始位置。
2.1数据需求分析
本系统的主要数据是正整数。
正整数信息包括:
队伍的人数,报数的数值,报数开始的位置。
2.2功能需求分析
本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:
(1)创建存储结构:
创建顺序表,创建单链表,创建数组。
(2)数据的输入:
把队伍的人数,报数的数值输入。
(3)数据的处理;对队伍的人数,报数的数值进行计算。
(4)结果的输出:
把报数开始的位置输出。
3系统总体设计
3.1系统模块划分
本系统主要是对敢死队问题的处理,包括了创建存储结构、数据的输入、数据的处理、结果的输出等功能。
整个系统分为以下几个模块。
1、操作界面模块本模块提供操作界面的信息输出模式。
2、顺序存储结构模块本模块用于通过运用顺序结构模块来计算结果。
3、单链表存储结构模块本模块用于通过运用单链表结构模块来计算结果。
4、数组模块本模块用于通过运用数组结构模块来计算结果。
3.2系统模块结构图
根据系统功能设计,对应的系统模块结构图如图1所示:
图1系统模块结构图
4系统详细设计
4.1系统操作界面
统过对该系统设计的了解与讨论,同时也为了广大使用者的方便与快捷。
我们最后设计了这样的一个界面。
首先要让使用者明白怎样使用此系统。
这就需要通过界面来给他们一个清晰而明白的空间。
而我们设计的这个界面恰好符合了这一要求。
通过调用界面函数来使使用者能够很方便的进行操作。
voidmain()
{
intpeople,num,choice,pn;
while
(1)
{
printf("请选择计算方法:
1顺序表2单链表3数组4退出\n");
scanf("%d",&choice);
switch(choice)
{
case1:
printf("请输入人数\n");
scanf("%d",&people);
printf("请输入所用计数的数字\n");
scanf("%d",&num);
pn=NListPre(people,num);
printf("应从第%d名队员开始数数\n",pn);
break;
case2:
printf("请输入人数\n");
scanf("%d",&people);
printf("请输入所用计数的数字\n");
scanf("%d",&num);
pn=NLinkPre(people,num);
printf("应从第%d名队员开始数数\n",pn);
break;
case3:
printf("请输入人数\n");
scanf("%d",&people);
printf("请输入所用计数的数字\n");
scanf("%d",&num);
pn=APre(people,num);
printf("应从第%d名队员开始数数\n",pn);
break;
case4:
exit(0);
}
}
}
4.2顺序存储结构
敢死队问题处理系统的顺序存储结构是一个通过运用顺序存储结构来计算和处理此问题的模块。
intNListPre(intpeople,intnum)
{
NListlist;
inti;
intn=0;
list.length=people;
for(i=0;i list.mark[i]=(i+1); while(list.length>1) { n=(n+num)%list.length; if(n==0) list.length--; else { for(i=n;i { list.mark[i-1]=list.mark[i]; } list.length--; n--; } } n=(people-list.mark[0]+2)%people; if(n==0) return(people); else return(n); } 4.3单链表存储结构 敢死队问题处理系统的单链表存储结构是一个通过运用顺序存储结构来计算和处理此问题的模块。 intNLinkPre(intpeople,intnum) { inti,m,pn,n=0; NODE*L,*s,*r,*p,*q; pn=people; L=(NODE*)malloc(sizeof(NODE)); L->next=NULL; r=L; for(i=0;i { s=(NODE*)malloc(sizeof(NODE)); p=(NODE*)malloc(sizeof(NODE)); s->mark=(i+1); r->next=s; r=s; } s->next=NULL; while(pn>1) { n=(n+num)%pn; if(n==0) { p=L; i=1; while(i { p=p->next; i++; } p->next=NULL; pn--; } else { p=L; i=1; while(i { p=p->next; i++; } q=p->next; p->next=q->next; pn--; n--; } } L=L->next; n=L->mark; m=(people-n+2)%people; if(m==0) return(people); else return(m); } 4.4数组 敢死队问题处理系统的数组是一个通过运用顺序存储结构来计算和处理此问题的模块。 intAPre(intpeople,intnum) { inta[MAX]; inti,pn,n=0; for(i=0;i a[i]=(i+1); pn=people; while(pn>1) { n=(n+num)%pn; if(n==0) { pn--; a[pn]=0; } else { for(i=n;i a[i-1]=a[i]; pn--; n--; } } n=(people-a[0]+2)%people; if(n==0) return(people); else return(n); } 5系统连编与运行 一个应用系统设计和创建完成后,还必须进行连编,以便生成一个可执行文件供最终用户使用。 连编完成后还要运行,以检查整个系统的完整性和准确性,同时还可增加程序代码的保密性。 6总结 本设计开发的敢死队问题处理系统从最后的测试结果来看,基本上实现了敢死队问题处理系统的几大功能: 顺序存储结构、单链表存储结构、数组。 并达到操作过程中的直观、方便、实用、安全等要求。 系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的技术维护人员补充和维护。 本系统经过测试,证明其运行是稳定、可靠的。 但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善,使本软件能够更好的为大家服务,创造更大的社会价值。 在这次设计过程中,我得到了郑良仁老师的精心指导,在此,我由衷地感谢郑老师! 参考文献 [1]谭浩强.C程序设计[M].北京: 清华大学出版社.2005. [2]严蔚敏.数据结构(C语言版)[M].北京: 清华大学出版社.2008. [3]陈雁.数据结构[M].北京: 高等教育出版社,2004. [4]张磊.C程序设计教程.北京: 中国铁道出版社.2007. [5]黄杨铭.数据结构.北京: 科学出版社,2001.5 [6]冯舜玺.数据结构与算法分析—C语言描述(原书第2版).北京: 机械工业出版社,2004.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 说明书 敢死队 问题
![提示](https://static.bdocx.com/images/bang_tan.gif)