课程设计题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参加课程设计的学生需从以下选题中选择题目,每题最多3人选。其中最后一个题目为学生自拟题目,自拟题目应与其它选题难度相当。
选题一:迷宫与栈问题
【问题描述】
以一个mXn的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
【任务要求】
1)首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非
递归程序。求得的通路以三元组(i,j,d)的形式输出。其中:(i,j)
指示迷宫中的一个坐标,d表示走到下一坐标的方向。如,对于下列数
据的迷宫,输出一条通路为:(1,1,1),(1,2,2),(2,2,2),(3,2,3),(3,1,2),…。
2)编写递归形式的算法,求得迷宫中所有可能的通路。
3)以方阵形式输出迷宫及其通路。
【测试数据】
迷宫的测试数据如下:左上角(0,1)为入口,右下角(8,9)为出口。
出口
出口
选题二:算术表达式与二叉树
【问题描述】
一个表达式和一棵二叉树之间,存在着自然的对应关系。写一个程序,实现基于二叉树表示的算术表达式的操作。
【任务要求】
假设算术表达式Expression内可以含有变量(a~z)、常量(0~9)和二元运算符(+,-,*,/,^(乘幂))。实现以下操作:
1)ReadExpre(E)—以字符序列的形式输入语法正确的前缀表达式并构造表
达式E。
2)WriteExpre(E)—用带括弧的中缀表达式输出表达式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;+*5^x2*8x;+++*3^x3*2^x2x6并输出。
2)每当输入一个表达式后,对其中的变量赋值,然后对表达式求值。
选题三:银行业务模拟与离散事件模拟
【问题描述】
假设某银行有4个窗口对外接待客户,从早晨银行开门(开门9:00am,关门5:00pm)起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户(建议:客户进入时间使用随机函数产生),如果某个窗口的业务员正空闲,则可上前办理业务;反之,若4个窗口均有窗户所占,他便会排在人数最少的队伍后面。
【任务要求】
1)编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留
的平均时间。
2)建议有如下设置:
a)客户到达时间随机产生,一天客户的人数设定为100人。
b)银行业务员处理时间随机产生,平均处理时间10分钟。
3)将一天的数据(包括业务员和客户)以文件方式输出。
【测试数据】
由随机数产生器生成
选题四:文学研究助手与模式匹配算法KMP
【问题描述】
文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统
【任务要求】
1)英文小说存于一个文本文件中。待统计的词汇集合要一次输入完毕,即
统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每
个词的出现次数和出现位置所在的行的行号,格式自行设计。待统计的
“单词”在文本串中不跨行出现,它或者从行首开始,或者前置以一个
空格符。
2)模式匹配要基于KMP算法。
3)推广到更一般的模式集匹配问题,并设待查模式串可以跨行(提示:定
义操作GetAChar)。
【测试数据】
1)文本文件为testword.c
2)待统计的词集:if、else、for、while、return、void、int、char、typedef、
struct
选题五:陇桥校园建筑物与最短路径
【问题描述】
1)从陇桥学院的平面图中选取有代表性的建筑物(10-15个),抽象成一个
无向带权图。以图中顶点表示建筑物,边上的权值表示两地之间距离。
2)本程序的目的是为用户提供路径咨询。根据用户指定的始点和终点输出
相应路径,或者根据用户指定的建筑物输出建筑物的信息。
【任务要求】
1)从陇桥学院的平面图中选取有代表性的建筑物(10-15个),抽象成一个
无向带权图。以图中顶点表示校内各建筑物,存放建筑物名称、代号、简介等信息;以边表示路径,存放路径长度等信息。
2)为来访客人提供图中任意的建筑物相关信息的查询。
3)为来访客人提供图中任意的建筑物的问路查询,即查询任意两个建筑物
之间的一条最短的简单路径。
【测试数据】
陇桥学院的平面图(距离可估计)。
选题六:哈夫曼(Huffman)编/译码器
【问题描述】
利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。
【任务要求】
一个完整的系统应具有以下功能:
1)I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n
个权值,建立哈夫曼树,并将它存于文件hfmTree中。
2)E:编码(Encoding)。利用以建好的哈夫曼树(如不在内存,则从文件
hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入
文件CodeFile中。
3)D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码
进行译码,结果存入文件TextFile中。
4)P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每
行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。
5)T:印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式