数据结构与 C 语言综合训练习题集
序号
项目名称
任务描述
1. 身份证管理程序 该程序应该具有下列功能:
2. 期刊论文管理程
序
3. 哈夫曼编码
(1) 通过键盘可以输入身份证信息,大量信息可存放在文件中。身份证包含的信息请
参看自己的身份证;
(2) 给定身份证号码,显示其身份证信息;
(3) 给定省份的编号,显示该省的人数;
(4) 给定某区的编号,显示该区的人数;
(5) 给定身份证号码,可以修改该身份证信息;
(6) 给定身份证号码,可以删除该身份证信息;
该程序应该具有下列功能:
(1) 通过键盘输入某期刊论文的信息,也可以把大量期刊论文信息放在文件中;
(2) 给定期刊论文的论文名称,显示该论文的作者信息,作者单位,发表期刊的名称;
(3) 给定作者姓名,显示所有该作者发表的期刊论文情况;
(4) 给定期刊名称,显示该期刊的所有论文信息;
问题描述:利用哈夫曼编码,实现压缩和解压缩。
基本要求:
对于给定的一组字符,可以根据其权值进行哈夫曼编码,并能输出对应的哈夫曼树
和哈夫曼编码;实现哈夫曼解码。
提高要求:
(1)能够分析文件,统计文件中出现的字符,统计字符出现的概率,再对文件进行编
1
设计要求
指导
教师
每
组
学
生
人
数
吴昊 2
提 供 一 些 统 计 各 类
信息的功能。例如男
女的人数、比例;以
及哪年、哪月、哪日
出生的人数等。界面
要合理。
吴昊 2
吴昊 1
提 供 一 些 统 计 各 类
信息的功能。例如某
人发表论文的个数,
某 期 刊 出 版 论 文 的
个数等。
完 成 任 务 描 述 中 的
各种功能,自己可以
适 当 增 加 必 要 的 功
能。
数据结构与 C 语言综合训练习题集
码,实现文件的压缩和解压缩。
(2)能够对于文件的压缩比例进行统计。
4. 约瑟夫环问题
功能:设编号为 1,2,3,……,n 的 n(n>0)个人按顺时针方向围坐一圈,每个
人持有一个正整数密码。开始时任选一个正整数做为报数上限 m,从第一个人开始顺
时针方向自 1 起顺序报数,报到 m 时停止报数,报 m 的人出列,将他的密码作为新
的 m 值,从他的下一个人开始重新从 1 报数。如此下去,直到所有人全部出列为止。
令 n 最大值取 30。要求设计一个程序模拟此过程,求出出列编号序列。
要求:用数组和链表
分别实现。m 和 n 的
值可以由键盘输入。
吴昊 1
5. 学生宿舍管理查
询软件
设计一个简单的学生宿舍管理查询程序,要求根据菜单处理相应功能。
(1)建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序
(2)查询菜单: (可以用二分查找实现以下操作)
A. 按姓名查询
B. 按学号查询
C. 按房号查询等
6. 学生成绩管理系
统
学生成绩信息文件 2(2.txt),内容
(3)可以打印任一查询结果
(4)每个学生的信息包括:序号、学号、性别、房号、楼号等;
现有学生成绩信息文件 1(1.txt),内容如下
如下:
姓名 学号 语文 数学 英语
82
张明明 01
李成友 02
88
56
张辉灿 03
77
王露 04
陈东明 05
47
--
--------- ---
姓名 学号 语文 数学 英语
82
陈果 31
李华明 32
68
56
张明东 33
87
李明国 34
陈道亮 35
77
--
--
--------
78
91
82
45
38
--
57
88
48
50
47
--
68
90
42
45
58
--
67
78
68
56
67
--
2
吴昊 2
排序方法任选。基本
功能为:建立文件、
增加学生宿舍记录、
删除/修改、查询学生
宿舍记录。
要求使用结构体链
表 或 数 组 等 实 现 上
述要求.
吴昊 1
数据结构与 C 语言综合训练习题集
试编写一管理系统,要求如下:
1) 实现对两个文件数据的合并,生成新文件 3.txt
2) 抽取出三科成绩中有补考的学生并保存在一个新文件 4.txt
3) 对合并后的文件 3.txt 中的数据按总分降序排序(至少采用两种排序方法实现)
4) 输入一个学生姓名后,能查找到此学生的信息并输出结果
7.
8.
9.
10.
家电销售系统
用链式结构建立有序表,结点的数据域应该包括家电名称、品牌型号、单价以及数
量,以结点中单价的递增顺序排列。日常的维护操作应该包括初始化,创建链表,
插入,删除,更新数据,打印,查询。
界面安排合理,提示
信息完善。
吴昊 1
图书管理系统
基本业务活动包括:对新书的采编入库、清除库存、借阅和归还等等。
图书的基本信息:图书编号,出版社,作者信息,定价,图书名称等。
文本编辑系统
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;
(3)删除某一子串,并将后面的字符前移。
通讯录管理系统
问题描述:编写一个通讯录管理系统。本系统应完成以下几方面的功能:
2) 显示信息———display( );
1) 输入信息——enter();
3) 查找以姓名作为关键字 search( );
4) 删除信息———delete( );
5) 存盘———save ( ); 6) 装入———load( ) ;
要求:(1) 每条信息应包含 :姓名(NAME )街道(STREET)城市(CITY)
邮编(EIP)国家(STATE)等信息。
吴昊 1
吴昊 1
吴昊 1
完 成 任 务 描 述 中 的
各种功能,自己可以
适 当 增 加 必 要 的 功
能。
字串可以任意输入。
完 成 任 务 描 述 中 的
各种功能,自己可以
适 当 增 加 必 要 的 功
能。
作 为 一 个 完 整 的 系
统,应具有友好的界
面 和 较 强 的 容 错 能
力
11. 求任一表达式的 主要是加减乘除的运算,利用栈的思想对表达式求值。要掌握运算符的优先级等, 有进栈、出栈、判断 吴昊 1
3
数据结构与 C 语言综合训练习题集
值
按照运算符的优先级进行判断。
12.
订票系统
13. 简单算术表达式
运算
14. 字符串操作
15. 集合操作
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据
自定)
查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,
航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班
情况;
给定简单的算术表达式,包括加减乘除括号这几种运算操作符,请计算表达式的值。
(1)能够正确处理加减乘除这四种运算;
(2)能够正确处理括号运算;
编写程序,不使用标准库函数,实现字符串的拷贝、拼接、字串查找、长度计算等
函数。
(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);
用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、
差运算。
(1)用单链表存放集合中的元素,链表中的元素按大小存放;
(2)实现集合加入一个元素删除一个元素的元素操作;
(3)实现集合的交、并、差集合操作;
栈顶元素等操作。
完 成 任 务 描 述 中 的
各种功能,自己可以
适 当 增 加 必 要 的 功
能。
首 先 将 算 术 表 达 式
转化成逆波兰式,针
对 逆 波 兰 式 进 行 运
算。
完 成 任 务 描 述 中 的
各种功能,自己可以
适 当 增 加 必 要 的 功
能。
吴昊 1
吴昊 1
吴昊 1
吴昊 1
完 成 任 务 描 述 中 的
各种功能,自己可以
适 当 增 加 必 要 的 功
能。
4
数据结构与 C 语言综合训练习题集
16. C 语言源程序代
码 行 统 计 工 具
codeCounter
编写程序,统计 C 语言源程序的代码。
1. /* */ 和//的都认为是注释行 2. 统计空行 3. 非空非注释行,基本上可以认为
是有效的代码行 如果同一行中有注释和代码的认为是代码行 4, 统计总代码行数、
注释行数、空行数
17. 歌手比赛系统
5 输入: codeCounter –filename/filepath
输出列表: filename 总代码行数、注释行、空行
设计一个简单的歌手比赛绩管理程序,对一次歌手比赛的成绩进行管理
功能要求:
1.输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩
和平均成绩(去掉最高分,去掉最低分)。
2.显示主菜单如下:1)输入选手数据 2)评委打分 3)成绩排序(按平均分)4)
数据查询 5)追加学生数据 6)写入数据文件 7)退出系统
18. 小学生测验系统 面向小学 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 以下“TRY AGAIN”
1
梁 春
泉
1
梁 春
泉
1
梁 春
泉
19. 学生宿舍管理查
询软件
设计一个简单的学生宿舍管理查询程序,要求根据菜单处理相应功能。
(1)建立数据文件 ,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选
梁 春 1
5
数据结构与 C 语言综合训练习题集
择、插入排序等任选一种)
(2)查询菜单: (可以用二分查找实现以下操作)
C.?按房号查询等
号查询
(3)可以打印任一查询结果
(4)每个学生的信息包括:序号、学号、性别、房号、楼号等;
(5)基本功能为:建立文件、增加学生宿舍记录、删除/修改、查询学生宿舍记录。
A.?按姓名查询
B.?按学
20.
通讯录的系统
21. 简单算术表达式
运算
22. 学生学分管理程
序
设计并实现一个简单的通讯录系统
本系统应完成一下几方面的功能:①输入信息:调用此函数用以输入数据到内存中,
此过程包括建立相应的链表或相应的数组,便于读取②显示信息:用以显示输入的
数据,包括从内存中读出和从磁盘中读出③查找:以姓名作为关键字查找要找的信
息④删除信息:用以删除选定的输入信息(姓名作为关键字)⑤存盘:调用此函数
将内存中的数据保存至磁盘中⑥装入:调用此函数用以将之前保存在磁盘的内容读
入到内存中或显示到屏幕上。注:本课题中输入的数据应包括以下几项信息:姓名、
学校、城市、邮编、国家。
给定简单的算术表达式,包括加减乘除括号这几种运算操作符,请计算表达式的值。
(1)能够正确处理加减乘除这四种运算;
(2)能够正确处理括号运算;
实现提示: 首先将算术表达式转化成逆波兰式,然后针对逆波兰式进行运算。
实现一个简单的学生学分管理系统
假设每位学生必须完成基础课 50 学分、专业课 50 学分、选修课 24 学分、人文类课
程 8 学分、实验性课程 20 学分才能够毕业。因此在管理学分时,要考虑每个学分所
属于的课程类别。
该程序应该具有下列功能:
(1) 通过键盘输入某位学生的学分;
(2) 给定学号,显示某位学生的学分完成情况;
(3) 给定某个班级的班号,显示该班所有学生学分完成情况;
6
泉
1
梁 春
泉
1
1
梁 春
泉
梁 春
泉
23. 中文分词实现
24. 字符串操作
数据结构与 C 语言综合训练习题集
(4) 给定某位学生的学号,修改该学生的学分信息;
(5) 按照某类课程的学分高低进行排序;
(6) 提供一些统计各类信息的功能。
对中文句子进行划分,得到词组
采用基于字符串匹配的分词方法,即汉字串与一个机器词典(词典文件可网上下载)
中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。分别
实现以下几种划分方法:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小);
4)双向最大匹配法(进行由左到右、由右到左两次扫描)
编写程序,不使用标准库函数,实现字符串的拷贝、拼接、字串查找、长度计算、
拆分、等函数。
(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[])
25. 万 年 历 查 询 程
序。
实现万年历程序
功能要求:
(1)提供菜单方式选择,假定输入的年份在 1940-2040 年之间。
(2)输入一个年份,输出是在屏幕上显示该年的日历。
7
1
梁 春
泉
1
梁 春
泉
1
梁 春
泉
数据结构与 C 语言综合训练习题集
(3)输入年月,输出该月的日历。如:
(4)输入年份、月份、日期,计算得到的是这一天据今天有多少天,星期几;
(5)输入公历的年月日,输出农历年月日。
(6)输入农历节气,输出当年农历的年月日及公历年月日。可以假定只涉及年份是
1940 年到 2040 年。
26. 数字游戏的设计 实现一个简单的猜数字游戏
(1)一个四位数,各位上的数字不重复,从 1 到 9。
(2)按以下提示猜出这个四位数。
(3)每次猜测输入的数据给出类似的提示*A*B。
(4)其中 A 前的*代表你本次猜对了多少个数字。
(5)其中 B 前的*代表你本次猜对的数字并且位置正确的个数。
(6)给定猜测次数,如果超过次数未猜中,游戏失败
27. 集合操作
用单链表模拟有序集合,实现集合的加入一个元素、删除一个元素、集合的交、并、
差运算。
(1)用单链表存放集合中的元素,链表中的元素按大小存放;
(2)实现集合加入一个元素删除一个元素的元素操作;
(3)实现集合的交、并、差集合操作;
28. 订票系统
实现一个简单的订票系统
基本要求:
8
1
梁 春
泉
1
梁 春
泉
梁 春 1