1、参加课程设计的学生需从以下选题中选择题目,每题最多3人选。其中最后一个题目为学生自拟题目,自拟题目应与其它选题难度相当。选题一:迷宫与栈问题【问题描述】以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。【任务要求】1) 首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),
2、(3,1,2),。2) 编写递归形式的算法,求得迷宫中所有可能的通路。3) 以方阵形式输出迷宫及其通路。【测试数据】迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。选题二:算术表达式与二叉树【问题描述】一个表达式和一棵二叉树之间,存在着自然的对应关系。写一个程序,实现基于二叉树表示的算术表达式的操作。【任务要求】假设算术表达式Expression内可以含有变量(az)、常量(09)和二元运算符(+,-,*,/,(乘幂))。实现以下操作:1) ReadExpre(E)以字符序列的形式输入语法正确的前缀表达式并构造表达式E。2) WriteExpre(E)用带括弧的中缀表达式输
3、出表达式E。3) Assign(V,c)实现对变量V的赋值(V=c),变量的初值为0。4) Value(E)对算术表达式E求值。5) CompoundExpr(P,E1,E2)-构造一个新的复合表达式(E1)P(E2)【测试数据】1) 分别输入0;a;-91;+a*bc;+*5x2*8x;+*3x3*2x2x6并输出。2) 每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。选题三:银行业务模拟与离散事件模拟【问题描述】假设某银行有4个窗口对外接待客户,从早晨银行开门(开门9:00am,关门5:00pm)起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需
4、要在每个窗口前顺次排队,对于刚进入银行的客户(建议:客户进入时间使用随机函数产生),如果某个窗口的业务员正空闲,则可上前办理业务;反之,若4个窗口均有窗户所占,他便会排在人数最少的队伍后面。【任务要求】1) 编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。2) 建议有如下设置:a) 客户到达时间随机产生,一天客户的人数设定为100人。b) 银行业务员处理时间随机产生,平均处理时间10分钟。3) 将一天的数据(包括业务员和客户)以文件方式输出。【测试数据】由随机数产生器生成选题四:文学研究助手与模式匹配算法KMP【问题描述】文学研究人员需要统计某篇英文小说中某些形容词的
5、出现次数和位置。试写一个实现这一目标的文字统计系统【任务要求】1) 英文小说存于一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每个词的出现次数和出现位置所在的行的行号,格式自行设计。待统计的“单词”在文本串中不跨行出现,它或者从行首开始,或者前置以一个空格符。2) 模式匹配要基于KMP算法。3) 推广到更一般的模式集匹配问题,并设待查模式串可以跨行(提示:定义操作GetAChar)。【测试数据】1) 文本文件为testword.c2) 待统计的词集:if、else、for、while、return、void、int、char、ty
6、pedef、struct选题五:陇桥校园建筑物与最短路径【问题描述】1) 从陇桥学院的平面图中选取有代表性的建筑物(10-15个),抽象成一个无向带权图。以图中顶点表示建筑物,边上的权值表示两地之间距离。2) 本程序的目的是为用户提供路径咨询。根据用户指定的始点和终点输出相应路径,或者根据用户指定的建筑物输出建筑物的信息。【任务要求】1) 从陇桥学院的平面图中选取有代表性的建筑物(10-15个),抽象成一个无向带权图。以图中顶点表示校内各建筑物,存放建筑物名称、代号、简介等信息;以边表示路径,存放路径长度等信息。2) 为来访客人提供图中任意的建筑物相关信息的查询。3) 为来访客人提供图中任意的
7、建筑物的问路查询,即查询任意两个建筑物之间的一条最短的简单路径。【测试数据】陇桥学院的平面图(距离可估计)。选题六:哈夫曼(Huffman)编/译码器【问题描述】利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。【任务要求】一个完整的系统应具有以下功能:1) I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,
8、建立哈夫曼树,并将它存于文件hfmTree中。2) E:编码(Encoding)。利用以建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。3) D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。4) P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。5) T:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式(树或凹
9、入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。【测试数据】1) 利用教科书中的数据调试程序。2) 用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”。字符空格ABCDEFGHIJKLM频度1866413223210321154757153220字符NOPQRSTUVWXYZ频度5763151485180238181161选题七:内部排序算法比较【问题描述】在教科书中,各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机数据比较各种算法的关
10、键字比较次数和关键字移动次数,以取得直观感受。【任务要求】1) 对以下4种常用的内部排序算法进行比较:冒泡排序、直接插入排序、选择排序、快速排序。2) 待排序表的表长不小于100;其中的数据要用伪随机数程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换计为3次移动)。3) 最后要对结果作出简单分析,包括对各组数据得出结果波动大小的解释。选题八:文章编辑【问题描述】输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共20行。【任务要求】1) 分别统计出其中英文字母数和空格数及整篇文章总字数。2
11、) 统计某一字符串在文章中出现的次数,并输出该次数。3) 删除某一子串,并将后面的字符前移。【测试数据】输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。选题九:停车场管理系统【问题描述】1) 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。2) 每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。3) 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费,功能可自己添加)。
12、【任务要求】1) 掌握栈和队列的建立及基本操作。2) 深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。选题十:集合的交、并、差运算【问题描述】 编制一个能演示执行集合的交、并和差运算的程序。【任务要求】1) 集合元素用小写英文字母,执行各种操作应以对话方式执行。2) 算法要点:利用单链表表示集合;理解好三种运算的含义。选题十一:学生成绩管理系统【问题描述】 本例对学生的成绩管理做一个简单的模拟,用菜单选择方式完成下列功能: 登记学生成绩;查询学生成绩;插入学生成绩;删除学生成绩。【任务要求】 1) 算法输入:操作要求,学生信息2) 算法输出:操作结果3) 算法要点:把问题看成是对线性
13、表的操作。将学生成绩组织成顺序表,则登记学生成绩即是建立顺序表操作;查询学生成绩、插入学生成绩、删除学生成绩即是在顺序表中进行查找、插入和删除操作。【测试数据】自行设定(测试数据不少于5人)。选题十二:马踏棋盘【问题描述】 将马随机放在国际象棋的8* 8棋盘Bord88的某个方格中,马按走棋规则进行移动。要求每个方格上只进入一次,走遍棋盘上全部64个方格。【任务要求】 1) 编制非递归程序,求出马的行走路线 ,并按求出的行走路线,将数字1,2,64依次填入一个8* 8的方阵,输出之。2) 测试数据:由读者指定,可自行指定一个马的初始位置。3) 实现提示:每次在多个可走位置中选择一个进行试探,其
14、余未曾试探过的可走位置必须用适当结构妥善管理,以备试探失败时的“回溯”(悔棋)使用。选题十三: joseph环【问题描述】 编号是1,2,,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。【任务要求】1) 利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。2) 测试数据:m的初值为20,n=7 ,7个人的密码依次为3,1,
15、7,2,4,7,4,首先m=6,则正确的输出是什么?3) 要求: 输入数据:建立输入处理输入数据,输入m的初值,n ,输入每个人的密码,建立单循环链表。 输出形式:建立一个输出函数,将正确的输出序列【测试数据】自行设定。选题十四: 最小生成树【问题描述】在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。对于图,其生成树中的边也带权,将生成树各边的权值总和称为生成树的权,并将权值最小的生成树称为最小生成树(Minimun Spanning Tree),简称为MST。有两种非常典型的算法:Prim算法和kruskal算法。【任务要求】设计程序完成如下功能:对给定的网和起点,用PRIM算
16、法和kruskal算法的基本思想求解出所有的最小生成树。存储结构可自行选择。【测试数据】自行设定(城市数不少于15个,权值参考距离)。选题十五:通讯录管理系统【问题描述】 该设计采用菜单作为应用程序的主要界面,用控制语句来改变程序执行的顺序,控制语句是实现结构化程序设计的基础。该设计的任务是利用一个简单实用的菜单,通过菜单单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。【任务要求】 (1) 菜单内容1、 通讯录链表的建立2、 通讯者结点的插入3、 通讯者结点的查询4、 通讯者结点的删除5、 通讯录链表的输出0、 退出管理系统请选择05:(2 ) 设计要求1、使用05来选择菜单项,其他
17、输入则不起作用。2、功能函数设计3、5个不同功能的算法实现编程题,目的是练习利用链表结构来解决实际应用问题的能力,进一步理解和熟悉线形表的链式存储结构。【测试数据】自行设定(测试数据不少于10人,通讯录项目不少于3个)。选题十六:运动会分数统计系统【问题描述】 参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)【任务要求】功能要求:1).可以输入各个项目的前三名或前五名
18、的成绩;2)能统计各学校总分,3)可以按学校编号、学校总分、男女团体总分排序输出;4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、
19、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;【测试数据】自行设定(男女运动员分别不少于5人,学校不少于10个)。选题十七:航班信息的查询系统【问题描述】 该设计要求对飞机航班信息进行排序和查找。可按航班的航班号、起点站、到达站、起飞时间以及到达时间等信息进行查询。【任务要求】对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分查找法对排好序的航班记录按航班号实现快速查找,按其他次关键字的查找可采用最简单的顺序查找方法进行,因此他们用得较少。每个航班记录包括八项,分别是:航班号、起点站、终点站、
20、班期、起飞时间、到达时间、飞机型号以及票价等,假设航班信息表(8条记录)航班号起点站终点站班期起飞时间到达时间机型票价CA1544合肥北京1.2.4.510551240733960MU5341上海广州每日14201615M901280CZ3869重庆深圳2.4.6085510357331010MU3682桂林南京2.3.4.6.720502215M901380HU1836上海北京每日094011207381250CZ3528成都厦门1.3.4.5.715101650CRJ1060MU4594昆明西安1.3.5.6101511403281160SC7425青岛海口1.3.619202120DH4
21、1630其中航班号一项的格式为:K0 K1 K2 K3 K4 K5CZ3869其中K0和K1的输入值是航空公司的别称,用两个大写字母标示,后4位为航班号,这种航班号关键字可分成两段,即字母和数字。其余七项输入内容因为不涉及本设计的核心,因此除了票价为数值型外,均定义为字符串即可。【测试数据】自行设定(航班号不少于20个)。选题十八:哈希表应用【问题描述】 利用哈希表进行存储。【任务要求】 1) 任务要求:针对一组数据进行初始化哈希表,可以进行显示哈希表,查找元素,插入元素,删除元素,退出程序操作。2) 设计思想:哈希函数用除留余数法构造,用线性探测再散列处理冲突。3) 设计目的:实现哈希表的综
22、合操作4) 简体中文控制台界面:用户可以进行创建哈希表,显示哈希表,查找元素,插入元素,删除元素。5) 显示元素:显示已经创建的哈希表。6) 查找元素:查找哈希表中的元素,分为查找成功和查找不成功。7) 插入元素:在哈希表中,插入一个元素,分为插入成功和失败。8) 删除元素:在已有的数据中,删除一个元素。9) 退出系统:退出程序。【测试数据】自行设定(测试数据不少于3组,每组数据不少于12个)。选题十九:拓扑排序【问题描述】拓扑排序可判断AOV网络中是否存在回路,使的所有活动可排成一个线性序列,使用每个活动的所有前驱活动都排在该活动的前面。关键路径的工期决定了整个项目的工期。任何关键路径上的终端元素的延迟将直接影响项目的预期完成时间(例如在关键路径上没有浮动时间)。【任务要求】 构建AOV网络,并输出其拓扑序列结果,输出该图的关键路径和关键活动,存储结构自行选择。【测试数据】自行设定(结点数不少于10个)。选题二十:自拟题目【要求】1. 学生原则上可以结合个人爱好自选课题。2. 自选课题必须覆盖数据结构的主要内容,有一定的深度与难度,有一定的算法复杂性,能明确体现数据抽象与组织、算法设计与性能分析以及编码实现等过程。3. 学生自选课题需提前报课程设计指导教师批准方可生效。
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100