课外实践安排2Word下载.docx
- 文档编号:18175380
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:23
- 大小:119.78KB
课外实践安排2Word下载.docx
《课外实践安排2Word下载.docx》由会员分享,可在线阅读,更多相关《课外实践安排2Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
输入数据形式和范围:
20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:
有中文提示,各学校分数为整数
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;
2、整体非法数据;
3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
二、学籍信息管理
【实验目的】
综合考察数据存储、以及对各种存储结构的建立、插入、删除、排序、查找等操作。
【实验要求】
设计一个简单的学籍管理系统。
包括建立、插入、修改,查找、输出、排序(按不同关键字)
【实验内容】
1.从学生基本信息文件读入数据以建立学籍信息。
下面是一个例子:
学号姓名性别宿舍号码电话号码
07011001张成成男50187732111
07011002李成华女10187723112
07011003王成凤女10187723112
07011004张明明男50287734333
07011005陈东男50187732111
每个学生信息至少包括:
学号、姓名、性别。
文件至少包括10个学生。
2.从学生成绩信息文件读入其内容建立学生的成绩信息。
以下一个例子:
(至少包含20项信息)
学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分
07011001A01大学物理3667882
07011002B03高等数学478-190
07011001B03高等数学445-188
07011002C01VF3657666
功能要求极其说明:
(1)数据录入功能:
录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。
实得成绩、实得学分根据条件自动运算。
综合成绩的计算:
a.如果本课程的实验成绩为-1,则表无实验成绩,综合成绩=平时成绩*30%+卷面成绩*70%
b.如果实验成绩不为-1,表示本课程有实验成绩,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70%
实得学分的计算:
采用等级学分制。
综合成绩在90~100之间,应得学分=学分*100%
综合成绩在80~90之间,应得学分=学分*80%
综合成绩在70~80之间,应得学分=学分*75%
综合成绩在60~70之间,应得学分=学分*60%
综合成绩在60分以下,应得学分=学分*0%
3.查询功能:
分为学生基本情况查询和成绩查询两种
4.删除功能:
根据输入的学生姓名或学好删除相应的学生信息。
5.排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
三、队列应用(用队列模拟超市交款处的顾客流)
使用一个队列模拟一队通过丹尼斯超市交款处的顾客流。
为了创建这个模拟,我们必须模拟排队时间和顾客通过流。
我们可以通过一个循环模拟时间,每通过一个顾客代表一定的时间间隔——例如,一分钟。
我们可以使用一个队列模拟顾客流,队列中的一个数据项代表一位顾客。
为了完成这个模拟,我们需要知道顾客加入交款处队列的频率、交款结算服务情况和离开的频率。
假设交款队列有以下属性。
·
每分钟有一个顾客完成交款并离开(假设此时至少有一个顾客等待服务)。
每分钟有零个到两个顾客加入,没有顾客到达的概率是50%,一个顾客到达的概率是25%,两个顾客到达的概率是25%。
(如何模拟?
)
我们可以使用下面的算法模拟一个时间段n分钟内的顾客流。
初始化队列为空。
for(minute=0;
minute<
n;
++minute)
{
如果队列不空,对头顾客交款并离开(即出对);
产生一个0-3范围内的随机数k;
如果k=1,一个顾客加入交款队列(入对);
如果k=2,两个顾客加入交款队列(入对);
如果k=0或3,不增加任何顾客到交款队列;
}
调用rand()函数是产生伪随机数的一种简单的方法,rand函数在<
stdlib.h>
中。
我们的模拟程序应该在每一个模拟分钟期间内更新下列信息,即每一次通过循环。
完成交款服务的总顾客数
这些顾客花费在排队等待的时间总和
顾客花费在排队等待的最长时间
为了计算顾客等待的时间长度,我们需要存储“minute”,作为这个客户队列数据项的一部分,表示顾客加入的时间。
如果你使用程序模拟一列顾客流,试着完成下面的表格。
请注意,平均等待时间是等待时间总和除以总的服务顾客数。
时间(分钟)总的顾客服务时间平均等待时间最长等待时间
30
60
120
480
四、应用哈夫曼树实现文件的压缩
实验目的:
掌握二叉树的链式存储结构和常用算法。
利用哈夫曼树设计最优压缩编码。
实验内容:
1)编写函数,实现建立哈夫曼树和显示哈夫曼树的功能。
2)编写函数,实现生成哈夫曼编码的功能。
3)编写主函数,从终端输入一段英文文本;
统计各个字符出现的频率,然后构建哈夫曼树并求出对应的哈夫曼编码;
显示哈夫曼树和哈夫曼编码。
选做内容:
修改程序,选择实现以下功能:
4)编码:
用哈夫曼编码对一段英文文本进行压缩编码,显示编码后的文本编码序列;
5)统计:
计算并显示文本的压缩比例;
6)解码:
将采用哈夫曼编码压缩的文本还原为英文文本。
算法说明:
1)二叉树和哈夫曼树的相关算法见讲义。
2)编码的方法是:
从头开始逐个读取文本字符串中的每个字符,查编码表得到它的编码并输出。
重复处理直至文本结束。
3)解码的方法是:
将指针指向哈夫曼树的树根,从头开始逐个读取编码序列中的每位,若该位为1则向右子树走,为0则向左子树走。
当走到叶子节点时,取出节点中的字符并输出。
重新将指针放到树根,继续以上过程直至编码序列处理完毕。
4)压缩比例的计算:
编码后的文本长度为编码序列中的0和1的个数,原文本长度为字符数*8。
两者之比即为压缩比。
五、数据压缩
1)调研数据压缩原理与相关算法的实现;
2)实现一个压缩/解压缩程序
1.阅读相关资料,理解数据压缩的意义和过程。
2.调研几个著名的数据压缩算法,写一份调研报告,说明其算法及所使用的数据结构。
3.实现一个压缩/解压缩程序,算法任意。
4.程序要求:
控制台界面。
首先实现对单文件压缩的功能。
命令行格式:
压缩:
程序名-c输入文件[输出文件名]
解压缩:
程序名-d输入文件[输出文件名]
[]里内容表示可选。
控制台输出:
原始文件大小、压缩后文件大小、压缩比例、消耗时间
解压前文件大小,解压后文件大小、压缩比例、消耗时间
选做:
1)将多个文件压缩到一个文件;
2)检查压缩文件完整性,测试其能够完成解压缩;
3)对文件测试,不压缩,输入其若压缩后的压缩率;
4)列出压缩文件内所包含的文件名;
4)实现对整个目录进行压缩的功能。
文件格式:
对压缩文件起一个后缀名。
若在命令行中没指定输入文件的话,输出文件名应该是输入文件名+.后缀名的格式;
若在命令行中指定输出文件名的话,后缀也应自动加上。
实现的压缩比例越高、压缩事件越短越好。
六、HTML文件中有序列表的语法树提取及基于树的检索
【实验说明】
HTML语言用来描述Web文档的通用格式和布局。
详细的介绍可以参照一些书本或者网上资料。
HTML中基本的语法单位称为标签。
总的来说,标签用于指定内容的类别。
对于每个类别,针对特定的内容,浏览器都有默认的显示方式。
标签的使用语法是利用一对尖括号“<
>
”将标签名称包围起来。
大部分标签都是成对的:
包括开始标签和结束标签,如<
html>
和<
/html>
。
开始标签和结束标签之间的信息称为标签的内容。
这里仅考虑一个HTML语言的子集,该子集包含以下标签:
<
<
:
标识文档的根元素;
head>
/head>
包含了文档的头部分,该部分提供了文档的相关信息,而没有提供文档的内容;
title>
/title>
文档的标题元素,其内容显示在浏览器的顶部;
body>
/body>
文档的主体部分,提供了文档的内容;
ol>
/ol>
有序列表标签,用于创建有序列表,列表中的条目是通过标签<
li>
/li>
指定的。
可以嵌套有序列表<
标签<
后不能直接嵌套<
,而必须通过<
嵌套。
例如,下面的示例演示了嵌套的有序列表:
testfornestedlists<
<
<
Section1
<
<
Section1.1
Section1.2
Section2
显示结果是:
1.AnhuiProvince
1.CityHefei
2.CityWuhu
2.Shanghai
对应的语法树为:
图2.1
通过上面的HTML语言子集,可以设计结构化的Web文档。
对于这样的文档,我们可以提取其结构信息,建立对应的结构化数据存储,并可以在此基础上进一步做相应应用如查询操作等。
熟练应用线性结构、树等数据结构。
1.根据前面介绍的HTML语言子集,编写合法的文档,作为输入文件。
也可以使用附录中所给的内容建立文档作为输入;
2.然后用相应算法提取其结构化信息,生成如图2.1的树形结构。
3.在已经建立的结构化存储数据结构上,做单词查询操作。
输入一个查询关键字(如”City”),要求返回所有匹配的单词所在原HTML文档中的位置信息(如,City:
Section1.2thefirstwordandSection1.2thefirstword)。
4.下面给出一个实现的算法。
这里考虑一个简单的情况,即<
中只有一个有向列表,对于<
标签中有多个列表的情况,通过简单的修改此算法可以解决:
1)对于这样一个HTML文档,<
是无关紧要的,在读取文档内容时可以忽略。
核心的结构化信息在有序列表中。
2)遇到第一个<
时,生成头节点,头节点内容为空,curParent=curNode都指向该节点;
3)每当遇到一个<
,生成curParent指向的节点的一个子节点curNode,<
后内容即为该节点的内容;
4)每当遇到一个<
,curParent=curNode,准备以curParent为根的子树(递归操作);
5)每当遇到一个<
,则curNode指向的节点生成完毕(即不再往下递归地生成子树),继续读文件(注意,<
后的第一个<
应忽略,因为<
其后必然有一个<
);
6)每当遇到一个<
,则以curParent为根的子树生成完毕,curParent=curParent->
parent;
7)当读到<
时,整个树生成完毕,返回其头指针。
针对前面示例的html文件,其语法树生成过程图示如下:
(a)读到第一个<
,生成空的头节点1。
(b)读到<
后第一个<
,生成第一个
子节点2,并将<
其后内容作为节点内容。
(c)遇到<
,curParent=curNode,准备(d)再次读到<
,生成以curParent
以curParent为根生成子树;
读到<
,生为根的子节点4;
,非<
成以curParent为根的子节点3;
后第一个<
,curNode指向的节点
,curNode指向生成完毕。
的节点生成完毕。
(e)读到<
,则以curParent为根的子树(f)读到<
,生成以curParent为根的
生成完毕,curParent=curParent->
parent,子节点5,内容为”Section2”;
再读到
即curParent从2变为1;
再往下读到<
,<
,curNode节点生成结束;
读到
此为<
,忽略掉,继续往后<
,以curParent(节点1)为根的
读文件。
子树生成完毕;
,整个树
生成完毕,返回头指针。
六、迷宫问题。
传说在远古时候,米诺斯国王统治着爱琴海南端的克里特岛。
他建造了一座有无数宫室的迷宫,在迷宫中喂养了一头人身牛头的恶兽——米诺牛。
为了供奉它,米诺斯要希腊的雅典每九年进贡七对童男女喂米诺牛。
当时,雅典有位名叫忒休斯的王子,他不忍人民遭受这种灾难,毅然决定跟随第四批被进贡的童男女去克里特杀死米诺牛。
在克里特,英勇的忒休斯赢得了米诺斯的女儿的爱慕。
她交给忒休斯一个线团,让他按下面规则边走边放线:
(1)每到一个岔口,找没有铺上线的路走;
若找不到未铺上线的路,就沿原来的路返回到前一个岔口。
(2)不走已铺上两条线的路。
用这种方法,忒休斯终于杀死米诺牛,胜利的走出迷宫
七、学生数据结构成绩管理系统
[基本要求]
(1)学生信息及成绩的录入
要求包括的学生信息有:
学号、姓名、性别、出生日期、民族及数据结构成绩(具体内容可自行假设,至少录入10名以上学生)
所录入的学生按学号散列存储(散列函数为:
学号%5取整,如1002%5=2),采用拉链法解决冲突。
(2)学生成绩的查询
要求根据提供的学号完成学生成绩的查询(必须采用哈希查找)
(3)学生成绩的分段统计和排序输出
统计出各分数段学生人数(60分以下,60~70,71~80,...)
采用任何一种排序方法,将学生成绩从高到低排序输出
八、哈希表应用
[问题描述]
针对某个集体中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。
假设人名为中国人姓名的汉语拼音形式。
待填入哈希表的人名共有300个,取平均查找长度的上限为2。
哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。
[测试数据]
取读者周围较熟悉的300个人名。
[选作内容]
(1)从教科书上介绍的集中哈希函数构造方法中选出适用者并设计几个不同的哈希函数,比较他们的地址冲突率(可以用更大的名字集进行实验)。
(2)研究这300个人名的特点,努力找一个哈希函数,使得对于不同的拼音名一定不发生地址冲突。
(3)在哈希函数确定的前提下尝试各种不同处理冲突的方法,考察平均查找长度的变化和造好的哈希表中关键字的聚集性。
九、内部排序算法比较
各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。
试通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。
(1)对以下10种常用的内部排序算法任意选择6种进行比较:
直接插入排序;
折半折入排序;
二路插入排序;
希尔排序;
起泡排序;
快速排序;
简单选择排序;
堆排序;
归并排序;
基数排序。
(2)待排序表的表长不小于100;
其中的数据要用伪随机数产生程序产生;
至少要用5组不同的输入数据作比较;
比较的指标为有关键字参加的比较次数和关键字移动次数(关键字交换计为3次移动)。
由随机产生器决定。
[实现提示]
主要工作是设法在程序中适当的地方插入计数操作。
程序还可以包括计算几组数据得出结果波动大小的解释。
注意分块调试的方法。
十、校园导游程序
用无向网表示安阳师范学院校园景点或建筑物平面图,图中顶点表示主要景点或建筑物,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
(1)查询各景点的相关信息;
(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和道路的信息。
(5)求多个景点的最佳(最短)游览路径。
十一、实现第7章图中的部分算法,这些算法至少包括以下两组:
(1)深度和广度优先搜索遍历图;
(2)构造最小生成树的两种算法
(3)拓扑排序算法;
(4)求解关键路径;
(5)求解最短路径。
十二、合理设计手机键盘
【题意描述】
我们的手机键盘上将26个字母如下左图设置在8个键盘上,但每个字母的按键频率是不同的,因此如果按照右图的方式设置字母在键盘上的相对位置可能会使所有字母的按键频率与按键次数乘积之和达到最小,从而更加方便客户使用。
我们的任务是根据输入的键盘数和字符数及每个字符的使用频率来确定最合理的分配方式,使分配后所有字符的频率和按键次数的乘积之和最小。
在每个键盘上,处于第i个位置上的字符按键次数为i,在分配的过程中我们不能更改字符的相对位置。
该题目详细描述如下:
I-Keyboard
TimeLimit:
2000MS
MemoryLimit:
32768K
TotalSubmissions:
3235
Accepted:
1690
Description
MostofyouhaveprobablytriedtotypeanSMSmessageonthekeypadofacellularphone.Itissometimesveryannoyingtowritelongermessages,becauseonekeymustbeusuallypressedseveraltimestoproduceasingleletter.Itisduetoalownumberofkeysonthekeypad.Typicalphonehastwelvekeysonly(andmaybesomeothercontrolkeysthatarenotusedfortyping).Moreover,onlyeightkeysareusedfortyping26lettersofanEnglishalphabet.Thestandardassignmentoflettersonthekeypadisshownintheleftpicture:
1
2
abc
3
def
4
ghi
5
jkl
6
mno
7
pqrs
8
tuv
9
wxyz
*
space
#
abcd
efg
hijk
lm
nopq
rs
Thereare3or4lettersassignedtoeachkey.Ifyouwantthefirstletterofanygroup,youpressthatkeyonce.Ifyouwantthesecondletter,youhavetopressthekeytwice.Forotherletters,thekeymustbepressedthreeorfourtimes.Theauthorsofthekeyboarddidnottrytooptimisethelayoutforminimalnumberofkeystrokes.Instead,theypreferredtheevendistributionoflettersamongthekeys.Unfortunately,somelettersaremorefrequentthanothers.Someofthesefrequentlettersareplac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课外 实践 安排