资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目 录题目1:设计一元多项式简单计算1题目2:链表应用11题目3:链表应用21题目4:通讯录2题目5:停车场管理系统3题目6:约瑟夫环3题目7:运动会分数统计3题目8:文学研究助手问题4题目9:银行业务模拟与离散事件模拟4题目10:学生信息管理系统任务(用顺序表/链表)5题目11:文章编辑功能6题目12:实验室管理6题目13:二叉树的基本操作(建立、求二叉树树深度、遍历)6题目14:纸牌游戏任务7题目15:算术表达式求值7题目16:内部排序算法比较7题目17:哈夫曼树的构造和哈夫曼编码/译码8题目18:构造可以使n个城市连接的最小生成树9题目19:交通咨询系统中的最短路径9题目20:集合的交、并、差运算9题目21:长整数四则运算9题目22:机订票系统10题目23:图书管理系统10题目24:哈希表应用11题目25:模拟旅馆管理系统的一个功能床位的分配与回收12题目26:地图着色问题12题目27:俄罗斯套娃问题12题目28:扫雷13题目29:用C语言设计一个日历系统14题目1:设计一元多项式计算【任务要求】(1)能够按照指数降序排列建立并输出多项式;(2)能够完成两个多项式的相加、相减,并将结果输入;实现提示:可选择带头结点的单向循环链表或单链表存储多项式,头结点可存放多项式的参数,如项数等。要求:在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图) 、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;【测试数据】 自行选择题目2:链表应用1【任务要求】实现两个链表的合并基本功能要求:(1)建立两个链表A和B,链表元素个数分别为m和n个。(2)假设元素分别为(x1,x2,xm),和(y1,y2, yn)。把它们合并成一个线形表C,使得:当m=n时,C=x1,y1,x2,y2,xn,yn,xm当nm时,C=y1,x1,y2,x2,ym,xm,yn输出线性表C(3) 用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。【测试数据】1) A表(30,41,15,12,56,80)B表(23,56,78,23,12,33,79,90,55)2) A表(30,41,15,12,56,80,23,12,34)B表(23,56,78,23,12)题目3:链表应用2【问题描述】已知非空线性链表第一个链结点的指针为list,写出下列各项操作的算法程序。(1)逆转该线性链表;(2)删除线性链表中从左往右第一个数据为data的链结点;(3)删除从第I个链结点开始的连续k个结点。【任务要求】设计一组输入数据并编写完整的程序。调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果。【提示】1)逆转一个链表是指在不增加新结点的前提下,依次改变链表中结点的连接方向。2)删除数据结点时,首先判断链表是否为空,若非空,先判断第一个结点是否满足条件,若是则删除;否则从第二个结点开始顺序查找,直到找到为止,然后删除;对任何不满足条件的情况都报告相应提示信息。3)从第I个结点开始连续删除k个结点时,考虑以下两种情况:当I=1时,从第一个开始删除即可;当I1时,先找到前一个结点然后再连续删除K个结点。最后释放各个结点空间。【测试数据】 自行设定题目4:通讯录【问题描述】 该设计采用菜单作为应用程序的主要界面,用控制语句来改变程序执行的顺序,控制语句是实现结构化程序设计的基础。该设计的任务是利用一个简单实用的菜单,通过菜单单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。通讯者所包含信息请自行设定【任务要求】 菜单内容:(0)通讯录链表的建立(1)通讯者结点的插入(2)通讯者结点的查询(3)通讯者结点的删除(4)通讯录链表的输出(5)退出管理系统设计要求:使用05来选择菜单项,其他输入则不起作用。功能函数设计5个不同功能的算法实现编程题,目的是练习利用链表结构来解决实际应用问题的能力,进一步理解和熟悉线形表的链式存储结构。【测试数据】自行设定,注意边界等特殊情况。 题目6:约瑟夫环 【问题描述】编号是1,2,,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。【任务要求】利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。输入数据:输入m的初值,n ,输入每个人的密码,建立单循环链表。输出形式:建立一个输出函数,将正确的输出序列【测试数据】m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4。题目7:运动会分数统计【问题描述】 参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)【任务要求】 功能要求:1).可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号、学校总分、男女团体总分排序输出;4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整型界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;【测试数据】1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;题目9:银行业务模拟与离散事件模拟【问题描述】假设某银行有4个窗口对外接待客户,从早晨银行开门(开门9:00am,关门5:00pm)起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户(建议:客户进入时间使用随机函数产生),如果某个窗口的业务员正空闲,则可上前办理业务;反之,若4个窗口均有窗户所占,他便会排在人数最少的队伍后面。【任务要求】编制一个程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。建议有如下设置:客户到达时间随机产生,一天客户的人数设定为100人。银行业务员处理时间随机产生,平均处理时间10分钟。将一天的数据(包括业务员和客户)以文件方式输出。【测试数据】由随机数产生器生成题目13:二叉树的基本操作(建立、求二叉树树深度、遍历)【任务要求】要求输入二树的各个结点,求二叉树的树深度,并能够输出指定遍历方式(层序、先序、中序、后序)的遍历序列;分别建立;建立二叉树存储结构的的输入函数、求二叉树的树深度的函数、遍历序列的函数层序遍历(用队列的方法实现)中序遍历( 用递归和非递归的方法一起都实现)先序遍历( 用递归和非递归的方法一起都实现)后序遍历( 用递归和非递归的方法一起都实现)题目14:纸牌游戏任务【问题描述】编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;.再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?【任务要求】采用合适的数据结构输出最后正面向上的牌,并将以252奇数翻牌的过程显示出来题目15:算术表达式求值【问题描述】在计算机中,算术表达式由常量、变量、运算符和括号组成。由于不同的运算符具有不同的优先级,又要考虑括号,因此,算术表达式的求值不可能严格地从左到右进行。因而在程序设计时,借助栈实现。【任务要求】算法输入:一个算术表达式,由常量、变量、运算符和括号组成(以字符串形式输入)。为简化,规定操作数只能为正整数,操作符为+、-*、/,用#表示结束。算法输出:表达式运算结果。算法要点:设置运算符栈和运算数栈辅助分析算符优先关系。在读入表达式的字符序列的同时,完成运算符和运算数的识别处理,以及相应运算。题目16:内部排序算法比较【问题描述】编制一个演示内部排序算法比较的程序。利用随机函数产生30000个随机整数,利用冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序等排序方法进行排序,并统计每一种排序上机所花费的时间。【任务要求】算法输入:以菜单的形式选择排序方法算法输出:不同情况下关键字参加的比较次数和关键字的移动次数,每一种排序上机所花费的时间。算法要点:(1)利用随机函数产生30000个随机整数。(2)利用不同排序方法排序并统计两类次数,列表显示(3)程序以对话方式执行。题目17:哈夫曼树的构造和哈夫曼编码/译码【问题描述】利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。【任务要求】一个完整的系统应具有以下功能:I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。E:编码(Encoding)。利用以建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。D:译码(Decoding)。利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。P:打印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。T:打印哈夫曼树(Tree Printing)。将已在内存中的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。【测试数据】利用教科书P169第15题中的数据调试程序。用下表给出的字符集和频度的实际统计数据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”。字符空格ABCDEFGHIJKL
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号