数据结构C语言综合训练习题集29203.docx

上传人:b****6 文档编号:4273695 上传时间:2022-11-28 格式:DOCX 页数:90 大小:72.97KB
下载 相关 举报
数据结构C语言综合训练习题集29203.docx_第1页
第1页 / 共90页
数据结构C语言综合训练习题集29203.docx_第2页
第2页 / 共90页
数据结构C语言综合训练习题集29203.docx_第3页
第3页 / 共90页
数据结构C语言综合训练习题集29203.docx_第4页
第4页 / 共90页
数据结构C语言综合训练习题集29203.docx_第5页
第5页 / 共90页
点击查看更多>>
下载资源
资源描述

数据结构C语言综合训练习题集29203.docx

《数据结构C语言综合训练习题集29203.docx》由会员分享,可在线阅读,更多相关《数据结构C语言综合训练习题集29203.docx(90页珍藏版)》请在冰豆网上搜索。

数据结构C语言综合训练习题集29203.docx

数据结构C语言综合训练习题集29203

序号

工程名称

任务描述

设计要求

1.

身份证管理程序

该程序应该具有下列功能:

(1>通过键盘可以输入身份证信息,大量信息可存放在文件中。

身份证包含的信息请参看自己的身份证;

(2>给定身份证号码,显示其身份证信息;

(3>给定省份的编号,显示该省的人数;

(4>给定某区的编号,显示该区的人数;

(5>给定身份证号码,可以修改该身份证信息;

(6>给定身份证号码,可以删除该身份证信息;

提供一些统计各类信息的功能。

例如男女的人数、比例;以及哪年、哪月、哪日出生的人数等。

界面要合理。

2.

期刊论文管理程序

该程序应该具有下列功能:

(1>通过键盘输入某期刊论文的信息,也可以把大量期刊论文信息放在文件中;

(2>给定期刊论文的论文名称,显示该论文的作者信息,作者单位,发表期刊的名称;

(3>给定作者姓名,显示所有该作者发表的期刊论文情况;

(4>给定期刊名称,显示该期刊的所有论文信息;

提供一些统计各类信息的功能。

例如某人发表论文的个数,某期刊出版论文的个数等。

3.

哈夫曼编码

问题描述:

利用哈夫曼编码,实现压缩和解压缩。

基本要求:

对于给定的一组字符,可以根据其权值进行哈夫曼编码,并能输出对应的哈夫曼树和哈夫曼编码;实现哈夫曼解码。

提高要求:

(1>能够分析文件,统计文件中出现的字符,统计字符出现的概率,再对文件进行编码,实现文件的压缩和解压缩。

(2>能够对于文件的压缩比例进行统计。

完成任务描述中的各种功能,自己可以适当增加必要的功能。

4.

运动会分数统计

任务:

参加运动会有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、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;

5.

背包问题的求解

假设有一个能装入总体积为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件物品,若该件物品"太大"不能装入,则弃之而继续选取下一件,直至背包装满为止。

但如果在剩余的物品中找不到合适的物品以填满背包,则说明"刚刚"装入背包的那件物品"不合适",应将它取出"弃之一边",继续再从"它之后"的物品中选取,如此重复,直至求得满足条件的解,或者无解。

由于回溯求解的规则规则是"后进先出"因此自然要用到栈。

6.

客户消费积分管理系统

问题描述:

针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。

基本要求:

1.采用一定的存储结构进行客户信息的存储;

2.对客户的信息可以进行修改、删除、添加;

3.能够根据消费情况进行客户积分的计算;

根据积分情况实行不同程度的打折优惠;

7.

家电销售系统

用链式结构建立有序表,结点的数据域应该包括家电名称、品牌型号、单价以及数量,以结点中单价的递增顺序排列。

日常的维护操作应该包括初始化,创建链表,插入,删除,更新数据,打印,查询。

界面安排合理,提示信息完善。

8.

图书管理系统

基本业务活动包括:

对新书的采编入库、清除库存、借阅和归还等等。

图书的基本信息:

图书编号,出版社,作者信息,定价,图书名称等。

完成任务描述中的各种功能,自己可以适当增加必要的功能。

9.

对链表进行整理的系统

通过此系统可以实现如下功能:

1、系统以菜单方式工作;

2、输入相应的数据,能生成节点并保存在单链表里;

3、相应的菜单操作,能剔除链表中数值域相同的节点;

4、相应的菜单操作,能将节点按照数值域的大小顺序排序;

5、相应的菜单操作,能将链表逆置。

6、拆分开每一个数的各个位的值,按各位之和升序排序的功能;

7、相应的菜单操作,能输出节点的信息;

要求:

设计合理的存储结构,设计界面,设计程序完成功能;

10.

个人关系网的设计与实现系统

通过此系统可以实现如下功能:

1、系统以菜单方式工作;

2、录入随机组合的联系人信息(联系人信息用文件保存>--输入;

3、通过程序,实现图的建立;

4、联系人之间的关系浏览功能--输出;

5、查询和排序功能:

(至少一种查询方式>—算法

1>按与某个人的亲密程度升序或者降序排序

2>按亲密值的大小范围查询

6、联系人信息的删除、修改功能(任选项>。

要求:

设计合理的存储结构,设计界面,设计程序完成功能;

11.

工作人员被访问频率统计系统

通过此系统可以实现如下功能:

1、系统以菜单的方式工作;

2、首先从文件“原始数据”中读入“人员”信息;

3、计算访问频率,并输出频率值,以他们的访问频率为权重建立赫夫曼树;

4、通过系统查询相关人员的信息,每次查询后都从新修正访问次数和访问频率;

5、系统根据第<4)步得到的值对赫夫曼树进行修正;

6、层序遍历赫夫曼树,并将访问结果写入“层序遍历”下“层序遍历.csv”。

要求:

1、设计合理的存储结构,设计界面,设计程序完成功能;

2、人员信息包括:

姓名,访问次数,访问频率;

3、通过窗体界面实现所有的功能

12.

订票系统

录入:

可以录入航班情况<数据可以存储在一个数据文件中,数据结构、具体数据自定)

查询:

可以查询某个航线的情况<如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;

完成任务描述中的各种功能,自己可以适当增加必要的功能。

13.

简单算术表达式运算

给定简单的算术表达式,包括加减乘除括号这几种运算操作符,请计算表达式的值。

(1>能够正确处理加减乘除这四种运算;

(2>能够正确处理括号运算;

首先将算术表达式转化成逆波兰式,针对逆波兰式进行运算。

14.

失物招领系统

通过此系统可以实现如下功能:

1、系统以菜单的方式工作;

2、系统内部维护“寻物.CSV”、“捡到物品.CSV”、“已归还物品.CSV”三张表;

3、捡到物品时先在“寻物.CSV”中查询,若存在,删除该物品的信息;若不存在,把它记录到“捡到物品.CSV”文件中;

4、已经被领走的物品,先把该物品的信息记录到“已归还物品.CSV”文件中,再从文件“捡到物品.CSV”中删除该物品的信息;

5、当有人来认领时,先在“捡到物品.CSV”表里查询,若没有找到,则在文件“寻物.CSV”中记录下该物品的信息;

要求:

1、设计合理的存储结构,设计界面,设计程序完成功能;

2、通过窗体界面实现所有的功能;

3、“捡到物品.CSV”表里每条记录包括:

物品名称,捡到者的联系方式,捡拾时间、地点,值班人;

4、已归还物品.CSV”表里的每条记录包括:

物品名称,捡到者的联系方式,捡拾时间、地点,招领者的学号,联系方式,所在学院,专业,班级,招领时间,值班人;

5、“寻物.CSV”表里的每条记录包括:

物品名称,丢失者的联系方式,丢失时间、地点,值班人。

6、自己建立所需的表。

15.

集合操作

用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、差运算。

(1>用单链表存放集合中的元素,链表中的元素按大小存放;

(2>实现集合加入一个元素删除一个元素的元素操作;

(3>实现集合的交、并、差集合操作;

完成任务描述中的各种功能,自己可以适当增加必要的功能。

16.

C语言源程序代码行统计工具codeCounter

编写程序,统计C语言源程序的代码。

1./**/和//的都认为是注释行2.统计空行3.非空非注释行,基本上可以认为是有效的代码行如果同一行中有注释和代码的认为是代码行4,统计总代码行数、注释行数、空行数

5输入:

codeCounter–filename/filepath

输出列表:

filename总代码行数、注释行、空行

17.

实现链表按节点的数值域值升序排序的系统

通过此系统可以实现如下功能:

1、系统以菜单方式工作;

2、每个节点包括三个域:

next、prior、data;

3、根据输入的值构造出节点,并以头插的方式存储在链表里;

4、输入完毕后,用相关菜单能实现将所有节点按数值域值升序排序,用prior指针域连接。

5、能分别打印输出沿next指向和沿prior指向的所有节点信息;要求:

设计合理的存储结构,设计界面,设计程序完成功能;

存储空间有伸缩性;

18.

一个简单的栈和队列的演示系统

通过此系统可以实现如下功能:

1、系统以菜单的方式工作;

2、从窗体上输入相应的信息,能够生成对应的节点,分别保存到栈和队列里面;

3、通过相应的菜单实现,输出栈和队列里面的内容;

4、实现将栈置空、判空、弹栈、压栈基本操作;

实现队列的置空、判空、入队、出队基本操作;

要求:

1、设计合理的存储结构,设计界面,设计程序完成功能;

2、所有功能均通过窗体界面实现,输出的内容显示在窗体上;

19.

二叉树的重构和遍历系统

通过此系统可以实现如下功能:

1、系统以菜单的方式工作;

2、能实现从已有文件中读入原二叉树的后序遍历结果和中序遍历结果;

3、根据第(2>步的信息,重构出原来的二叉树,并将树的先序遍历结果输出到Output目录的“先序遍历.CSV”文件中;

4、可以将Output里的数据显示到窗体上。

要求:

设计合理的存储结构,设计界面,设计程序完成功能;

20.

多项式的加法和乘法实现系统

通过此系统可以实现如下功能:

1、从指定的.csv文件读入多项式f(x>和g(x>的系数和相应的指数信息;

2、将多项式f(x>按照指数递增的顺序排列,并将结果写入f(x>排序结果.csv文件中;

3、将多项式g(x>按照指数递减的顺序排列,并将结果写入g(x>排序结果.csv文件中;

4、将两个多项式相加,结果写入多项式相加结果.csv文件中;

5、将两个多项式相乘,将结果写入多项式相乘结果.csv文件中。

要求:

设计合理的存储结构,设计界面,设计程序完成功能;

将最后的相加结果和相乘结果,以多项式的形式显示在自己设定的窗体界面上;

21.

万年历查询程序。

实现万年历程序

功能要求:

<1)提供菜单方式选择,假定输入的年份在1940-2040年之间。

<2)输入一个年份,输出是在屏幕上显示该年的日历。

<3)输入年月,输出该月的日历。

如:

<4)输入年份、月份、日期,计算得到的是这一天据今天有多少天,星期几;

<5)输入公历的年月日,输出农历年月日。

<6)输入农历节气,输出当年农历的年月日及公历年月日。

可以假定只涉及年份是1940年到2040年。

22.

学生成绩管理

实现功能:

输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。

23.

散列法的实验研究

散列法中,散列函数构造方法多种多样,同时对于同一散列函数解决冲突的方法也可以不同。

两者是影响查询算法性能的关键因素。

对于几种典型的散列函数构造方法,做实验观察,不同的解决冲突方法对查询性能的影响。

24.

利用栈求表达式的值,可供小学生作业,并能给出分数。

建立试卷库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价

25.

个人电话号码查询系统

实现简单的个人电话号码查询系统,根据用户输入的信息<如姓名,身份证号,电话号码、邮件地址等)进行快速查询。

基本要求:

(1)插入:

实现将用户的信息插入到系统中;

(2)删除:

删除某个用户的信息;

(3)修改:

修改某个用户的信息;

(4)查询:

根据姓名、身份证号等查询用户信息<包括简单条件查询,组合条件查询、模糊查询等);

(5)排序:

对于用户信息进行排序,提高查询速度;

(6)输出:

输出用户信息。

提示:

(1>在内存中,设计数据结构存储电话号码的信息;在外存中,利用文件的形式来保存电话号码信息,系统运行时,将电话号码信息从文件调入内存来进行插入、查找等操作。

(2>如果数据的插入删除频繁,可以考虑采取二叉排序树组织电话号码信息<也可采用较复杂的平衡二叉树),可以提高查找和维护的时间性能。

(3>选择不同的排序和查找算法,尽可能提高查找和维护性能。

26.

单源最短路径求解

给定一个带权有向图G=(V,E>,其中每条边的权是一个非负实数。

另外,还给定V中的一个顶点,成为源。

现在计算从源到其他各顶点的最短路径。

路径的长度是指路上各边权值之和。

27.

散列表的设计与实现

【问题描述】

设计散列表实现电话号码查找系统。

【基本要求】

1>设每个记录有下列数据项:

电话号码、用户名、地址;

2>从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;

3>采用一定的方法解决冲突;

4>查找并显示给定电话号码的记录;

5>查找并显示给定用户名的记录。

【进一步完成内容】

1>系统功能的完善;

2>设计不同的散列函数,比较冲突率;

3>在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。

28.

数组编码和解码问题的求解设计与实现

设有一个数组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,利用C求解A的编码.

给出数组A的编码后,求出A中原数据。

29.

通讯录的制作

本系统应完成一下几方面的功能:

①输入信息:

调用此函数用以输入数据到内存中,此过程包括建立相应的链表或相应的数组,便于读取

②显示信息:

用以显示输入的数据,包括从内存中读出和从磁盘中读出

③查找:

以姓名作为关键字查找要找的信息

④删除信息:

用以删除选定的输入信息<姓名作为关键字)

⑤存盘:

调用此函数将内存中的数据保存至磁盘中

⑥装入:

调用此函数用以将之前保存在磁盘的内容读入到内存中或显示到屏幕上。

注:

本课题中输入的数据应包括以下几项信息:

姓名、学校、城市、邮编、国家。

30.

活期储蓄帐目管理

活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:

1>能比较迅速地找到储户的帐户,以实现存款、取款记账;

2>能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。

31.

排序方法的比较

利用随机函数产生N个随机整数<20000以上),对这些数进行多种方法进行排序。

要求:

1>至少采用三种方法实现上述问题求解<提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。

并把排序后的结果保存在不同的文件中。

2>统计每一种排序方法的性能<以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。

3>如果采用4种或4种以上的方法者,可适当加分。

32.

学生成绩管理系统

现有学生成绩信息文件1<1.txt),内容如下

姓名学号语文数学英语

张明明01677882

李成友02789188

张辉灿03688256

王露04564577

陈东明05673847

...........

学生成绩信息文件2<2.txt),内容如下:

姓名学号语文数学英语

陈果31576882

李华明32889068

张明东33484256

李明国34504587

陈道亮35475877

...........

试编写一管理系统,要求如下:

1>实现对两个文件数据的合并,生成新文件3.txt

2>抽取出三科成绩中有补考的学生并保存在一个新文件4.txt

3>对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现>

4>输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现>

5>要求使用结构体,链表实现上述要求.

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>;

34.

集合操作

用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、差运算。

(1>用单链表存放集合中的元素,链表中的元素按大小存放;

(2>实现集合加入一个元素删除一个元素的元素操作;

(3>实现集合的交、并、差集合操作;

35.

找数字对

输入N<2<=N<=100)个数字(在0与9之间>,然后统计出这组数种相邻两数字组成的链环数字对出现的次数。

例如:

输入:

N=20{表示要输入数的数目}

01598722232787879659

输出(7,8>=2(8,7>=3{指(7,8>、(8,7>数字对出现次数分别为2次、3次}

36.

二叉树遍历算法的实现

四种算法都是前序、中序、后序三种算法要求递归和非递归实现,层遍历用非递归实现。

37.

哈夫曼编码

根据输入文本中每个字符的权重,构建哈夫曼树,并生成对应的哈夫曼编码

38.

Prim算法的实现

输入一个含有十个结点的无向图,用prim算法生成一颗最小生成树并显示。

39.

克鲁斯卡尔算法求图的最小生成树

任务:

用邻接矩阵实现图的遍历,并用克鲁斯卡尔算法求图的最小生成树

40.

n元多项式乘法

(1>界面友好,函数功能要划分好

(2>总体设计应画一流程图

(3>程序要加必要的注释

(4>要提供程序测试方案

(5>程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。

41.

学生成绩管理程序

设计一个简单的学生成绩管理程序,要求根据菜单处理相应功能。

<1)管理功能包括列表、求平均成绩、查找最高分等。

<2)可按指定的性别或高于指定的个人平均分来筛选列表;

<3)可按平均成绩排序;

<4)平均成绩可按个人或科目进行;

<5)查找可按最高个人平均分进行,或按指定科目的最高分进行;

<6)每个学生的信息包括:

序号、学号、性别、成绩1、成绩2、成绩3、成绩4;

<7)基本功能为:

建立文件、增加学生记录、新建学生信息文件、删除/修改学生记录。

42.

数组操作

设计菜单处理程序,对一维数组进行不同的操作。

<1)操作工程包括求数组最大值、最小值、求和、求平均值、排序、二分查找、有序插入;

<2)设计并利用字符菜单进行操作工程的选择,程序一次运行可根据选择完成一项或多项操作;通过菜单“退出”来结束程序的运行;

<3)数组的输入、输出可支持命令行输入文件名、界面输入文件名从数据文件中输入和输出;也支持界面录入。

43.

图书管理系统

【问题描述】

设计一个计算机管理系统完成图书管理基本业务。

【基本要求】

1>每种书的登记内容包括书号、书名、著作者、现存量和库存量;

2>对书号建立索引表<线性表)以提高查找效率;

3>系统主要功能如下:

*采编入库:

新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;

*借阅:

如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;

*归还:

注销对借阅者的登记,改变该书的现存量。

【进一步完成内容】

1>系统功能的进一步完善;

2>索引表采用树表。

44.

学生搭配问题

一班有m个女生,有n个男生(m不等于n>,现要开一个舞会.男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴.

请设计一系统模拟动态地显示出上述过程,要求如下:

1>输出每曲配对情况

2>计算出任何一个男生(编号为X>和任意女生(编号为Y>,在第K曲配对跳舞的情况.至少求出K的两个值.

3>尽量设计出多种算法及程序,可视情况适当加分

提示:

用队列来解决比较方便.

45.

图书登记管理程序

该程序应该具有下列功能:

(1>通过键盘输入某本图书的信息;

(2>给定图书编号,显示该本图书的信息;

(3>给定作者姓名,显示所有该作者编写的图书信息;

(4>给定出版社,显示该出版社的所有图书信息;

(5>给定图书编号,删除该本图书的信息;

(6>提供一些统计各类信息的功能。

46.

学生学分管理程序

假设每位学生必须完成基础课50学分、专业课50学分、选修课24学分、人文类课程8学分、实验性课程20学分才能够毕业。

因此在管理学分时,要考虑每个学分所属于的课程类别。

该程序应该具有下列功能:

(1>通过键盘输入某位学生的学分;

(2>给定学号,显示某位学生的学分完成情况;

(3>给定某个班级的班号,显示该班所有学生学分完成情况;

(4>给定某位学生的学号,修改该学生的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1