数据结构与C语言综合训练测验集.docx
《数据结构与C语言综合训练测验集.docx》由会员分享,可在线阅读,更多相关《数据结构与C语言综合训练测验集.docx(53页珍藏版)》请在冰豆网上搜索。
数据结构与C语言综合训练测验集
序号
项目名称
任务描述
设计要求
1.
订票系统
任务:
通过此系统可以实现如下功能:
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
确定航班是否满仓);
可以查询某个航线的情况(如:
输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣)
可以输入起飞抵达城市,查询飞机航班情况等(可以自己设定合理的查询条件);
订票:
(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量,航班情况,订单要有编号。
修改航班信息:
当航班信息改变可以修改航班数据文件
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
2.
用Haffman编码压缩文件
准备一个字符文件,要求:
1、统计该文件中各种字符的频率;
2、对各字符进行Huffman编码,显示每个字符的编码;
3、以及将该文件翻译成Huffman编码文件;
4、再将Huffman编码文件翻译成源文件;
5、显示每个字符以一个字节进行二进制编码后的编码文件;
6、以3和5的结果分析Haffman编码的优缺点。
3.
商品管理系统
以链表结构的有序表表示某商场家电部的库存模型,当有提货或进货时需要对该链表及时进行维护,每个工作日结束以后,将该链表中的数据以文件形式保存,每日开始营业之前,须将文件形式保存的数据恢复成链表结构的有序表。
链表结构的数据域包括家电名称、品牌、单价和数量等信息,程序功能包括:
初始化、创建表、插入、删除、更新数据、查询、排序及链表数据与文件之间的转换等。
4.
产品进销存管理系统
问题描述:
针对某一种行业的库房的产品进销存情况进行管理。
基本要求:
1.采用一定的存储结构对库房的货品及其数量等进行分类管理;
2.可以进行产品类的添加、产品的添加、产品数量的添加;
能够查询库房每种产品的总量、进货日期、销出数量、销售时间等;
5.
二叉排序树的实现
用顺序和二叉链表作存储结构
1)以回车('\n')为输入结束标志,输入数列L,生成一棵二叉排 序树T;
2)对二叉排序树T作中序遍历,输出结果;
3)输入元素x,查找二叉排序树T,若存在含x的结点,则删除该结点,并作中序遍历(执行操作2);否则输出信息“无x”;
6.
图书管理系统
【问题描述】
设计一个计算机管理系统完成图书管理基本业务。
【基本要求】
1)每种书的登记内容包括书号、书名、作者、现存量和库存量;
2)对书号建立索引表(线性表)以提高查找效率;
3)系统主要功能如下:
*采编入库:
新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;
*借阅:
如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;否则给出提示信息。
*归还:
若不过期,注销对借阅者的登记,改变该书的现存量。
否则给出过期天数及罚款数额。
【进一步完成内容】
1)系统功能的进一步完善;
2)索引表采用树表。
3)设计内容
4)程序流程图
5)源程序
6)软件测试报告(包括所用到的数据及结果)
7.
散列表的设计与实现
【问题描述】
设计散列表实现电话号码查找系统。
【基本要求】
1)设每个记录有下列数据项:
电话号码、用户名、地址等信息;
2)从文件读入各记录,分别以电话号码和用户名为关键字建立散列表;
3)采用一定的方法解决冲突;
4)查找并显示给定电话号码的记录;
5)查找并显示给定用户名的记录。
【进一步完成内容】
1)系统功能的完善;
2)设计不同的散列函数,比较冲突率;
3)在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。
8.
二叉平衡排序树
问题描述:
从一棵空树开始创建,在创建过程中,保证树的有序性,同时还要针对树的平衡性做些调整。
最终要把创建好的二叉排序树转换为二叉平衡排序树。
基本要求:
1).创建(插入、调整、改组)
2).输出
9.
算术表达式的求解
问题描述:
给定一个算术表达式,通过程序求出最后的结果。
基本要求:
1.从键盘输入要求解的算术表达式;
2.采用栈结构进行算术表达式的求解过程;
3.能够判断算术表达式正确与否;
4.对于错误表达式给出提示;
5.对于正确的表达式给出最后的结果;
10.
.客户消费积分管理系统
问题描述:
针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。
基本要求:
1.采用一定的存储结构进行客户信息的存储;
2.对客户的信息可以进行添加、修改、删除;
3.能够根据消费情况进行客户积分的计算;
4.根据积分情况实行不同程度的打折优惠;
11.
线索二叉树的应用
要求:
实现线索树建立、插入、删除、恢复线索的实现。
12.
树的应用
要求:
实现树与二叉树的转换的实现。
以及二叉树的前序、后序的递归、非递归算法,层次序的非递归算法的实现,应包含建树的实现。
13.
图的遍历的实现
1)先任意创建一个图;
2)图的DFS,BFS的递归和非递归算法的实现
3)要求用有向图和无向图分别实现
4)要求用邻接矩阵、邻接表多种结构存储实现
14.
运动会分数统计
任务:
参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:
7、5、3、2、1,前三名的积分分别为:
5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)
功能要求:
1)可以输入各个项目的前三名或前五名的成绩;
2)能统计各学校总分,
3)可以按学校编号或名称、学校总分、男女团体总分排序输出;
4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
5)数据存入文件并能随时查询
6)规定:
输入数据形式和范围:
可以输入学校的名称,运动项目的名称
输出形式:
有合理的提示,各学校分数为整形
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
15.
停车场管理系统
设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内己停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
要求:
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:
汽车“到达“或“离去“信息、汽车牌照号码以及到达或离去的时刻。
对每一组输入数据进行操作后的输出信息为:
若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
16.
银行业务的模拟系统
问题描述:
设计一个银行业务模拟系统,模拟银行的业务运行并计算一天中客户在银行逗留的平均时间。
银行有N(N的取值自己定义)个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。
由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务;反之,若N个窗口均有客户所占,他便会排在人数最少的队伍后面。
基本要求:
(1)在界面上可以设定银行的对外营业时间(银行的开门时间以及银行的关门时间)。
(2)用人机交互的方式来输入客户的到达时间以及客户的离开时间,用队列来存储客户的到达时间和客户的离开时间。
(3)可以友好的显示出在某一天中整个银行系统中客户在银行逗留的平均时间。
17.
万年历查询程序。
功能要求:
(1)提供菜单方式选择
(2)输入年份、月份、日期,计算得到的是这一天据今天有多少天,星期几;
(3)输入公历的年月日,输出农历年月日。
(4)输入农历节气,输出当年农历的年月日及公历年月日。
可以假定只涉及年份是1940年到2040年。
18.
文件目录管理系统
问题描述:
文件是管理用户信息和应用程序的一种工具。
每个文件有唯一的文件名,可以通过文件名访问文件,同时可对文件进行生成、删除及文件名修改等操作。
文件系统对若干文件进行管理时将所有的文件目录组合在一起构成一个目录文件。
通过对目录文件的管理达到“按名存取”的目的,目录文件常采用的组织结构是树型目录结构。
基本要求:
函数功能要划分好,程序要有必要的注释。
用户通过界面菜单选择以下操作:
(注意,以下操作仅需对目录进行操作,不需要实际生成文件)
(1)生成文件,选择路径和文件名,实现对文件的生成。
(2)删除文件,对指定文件进行删除操作。
(3)修改文件,对指定文件进行内容修改或者文件名修改。
(4)输出该目录结构。
19.
身份证管理程序
该程序应该具有下列功能:
(1)通过键盘可以输入身份证信息,大量信息可存放在文件中。
身份证包含的信息请参看自己的身份证;
(2)给定身份证号码,显示其身份证信息;
(3)给定省份的编号,显示该省的人数;
(4)给定某区的编号,显示该区的人数;
(5)给定身份证号码,可以修改该身份证信息;
(6)给定身份证号码,可以删除该身份证信息;
提供一些统计各类信息的功能。
例如男女的人数、比例;以及哪年、哪月、哪日出生的人数等。
界面要合理。
20.
期刊论文管理程序
该程序应该具有下列功能:
(1)通过键盘输入某期刊论文的信息,也可以把大量期刊论文信息放在文件中;
(2)给定期刊论文的论文名称,显示该论文的作者信息,作者单位,发表期刊的名称;
(3)给定作者姓名,显示所有该作者发表的期刊论文情况;
(4)给定期刊名称,显示该期刊的所有论文信息;
(5)给定时间段,显示该时间段内发表的论文
提供一些统计各类信息的功能。
例如某人发表论文的个数,某期刊出版论文的个数等。
21.
学生宿舍管理查询软件
设计一个简单的学生宿舍管理查询程序,要求根据菜单处理相应功能。
(1)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序
(2)查询菜单:
(可以用二分查找实现以下操作)
A.按姓名查询
B.按学号查询
C.按房号查询等
(3)可以打印任一查询结果
(4)每个学生的信息包括:
序号、学号、性别、房号、楼号等;
排序方法任选。
基本功能为:
建立文件、增加学生宿舍记录、删除/修改、查询学生宿舍记录。
具有相应一些统计功能。
22.
学生成绩管理系统
现有学生成绩信息文件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)输入一个学生姓名后,能查找到此学生的信息并输出结果
5)可以查询统计每个分数段内的学生记录
要求使用结构体链表或数组等实现上述要求.
23.
家电销售系统
用链式结构建立有序表,结点的数据域应该包括家电名称、品牌型号、单价以及数量,以结点中单价的递增顺序排列。
日常的维护操作应该包括初始化,创建链表,插入,删除,更新数据,打印,查询。
界面安排合理,提示信息完善。
24.
图书管理系统
基本业务活动包括:
对新书的采编入库、清除库存、借阅和归还等等。
图书的基本信息:
图书编号,出版社,作者信息,定价,图书名称等。
完成任务描述中的各种功能,自己可以适当增加必要的功能。
25.
文本编辑系统
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;(采用模式匹配算法)
(3)删除某一子串,并将后面的字符前移;
(4)实现某一个字符的替换;
(5)实现某一个字符串的替换;
字串可以任意输入。
完成任务描述中的各种功能,自己可以适当增加必要的功能。
26.
通讯录管理系统
问题描述:
编写一个通讯录管理系统。
本系统应完成以下几方面的功能:
1)输入信息——enter();2)显示信息———display();
3)查找以姓名作为关键字search();4)删除信息———delete();
5)存盘———save();6)装入———load();
要求:
(1)每条信息应包含:
姓名(NAME)街道(STREET)城市(CITY)
邮编(EIP)国家(STATE)等信息。
作为一个完整的系统,应具有友好的界面和较强的容错能力
27.
求任一表达式的值
主要是加减乘除的运算,利用栈的思想对表达式求值。
要掌握运算符的优先级等,按照运算符的优先级进行判断。
有进栈、出栈、判断栈顶元素等操作。
28.
订票系统
录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况等多种查询功能。
增加、删除、修改航班信息等
完成任务描述中的各种功能,自己可以适当增加必要的功能。
29.
字符串操作
编写程序,不使用标准库函数,实现字符串的拷贝、拼接、字串查找、长度计算等函数。
(1)在不使用相关的标准库函数的情况下,完成本任务;
(2)实现两个字符串拼接的函数strcat(str1,str2);
(3)实现字符串拷贝的函数strcpy(str1,str2);
(4)实现字符串查找的函数strcstr(str1,str2);
(5)实现字符串长度计算的函数strlen(str1);
(6)实现字符串查找字符的函数strcchar(str1,c);
(7)实现字符串替换的函数strcreplacestr(str1,str2,str3);
(8)实现字符串替换字符的函数strcreplacechar(str1,str2,c);
(9)实现字符串逆转的函数strrev(str)。
完成任务描述中的各种功能,自己可以适当增加必要的功能。
30.
集合操作
用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、差运算。
(1)用单链表存放集合中的元素,链表中的元素按大小存放;
(2)实现集合加入一个元素删除一个元素的元素操作;
(3)实现集合的交、并、差集合操作;
完成任务描述中的各种功能,自己可以适当增加必要的功能。
31.
歌手比赛系统
设计一个简单的歌手比赛成绩管理程序,对一次歌手比赛的成绩进行管理
功能要求:
1.输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
2.显示主菜单如下:
1)输入选手数据(可以从文件中读取)2)评委打分3)成绩排序(按平均分)4)数据查询5)追加学生数据6)写入数据文件7)退出系统
完成任务描述中的各种功能,自己可以适当增加必要的功能。
32.
小学生测验系统
面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”
80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRYAGAIN”
33.
字符串操作
编写程序,不使用标准库函数,实现字符串的拷贝、拼接、字串查找、长度计算、拆分、等函数。
(1)在不使用相关的标准库函数的情况下,完成本任务;
(2)实现两个字符串拼接的函数strcat(str1,str2);
(3)实现字符串拷贝的函数strcpy(str1,str2);
(4)实现字符串查找的函数strcstr(str1,str2);
(5)实现字符串长度计算的函数strlen(str1);
(6)实现字符串查找字符的函数strcchar(str1,c);
(7)实现字符串替换的函数strcreplacestr(str1,str2,str3);
(8)实现字符串替换字符的函数strcreplacechar(str1,str2,c);
(9)实现字符串拆分函数strsplit(str1,c,str[])
34.
万年历查询程序。
实现万年历程序
功能要求:
(1)提供菜单方式选择,假定输入的年份在1940-2040年之间。
(2)输入一个年份,输出是在屏幕上显示该年的日历。
(3)输入年月,输出该月的日历。
如:
(4)输入年份、月份、日期,计算得到的是这一天据今天有多少天,星期几;
(5)输入公历的年月日,输出农历年月日。
(6)输入农历节气,输出当年农历的年月日及公历年月日。
可以假定只涉及年份是1940年到2040年。
35.
订票系统
实现一个简单的订票系统
基本要求:
(1)录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
(2)查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
(3)可以输入起飞抵达城市,查询飞机航班情况;
(4)订票:
(订票情况可以存在一个数据文件中,结构自己设定),可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:
可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号;
(5)修改航班信息:
当航班信息改变可以修改航班数据文件。
36.
个人电话号码查询系统
实现简单的个人电话号码查询系统,根据用户输入的信息(如姓名,身份证号,电话号码、邮件地址等)进行快速查询。
基本要求:
(1)插入:
实现将用户的信息插入到系统中;
(2)删除:
删除某个用户的信息;
(3)修改:
修改某个用户的信息;
(4)查询:
根据姓名、身份证号等查询用户信息(包括简单条件查询,组合条件查询、模糊查询等);
(5)排序:
对于用户信息进行排序,提高查询速度;
(6)输出:
输出用户信息。
提示:
(1)在内存中,设计数据结构存储电话号码的信息;在外存中,利用文件的形式来保存电话号码信息,系统运行时,将电话号码信息从文件调入内存来进行插入、查找等操作。
(2)如果数据的插入、删除频繁,可以考虑采取二叉排序树组织电话号码信息(也可采用较复杂的平衡二叉树),可以提高查找和维护的时间性能。
(3)选择不同的排序和查找算法,尽可能提高查找和维护性能。
37.
数组编码和解码问题的求解设计与实现
设有一个数组A:
array[0..N-1];存放的元素为0-N-1(1。
例如当N=6时,有:
A=(4,3,0,5,1,2)。
此时,数组A的编码定义如下:
A[0]编码为0;
A[i]编码为:
在A[0],A[1],…,A[i-1]中比A[i]的值小的个数(i=1,2,…,N-1)
上面数组A的编码为:
B=(0,0,0,3,1,2)
要求如下:
(1)给出数组A,利用B求解A的编码.
给出数组A的编码后,求出A中原数据。
38.
通讯录的制作
本系统应完成一下几方面的功能:
①输入信息:
调用此函数用以输入数据到内存中,此过程包括建立相应的链表或相应的数组,便于读取
②显示信息:
用以显示输入的数据,包括从内存中读出和从磁盘中读出
③查找:
以姓名作为关键字查找要找的信息
④删除信息:
用以删除选定的输入信息(姓名作为关键字)
⑤存盘:
调用此函数将内存中的数据保存至磁盘中
⑥装入:
调用此函数用以将之前保存在磁盘的内容读入到内存中或显示到屏幕上。
注:
本课题中输入的数据应包括以下几项信息:
姓名、学校、城市、邮编、国家。
39.
二叉树遍历算法的实现
四种算法都是前序、中序、后序三种算法要求递归和非递归实现,层遍历用非递归实现。
40.
n元多项式乘法
(1)界面友好,函数功能要划分好
(2)总体设计应画一流程图
(3)程序要加必要的注释
(4)要提供程序测试方案
(5)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
41.
学生成绩管理程序
设计一个简单的学生成绩管理程序,要求根据菜单处理相应功能。
(1)管理功能包括列表、求平均成绩、查找最高分等。
(2)可按指定的性别或高于指定的个人平均分来筛选列表;
(3)可按平均成绩排序;
(4)平均成绩可按个人或科目进行;
(5)查找可按最高个人平均分进行,或按指定科目的最高分进行;
(6)每个学生的信息包括:
序号、学号、性别、成绩1、成绩2、成绩3、成绩4;
(7)基本功能为:
建立文件、增加学生记录、新建学生信息文件、删除/修改学生记录。
42.
数组操作
设计菜单处理程序,对一维数组进行不同的操作。
(1)操作项目包括求数组最大值、最小值、求和、求平均值、排序、二分查找、有序插入;
(2)设计并利用字符菜单进行操作项目的选择,程序一次运行可根据选择完成一项或多项操作;通过菜单“退出”来结束程序的运行;