数据结构C语言综合训练习题集.docx
《数据结构C语言综合训练习题集.docx》由会员分享,可在线阅读,更多相关《数据结构C语言综合训练习题集.docx(137页珍藏版)》请在冰点文库上搜索。
数据结构C语言综合训练习题集
序号
工程名称
任务描述
设计要求
每组学生人数
1.
订票系统
任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况<数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
确定航班是否满仓);
可以查询某个航线的情况<如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,
可以输入起飞抵达城市,查询飞机航班情况;
订票:
<订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
2.
用Haffman编码压缩文件
准备一个文件,统计该文件中各种字符的频率,对各字符进行Huffman编码,将该文件翻译成Huffman编码文件,再将Huffman编码文件翻译成源文件。
3.
统计C程序中关键字的频率
扫描一个C源程序,用Hash表存储该程序中出现的关键字,并统计该程序中的关键字出现频度。
用线性探测法解决Hash冲突。
设Hash函数为:
Hash(key>=[(key的第一个字母序号>*100+(key的最后一个字母序号>]MOD37
4.
商品管理系统
以链表结构的有序表表示某商场家电部的库存模型,当有提货或进货时需要对该链表及时进行维护,每个工作日结束以后,将该链表中的数据以文件形式保存,每日开始营业之前,须将文件形式保存的数据恢复成链表结构的有序表。
链表结构的数据域包括家电名称、品牌、单价和数量,以单价的升序体现链表的有序性。
程序功能包括:
初始化、创建表、插入、删除、更新数据、查询及链表数据与文件之间的转换等。
5.
排序算法效率比较
编程实现插入、希尔、快速、堆排序、归并排序算法,并计算每种算法的比较、交换次数。
将待排数据从磁盘文件读入,实施排序后将数据写入另一个文件中。
6.
管道铺设施工的最佳方案选择
N(N>10>个居民之间需要铺设煤气管道。
假设任意两个居民之间都可以铺设煤气管道,但代价不同。
事先将任意两个居民之间铺设煤气管道的代价存入磁盘文件中。
设计一个最佳方案使得这N个居民之间铺设煤气管道所需代价最少,并希望以图形方式在屏幕上输出结果。
7.
建立Haffman树并查询
对文件file1.txt中的姓名按姓氏进行统计,计算每个姓氏出现的概率,并生产Haffman树,用另一个文件file2.txt中的姓氏在Haffman树中查询,得出查询完成所用的时间;在file1.txt中查询file2.txt中姓氏,得出查询完成所用的时间,对两者进行对比,得出结论并写进论文。
8.
校园导游咨询
1>、功能描述:
设计你的学校的校园平面图,所含景点不少于10个。
以图中顶点表示学校各景点,存放景点名称,代号,简介等信息;以边表示路径,存放路径长度等相关信息。
2>、为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
3>、为来访客人提供图中任意景点相关信息的查询。
测试数据:
由读者根据实际情况指定。
实现提示:
一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网,顶点和边均含有相关信息。
9.
网络检查
1>.问题描述
从文件中读入一个计算机网络以及机器间的双向连线列表,每一条连线允许两端的计算机进行直接的文件传输,其他计算机间若存在一条连通路径,也可以进行间接的文件传输。
请写出程序判断:
任意指定两台计算机,它们之间是否可以进行文件传输?
2>.基本要求
<1)输入要求:
输入若干测试数据组成。
对于每一组测试,第1行包含一个整数N<≤10000),即网络中计算机的总台数,因而每台计算机可用1到N之间的一个正整数表示。
接下来的几行输入格式为IC1C2或者C或者CC1C2或者S,其中C1和C2是两台计算机的序号,I表示在C1和C2间输入一条连线,C表示检查C1和C2间是否可以传输文件,S表示该组测试结束。
当N为0时,表示全部测试结束,不要对该数据做任何处理。
<2)输出要求:
对每一组C开头的测试,检查C1和C2间是否可以传输文件,若可以,则在一行中输出“yes”,否则输出“no”。
当读到S时,检查整个网络。
若网络中任意两机器间都可以传输文件,则在一行中输出“Thenetworkisconnected.”,否则输出“Therearekcomponents.”,其中k是网络中连通集的个数。
两组测试数据之间请输出一空行分隔。
10.
产品进销存管理系统
问题描述:
针对某一种行业的库房的产品进销存情况进行管理。
基本要求:
1.采用一定的存储结构对库房的货品及其数量进行分类管理;
2.可以进行产品类的添加、产品的添加、产品数量的添加;
能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;
11.
二叉排序树的实现
用顺序和二叉链表作存储结构
1>以回车('\n'>为输入结束标志,输入数列L,生成一棵二叉排 序树T;
2>对二叉排序树T作中序遍历,输出结果;
3>输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2>;否则输出信息“无x”;
12.
图书管理系统
【问题描述】
设计一个计算机管理系统完成图书管理基本业务。
【基本要求】
1>每种书的登记内容包括书号、书名、著作者、现存量和库存量;
2>对书号建立索引表<线性表)以提高查找效率;
3>系统主要功能如下:
*采编入库:
新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;
*借阅:
如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;
*归还:
注销对借阅者的登记,改变该书的现存量。
【进一步完成内容】
1>系统功能的进一步完善;
2>索引表采用树表。
3>设计内容
4>程序流程图
5>源程序
6>软件测试报告<包括所用到的数据及结果)
13.
散列表的设计与实现
【问题描述】
设计散列表实现电话号码查找系统。
【基本要求】
1>设每个记录有下列数据项:
电话号码、用户名、地址;
2>从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;
3>采用一定的方法解决冲突;
4>查找并显示给定电话号码的记录;
5>查找并显示给定用户名的记录。
【进一步完成内容】
1>系统功能的完善;
2>设计不同的散列函数,比较冲突率;
3>在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。
14.
利用栈求表达式的值,可供小学生作业,并能给出分数
要求:
建立试卷库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价
15.
二叉平衡排序树
问题描述:
从一棵空树开始创建,在创建过程中,保证树的有序性,同时还要针对树的平衡性做些调整。
最终要把创建好的二叉排序树转换为二叉平衡排序树。
基本要求:
1>.创建<插入、调整、改组)
2>.输出
16.
算术表达式的求解
问题描述:
给定一个算术表达式,通过程序求出最后的结果。
基本要求:
1.从键盘输入要求解的算术表达式;
2.采用栈结构进行算术表达式的求解过程;
3.能够判断算术表达式正确与否;
4.对于错误表达式给出提示;
5.对于正确的表达式给出最后的结果;
17.
关键路径问题
问题描述:
设计一个程序求出完成整项工程至少需要多少时间以及整项工程中的关键活动。
基本要求:
<1)对一个描述工程的AOE网,应判断其是否能够顺利进行。
<2)若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、最早发生时间、最迟发生时间。
18.
客户消费积分管理系统
问题描述:
针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。
基本要求:
1.采用一定的存储结构进行客户信息的存储;
2.对客户的信息可以进行修改、删除、添加;
3.能够根据消费情况进行客户积分的计算;
4.根据积分情况实行不同程度的打折优惠;
19.
构造可以使n个城市连接的最小生成树
问题描述:
给定一个地区的n个城市间的距离网,用Prim算法或Kruskal算法建立最小生成树,并计算得到的最小生成树的代价。
基本要求:
1、城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。
要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价。
2、表示城市间距离网的邻接矩阵<要求至少6个城市,10条边)
3、最小生成树中包括的边及其权值,并显示得到的最小生成树的代价。
20.
线索二叉树的应用
要求:
实现线索树建立、插入、删除、恢复线索的实现。
21.
树的应用
要求:
实现树与二叉树的转换的实现。
以及树的前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现。
22.
图的遍历的实现
1>先任意创建一个图;
2>图的DFS,BFS的递归和非递归算法的实现
3>要求用有向图和无向图分别实现
4>要求用邻接矩阵、邻接表多种结构存储实现
23.
二叉树遍历
要求:
遍历的内容应是千姿百态的。
树与二叉树的转换的实现。
以及树的前序、后序的递归、非递归遍历算法,层次序的非递归遍历算法的实现,应包含建树的实现。
要求:
遍历的内容应是千姿百态的。
24.
哈夫曼编码/译码器
【问题描述】
设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下工程,直到选择退出为止。
【基本要求】
1>将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中>
2>分别采用动态和静态存储结构
3>初始化:
键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树;
4>编码:
利用建好的哈夫曼树生成哈夫曼编码;
5>输出编码;
6>设字符集及频度如下表:
字符空格ABCDEFGHIJKLM
频度1866413223210321154757153220
字符NOPQRSTUVWXYZ
频度5763151485180238181161
【进一步完成内容】
1>译码功能;
2>显示哈夫曼树;
3>界面设计的优化
25.
背包问题的求解
假设有一个能装入总体积为T的背包和n件体积分别为w1,w2,…,wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+…+wn=T,要求找出所有满足上述条件的解。
例如:
当T=10,各件物品的体积{1,8,4,3,5,2}时,可找到下列4组解:
<1,4,3,2)
<1,4,5)
<8,2)
<3,5,2)
提示:
可利用回溯法的设计思想来解决背包问题。
首先将物品排成一列,然后顺序选取物品装入背包,假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品,若该件物品"太大"不能装入,则弃之而继续选取下一件,直至背包装满为止。
但如果在剩余的物品中找不到合适的物品以填满背包,则说明"刚刚"装入背包的那件物品"不合适",应将它取出"弃之一边",继续再从"它之后"的物品中选取,如此重复,,直至求得满足条件的解,或者无解。
由于回溯求解的规则规则是"后进先出"因此自然要用到栈。
26.
运动会分数统计
任务:
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子工程,和w个女子工程。
工程编号为男子1……m,女子m+1……m+w。
不同的工程取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
功能要求:
1>可以输入各个工程的前三名或前五名的成绩;
2>能统计各学校总分,
3>可以按学校编号或名称、学校总分、男女团体总分排序输出;
4>可以按学校编号查询学校某个工程的情况;可以按工程编号查询取得前三或前五名的学校。
5>数据存入文件并能随时查询
6>规定:
输入数据形式和范围:
可以输入学校的名称,运动工程的名称
输出形式:
有合理的提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
<数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
27.
停车场管理
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端>,若车场内己停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开人;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
以桟模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:
汽车“到达“或“离去“信息、汽车牌照号码以及到达或离去的时刻。
对每一组输入数据进行操作后的输出信息为:
若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费>。
钱以顺序结构实现,队列以链表结构实现。
28.
电梯运行仿真程序
问题描述:
编写一个程序,模拟办公大楼中全部电梯的工作过程。
该仿真程序可以用来监测系统运行情况,改善大楼管理,它也可以看成是一种游戏程序。
系统初步描述:
<1)办公大楼有若干层<例如,10层),每层都有电梯可到达,全楼有若干部<例如,不多于10部)电梯同时供使用,电梯容量为24人,电梯运行每上下一层需5秒,在某一层停下至少需15秒。
其运行状态可分:
向上、向下、停止,当前乘客数,当前所在层数。
它设有一个“按钮数组”,例如第五层的按钮按下,意味着有乘客在第5层到达目标层,等等。
<2)在楼的每一层,有电梯数,有按钮表示有人等待向上或向下,由若干人在等待,有若干电梯在本层停下,等等。
<3)在大楼中<包括进出)的总人数不超过500人,每个人站在电梯前有个目标层,他有一个最大的忍受等待时间,因为他可以选择电梯或是步行走楼梯,等等。
<4)还有下面若干假设:
在每个时间段要进大楼的人数在0~199之间随机取值;
<5)用电梯的每个人的目标层在1~10之间取值;一个人在进电梯或改走楼梯之前的等待时间在180~360秒范围内随机发生;一个人到达目标层后第二次再乘电梯中间的工作时间在400~6600秒间随机取值。
基本要求:
设计出如上图所示的图形化界面,模拟电梯运行。
29.
银行业务的模拟系统
问题描述:
设计一个银行业务模拟系统,模拟银行的业务运行并计算一天中客户在银行逗留的平均时间。
银行有N由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务;反之,若N个窗口均有客户所占,他便会排在人数最少的队伍后面。
基本要求:
<1)在界面上可以设定银行的对外营业时间<银行的开门时间以及银行的关门时间)。
<2)用人机交互的方式来输入客户的到达时间以及客户的离开时间,用队列来存储客户的到达事件和客户的离开事件。
<3)可以友好的显示出在某一天中整个银行系统中客户在银行逗留的平均时间。
30.
哈希表的设计与实现
问题描述:
设计一个哈希表,实现个人电话号码查询系统。
基本要求:
<1)设每个记录有下列数据项:
电话号码、用户名、用户住址;
<2)从键盘输入各记录,分别以电话号码和用户名为关键字建立哈希表;
a>设计不同的哈希函数,比较冲突率;
b>在哈希函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。
<3)查找并显示给定电话号码/用户名的记录;
31.
文件目录管理系统
问题描述:
文件是管理用户信息和应用程序的一种工具。
每个文件有唯一的文件名,可以通过文件名访问文件,同时可对文件进行生成、删除及文件名修改等操作。
文件系统对若干文件进行管理时将所有的文件目录组合在一起构成一个目录文件。
通过对目录文件的管理达到“按名存取”的目的,目录文件常采用的组织结构是树型目录结构。
基本要求:
函数功能要划分好,程序要有必要的注释。
用户通过界面菜单选择以下操作:
<注意,以下操作仅需对目录进行操作,不需要实际生成文件)
<1)生成文件,选择路径和文件名,实现对文件的生成。
<2)删除文件,对指定文件进行删除操作。
<3)修改文件,对指定文件进行内容修改或者文件名修改。
<4)输出该目录结构。
32.
身份证管理程序
该程序应该具有下列功能:
(1>通过键盘可以输入身份证信息,大量信息可存放在文件中。
身份证包含的信息请参看自己的身份证;
(2>给定身份证号码,显示其身份证信息;
(3>给定省份的编号,显示该省的人数;
(4>给定某区的编号,显示该区的人数;
(5>给定身份证号码,可以修改该身份证信息;
(6>给定身份证号码,可以删除该身份证信息;
提供一些统计各类信息的功能。
例如男女的人数、比例;以及哪年、哪月、哪日出生的人数等。
界面要合理。
33.
期刊论文管理程序
该程序应该具有下列功能:
(1>通过键盘输入某期刊论文的信息,也可以把大量期刊论文信息放在文件中;
(2>给定期刊论文的论文名称,显示该论文的作者信息,作者单位,发表期刊的名称;
(3>给定作者姓名,显示所有该作者发表的期刊论文情况;
(4>给定期刊名称,显示该期刊的所有论文信息;
提供一些统计各类信息的功能。
例如某人发表论文的个数,某期刊出版论文的个数等。
34.
哈夫曼编码
问题描述:
利用哈夫曼编码,实现压缩和解压缩。
基本要求:
对于给定的一组字符,可以根据其权值进行哈夫曼编码,并能输出对应的哈夫曼树和哈夫曼编码;实现哈夫曼解码。
提高要求:
(1>能够分析文件,统计文件中出现的字符,统计字符出现的概率,再对文件进行编码,实现文件的压缩和解压缩。
(2>能够对于文件的压缩比例进行统计。
完成任务描述中的各种功能,自己可以适当增加必要的功能。
35.
约瑟夫环问题
功能:
设编号为1,2,3,……,n的n(n>0>个人按顺时针方向围坐一圈,每个人持有一个正整数密码。
开始时任选一个正整数做为报数上限m,从第一个人开始顺时针方向自1起顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的下一个人开始重新从1报数。
如此下去,直到所有人全部出列为止。
令n最大值取30。
要求设计一个程序模拟此过程,求出出列编号序列。
要求:
用数组和链表分别实现。
m和n的值可以由键盘输入。
36.
学生宿舍管理查询软件
设计一个简单的学生宿舍管理查询程序,要求根据菜单处理相应功能。
<1)建立数据文件,数据文件按关键字<姓名、学号、房号)进行排序
<2)查询菜单:
(可以用二分查找实现以下操作>
A.按姓名查询
B.按学号查询
C.按房号查询等
<3)可以打印任一查询结果
<4)每个学生的信息包括:
序号、学号、性别、房号、楼号等;
排序方法任选。
基本功能为:
建立文件、增加学生宿舍记录、删除/修改、查询学生宿舍记录。
37.
学生成绩管理系统
现有学生成绩信息文件1<1.txt),内容如下学生成绩信息文件2<2.txt),内容如下:
姓名学号语文数学英语姓名学号语文数学英语
张明明01677882陈果31576882
李成友02789188李华明32889068
张辉灿03688256张明东33484256
王露04564577李明国34504587
陈东明05673847陈道亮35475877
----------------------------------
试编写一管理系统,要求如下:
1>实现对两个文件数据的合并,生成新文件3.txt
2>抽取出三科成绩中有补考的学生并保存在一个新文件4.txt
3>对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现>
4>输入一个学生姓名后,能查找到此学生的信息并输出结果
要求使用结构体链表或数组等实现上述要求.
38.
家电销售系统
用链式结构建立有序表,结点的数据域应该包括家电名称、品牌型号、单价以及数量,以结点中单价的递增顺序排列。
日常的维护操作应该包括初始化,创建链表,插入,删除,更新数据,打印,查询。
界面安排合理,提示信息完善。
39.
图书管理系统
基本业务活动包括:
对新书的采编入库、清除库存、借阅和归还等等。
图书的基本信息:
图书编号,出版社,作者信息,定价,图书名称等。
完成任务描述中的各种功能,自己可以适当增加必要的功能。
40.
文本编辑系统
<1)分别统计出其中英文字母数和空格数及整篇文章总字数;
<2)统计某一字符串在文章中出现的次数,并输出该次数;
<3)删除某一子串,并将后面的字符前移。
字串可以任意输入。
完成任务描述中的各种功能,自己可以适当增加必要的功能。
41.
通讯录管理系统
问题描述:
编写一个通讯录管理系统。
本系统应完成以下几方面的功能:
1>输入信息——enter(>。
2>显示信息———display(>。
3>查找以姓名作为关键字search(>。
4>删除信息———delete(>。
5>存盘———save(>。
6>装入———load(>。
要求:
<1>每条信息应包含:
姓名邮编作为一个完整的系统,应具有友好的界面和较强的容错能力
42.
求任一表达式的值
主要是加减乘除的运算,利用栈的思想对表达式求值。
要掌握运算符的优先级等,按照运算符的优先级进行判断。
有进栈、出栈、判断栈顶元素等操作。
43.
订票系统
录入:
可以录入航班情况<数据可以存储在一个数据文件中,数据结构、具