例如当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)要求如下:
给出数组A,利用C求解A的编码.给出数组A的编码后,求出A中原数据。
21
简易文本编辑器的设计与实现
功能:
具有图形菜单界面;查找、替换、块移动(行块,列块移动)、删除;具有基本功能。
22
利用哈希表实现电话号码查找系统
功能:
建立哈希表。
选择不同的哈希函数;选择不同的解决冲突的办法。
23
迷宫问题求解
要求:
对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
24
排序算法综合
功能:
数据随机生成;五种常用排序算法实现;从时间上分析效率并比较。
25
简易通讯录的制作
功能:
输入信息;显示信息;查找以姓名作为关键字;删除信息;存盘;装入。
26
图的遍历的实现
功能:
实现图的深度优先,广度优先遍历算法,并输出原图结构及遍历结果。
27
稀疏矩阵运算器的设计与实现
功能:
压缩存储;矩阵的基本运算(加、乘、求逆);常规矩阵方式输出。
28
小学生作业题练习系统(利用堆栈实现)
功能:
建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;给出分数判定;随时可以退出;保留历史分数,能回顾历史,根据历史分数给出评价。
29
一元多项式的加法、减法、乘法的实现
要求:
判定是否稀疏;分别采用顺序和链式存储结构实现;结果M(x)中无重复阶项和无零系数项;要求输出结果的升幂和降幂两种排列情况
30
邻接表克鲁斯卡尔算法的实现
要求:
根据需要建立图的邻接表存储结构;构造最小生成树,模拟演示生成过程。
31
期刊论文管理程序
该程序应该具有下列功能:
(1)通过键盘输入某期刊论文的信息,也可以把大量期刊论文信息放在文件中;
(2)给定期刊论文的论文名称,显示该论文的作者信息,作者单位,发表期刊的名称;(3)给定作者姓名,显示所有该作者发表的期刊论文情况;(4)给定期刊名称,显示该期刊的所有论文信息;
32
字符串操作
编写程序,不使用标准库函数,实现字符串的拷贝、拼接、字串查找、长度计算等函数。
(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);
33
单源最短路径求解
给定一个带权有向图G=(V,E),其中每条边的权是一个非负实数。
另外,还给定V中的一个顶点,成为源。
现在计算从源到其他各顶点的最短路径。
路径的长度是指路上各边权值之和。
34
歌手比赛系统
设计一个简单的歌手比赛绩管理程序,对一次歌手比赛的成绩进行管理功能要求:
1.输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
2.显示主菜单如下:
1)输入选手数据2)评委打分3)成绩排序(按平均分)4)数据查询5)追加学生数据6)写入数据文件7)退出系统
35
找数字对
输入N(2<=N<=100)个数字(在0与9之间),然后统计出这组数种相邻两数字组成的链环数字对出现的次数。
例如:
输入:
N=20{表示要输入数的数目}
01598722232787879659
输出(7,8)=2(8,7)=3{指(7,8)、(8,7)数字对出现次数分别为2次、3次}
36
二叉树遍历算法的实现
四种算法都是前序、中序、后序三种算法要求递归和非递归实现,层遍历用非递归实现。
37
中文文本压缩
问题描述:
利用哈夫曼编码,实现中文文本的压缩和解压缩。
基本要求:
对于给定的中文文本,可以根据其频度进行哈夫曼编码,并能输出对应的哈夫曼树和哈夫曼编码;实现哈夫曼解码。
提高要求:
(1)能够分析文件,统计文件中出现的字符,统计字符出现的概率,再对文件进行编码,实现文件的压缩和解压缩。
(2)能够对于文件的压缩比例进行统计。
38
邻接矩阵普利姆算法的实现
要求:
根据需要建立图的邻接矩阵存储结构;构造最小生成树,模拟演示生成过程。
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)输入年份为1990~2050内任一年;
(2)可以选择输出公历表或农历表;
(3)农历表包括二十四节气。
44
学生证管理程序
该程序应该具有下列功能:
(1)通过键盘输入某位学生的学生证信息。
学生证包含的信息请参看自己的学生证;
(2)给定学号,显示某位学生的学生证信息;
(3)给定某个班级的班号,显示该班所有学生的学生证信息;
(4)给定某位学生的学号,修改该学生的学生证信息;
(5)给定某位学生的学号,删除该学生的学生证信息;
(6)提供一些统计各类信息的功能。
45
图书登记管理程序
该程序应该具有下列功能:
(1)通过键盘输入某本图书的信息;
(2)给定图书编号,显示该本图书的信息;
(3)给定作者姓名,显示所有该作者编写的图书信息;
(4)给定出版社,显示该出版社的所有图书信息;
(5)给定图书编号,删除该本图书的信息;
(6)提供一些统计各类信息的功能。
46
学生学分管理程序
假设每位学生必须完成基础课50学分、专业课50学分、选修课24学分、人文类课程8学分、实验性课程20学分才能够毕业。
因此在管理学分时,要考虑每个学分所属于的课程类别。
该程序应该具有下列功能:
(1)通过键盘输入某位学生的学分;
(2)给定学号,显示某位学生的学分完成情况;
(3)给定某个班级的班号,显示该班所有学生学分完成情况;
(4)给定某位学生的学号,修改该学生的学分信息;
(5)按照某类课程的学分高低进行排序;
(6)提供一些统计各类信息的功能。
47
作业完成情况管理程序
假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记。
学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100)。
该程序应该具有下列功能:
(1)通过键盘输入某位学生某次作业的分数;
(2)给定学号,显示某位学生作业完成情况;
(3)给定某个班级的班号,显示该班所有学生的作业完成情况;
(4)给定某位学生的学号,修改该学生的作业完成信息;
(5)给定某位学生的学号,删除该学生的信息;
(6)提供一些统计各类信息的功能。
48
旅店POS机管理系统
旅店收款POS机管理系统的简单实现。
(1)前台管理:
包括空房分等级显示、入住登记、退房结算、洗衣房管理、娱乐项目管理;
(2)后台管理包括客房预定分析、营业额统计、日报表、月报表、年报表);
(3)设计数据结构文件来实现数据库管理,包括数据录入、查询、删除、修改、更新。
49
学生通讯录管理系统
用链表方式来实现学生通讯录管理系统。
(1)通过定义一个包含学生通讯录(主要包括:
学号、姓名、系别、专业、籍贯、家庭住址、联系电话等)的结构体类型,实现增加学生通讯录的内容、删除某个学生通讯录、输出全部学生通讯录内容、根据用户需求查找某个或某些学生的通讯录内容(如:
按系别、专业、学号、姓名等内容进行查找)。
(2)能够实现以上给定的各项功能,具有方便简洁的操作界面,具有一定的容错性。
50
超长正整数的乘法
设计一个算法来完成两个超长正整数的乘法。
算法提示:
首先要设计一种数据结构来表示一个超长的正整数,然后才能够设计算法。
51
个人电话号码查询系统
问题描述:
实现简单的个人电话号码查询系统,根据用户输入的信息(如姓名,身份证号,电话号码、邮件地址等)进行快速查询。
基本要求:
(1)插入:
实现将用户的信息插入到系统中;
(2)删除:
删除某个用户的信息;(3)修改:
修改某个用户的信息;(4)查询:
根据姓名、身份证号等查询用户信息(包括简单条件查询,组合条件查询、模糊查询等);(5)排序:
对于用户信息进行排序,提高查询速度;(6)输出:
输出用户信息。
提示:
(1)在内存中,设计数据结构存储电话号码的信息;在外存中,利用文件的形式来保存电话号码信息,系统运行时,将电话号码信息从文件调入内存来进行插入、查找等操作。
(2)如果数据的插入删除频繁,可以考虑采取二叉排序树组织电话号码信息(也可采用较复杂的平衡二叉树),可以提高查找和维护的时间性能。
(3)选择不同的排序和查找算法,尽可能提高查找和维护性能。
52
数字文本压缩
问题描述:
利用哈夫曼编码,实现数字文本的压缩和解压缩。
基本要求:
对于给定的数字文本,可以根据其频度进行哈夫曼编码,并能输出对应的哈夫曼树和哈夫曼编码;实现哈夫曼解码。
提高要求:
(1)能够分析文件,统计文件中出现的字符,统计字符出现的概率,再对文件进行编码,实现文件的压缩和解压缩。
(2)能够对于文件的压缩比例进行统计。
53
订票系统
基本要求:
(1)录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
(2)查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
(3)可以输入起飞抵达城市,查询飞机航班情况;
(4)订票:
(订票情况可以存在一个数据文件中,结构自己设定),可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:
可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号;
(5)修改航班信息:
当航班信息改变可以修改航班数据文件。
54
学籍管理系统
问题描述:
建立学籍管理系统,实现对于学生信息的添加和维护管理。
基本要求:
完成学籍登记表中的下面功能(登记表中包括学号、姓名、性别、出生日期、政治面貌、联系方式、家庭住址等信息)。
⑴插入:
将某学生的基本信息插入到登记表中;
⑵删除:
将满足条件的基本信息删除;
⑶修改:
对基本信息的数据项进行修改;
⑷查询:
查找满足条件的学生;
⑸输出:
将登记表中的全部(或满足条件)基本信息输出。
提高要求:
⑴可以添加课程信息(如开课学期、上课时间、上课地点等信息),学生选课信息,实现学生的选课功能;
⑵增加学生成绩信息,可以对学生的成绩进行插入、删除、修改等操作;
⑶实现查找某学生的选课记录,课程成绩等;
⑷利用二叉排序树、平衡树、排序算法等数据结构知识提高排序和查找速度。
提示:
⑴学生登记表一般建立后,比较少更改,因此,可以采用顺序表方式建立;
⑵学生选课、成绩等信息,一般更改比较频繁,则可以采取链表建立;
⑶可以将学生的信息存储到文件中;系统运行时,将信息从文件调入到内存中运行。
55
数字游戏的设计
(1)一个四位数,各位上的数字不重复,从1到9。
(2)按以下提示猜出这个四位数。
(3)每次猜测输入的数据给出类似的提示*A*B。
(4)其中A前的*代表你本次猜对了多少个数字。
(5)其中B前的*代表你本次猜对的数字并且位置正确的个数。
56
稀疏矩阵的压缩与还原
一个矩阵含有非零元素比较少,而零元素相对较多,这样的矩阵称为稀疏矩阵,对稀疏矩阵的存储我们不用完全用二维数组来存储,可以用一个三元组,即任意一个稀疏矩阵可以用一个只有三列的二维数组来存放,
要求把给定的稀疏矩阵用为三元组表示;同时把三元组转换为稀疏矩阵形式。
57
文章编辑
输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符。
要求:
(1)分别统计出其中英文字母数和空格数及整篇文章总字数;
(2)统计某一字符串在文章中出现的次数,并输出该次数;
(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;
输入数据的形式和范围:
可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:
(1)分行输出用户输入的各行字符;
(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"
(3)输出删除某一字符串后的文章;
58
拓扑排序
建立有向无环图,并输出拓扑的序列。
59
随机探测再散列哈希表
实现随机探测再散列哈希表的创建与查找
60
公园的导游图
给出一张某公园的导游图,游客通过终端询问可知:
从某一景点到另一景点的最短路径。
游客从公园大门进入,选一条最佳路线,使游客可以不重复地游览各景点,最后回到出口(出口就在入口旁边)。
分步实施:
(1)初步完成总体设计,建好框架,确定人机对话的界面,确定函数个数;
(2)完成最低要求:
建立一个文件,包括5个景点情况,能完成遍历功能;
(3)进一步要求:
进一步扩充景点数目,画出景点图,有兴趣的同学可以自己扩充系统功能。
61
商店存货管理系统
建立一商店存货管理系统,要求每次出货时取进货时间最早且最接近保质期中止时间的货物。
分步实施:
(1)初步完成总体设计,建好框架,确定人机对话的界面,确定函数个数;
(2)完成最低要求:
建立一个文件,包括5个种类的货物情况,能对商品信息进行扩充(追加),修改和删除以及简单的排序;
(3)进一步要求:
扩充商品数量,以及完成系统查询功能。
有兴趣的同学可以自己扩充系统功能。
62
运动会分数统计
输入,统计,排序,查询,信息存储。
63
二叉树遍历算法的实现
四种算法都是前序、中序、后序三种算法要求递归和非递归实现,层遍历用非递归实现。
64
链表的综合算法设计
设有一职工文件,其结构为:
职工号(no)、姓名(name)、部门号(depno)、工资数(salary)、职工号指针(pno)、部门号指针(pdepno)、工资数指针(psalary),设计一程序,从一文件中读取记录到单链表中,并完成如下功能:
(1)输入:
添加一个职工记录;
(2)输出:
输出全部职工记录;
(3)按no排序:
通过pno指针将职工记录按no从小到大链接起来;
(4)按no输出:
沿pno链输出全部职工记录;
(5)按depno排序:
通过pdepno指针将职工记录按depno从小到大链接起来;
(6)按depno输出:
沿pdepno链输出全部职工记录;
(7)按salary排序:
通过psalary指针将职工记录按salary从小到大链接起来;
(8)按salary输出:
沿psalary链输出全部职工记录;
(9)全清:
删除职工文件中的全部记录;
(10)存贮退出:
将单链表中的全部结点存贮到职工文件中,然后退出程序运行。
65
基于哈希表的身份证查询系统的设计与实现
设计一个哈希表,实现个人身份证号码查询系统
基本要求:
(1)设每个记录有下列数据项:
身份证号码,电话号码、用户名、用户住址;
(2)从键盘输入各记录,分别以身份证号码和用户名为关键字建立哈希表;
设计不同的哈希函数,比较冲突率;
b)在哈希函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度
的变化。
(3)查找并显示给定电话号码/用户名的记录。
66
关键路径问题
基本要求:
(1)对一个描述工程的AOE网,建立其存储结构;(注:
数据的输入可以是键盘输入或文件输入两种方式)
(2)判断该AOE网是否能够顺利进行。
(3)若该工程能顺利进行,输出完成整项工程至少需要多少时间,以及每一个关键活动所依附的两个顶点、