计算机软件基础实验指导书内容.docx
- 文档编号:4282497
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:8
- 大小:23.35KB
计算机软件基础实验指导书内容.docx
《计算机软件基础实验指导书内容.docx》由会员分享,可在线阅读,更多相关《计算机软件基础实验指导书内容.docx(8页珍藏版)》请在冰豆网上搜索。
计算机软件基础实验指导书内容
实验一线性表及其应用
一、实验目的
1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。
2.掌握线性表的顺序存储结构——顺序表的定义及C语言实现。
3.掌握线性表在顺序存储结构——顺序表中的各种基本操作。
4.掌握线性表的链式存储结构——单链表的定义及C语言实现。
5.掌握线性表在链式存储结构——单链表中的各种基本操作。
二、实验原理
在数据处理中,大量数据均以表格形式出现,称为线性表,它是一种最简单也是最常见的数据结构。
线性表是数据元素的有限序列。
线性表的结构特点是:
数据元素之间是线性关系,线性表中存在唯一的“第一个元素”(表头),必存在一个唯一的“最后一个元素”(表尾)。
除第一个元素外,每个元素有且只有一个前趋元素,除最后一个元素外,每个元素有且只有一个后续元素。
三、实验内容
1.顺序线性表的建立、插入及删除。
2.链式线性表的建立、插入及删除。
四、实验步骤
1.建立一个顺序表存储序列{21,23,14,5,56,17,31},然后在第i个位置插入元素68。
2.写出打印算法在屏幕上显示该顺序表中各元素的值及顺序表的长度。
3.建立一个带头结点的单链表存储序列{21,23,14,5,56,17,31}。
4.写出打印算法在屏幕上显示该单链表中各元素的值及单链表的长度。
五、实现提示
1.由于C语言的数组类型也有随机存取的特点,一维数组的机内表示就是顺序结构。
因此,可用C语言的一维数组实现线性表的顺序存储。
在此,我们利用C语言的结构体类型定义顺序表:
#defineMAXSIZE100
structsequenlist
{intelem[MAXSIZE];
intlast;/*顺序表的长度*/
}sequenlist;
typedefstructsequenlistsequentable;
将此结构定义放在一个头文件sqlist.h里,可避免在后面的参考程序中代码重复书写,另外在该头文件里给出顺序表的建立及常量的定义。
2.注意如何取到第i个元素,在插入过程中注意溢出情况以及数组的下标与位序(顺序表中元素的次序)的区别。
3.单链表的结点结构除数据域外,还含有一个指针域。
用C语言描述结点结构如下:
structnode
{
intdata;//数据域
structnode*next;//指针域
};
typedefstructnodeNODE;
注意结点的建立方法及构造新结点时指针的变化。
构造一个结点需用到C语言的标准函数malloc(),如给指针变量p分配一个结点的地址:
p=(NODE*)malloc(sizeof(NODE));该语句的功能是申请分配一个类型为NODE的结点的地址空间,并将首地址存入指针变量p中。
当结点不需要时可以用标准函数free(p)释放结点存储空间,这时p为空值(NULL)。
六、实验报告要求
♦简述实验目的、原理。
♦写出线性表插入、删除结点算法。
♦比较利用数组和指针实现线性表的插入与删除的不同。
♦附上程序清单
实验二堆栈及其应用
一、实验目的
1.掌握栈的顺序存储结构——顺序栈的定义及C语言实现。
2.掌握栈的顺序存储结构——顺序栈中的各种基本操作。
3.掌握栈的链式存储结构——链栈的定义及C语言实现。
4.掌握栈的链式存储结构——链栈中的各种基本操作。
二、实验原理
栈是限定只能在表的同一端进行插入和删除操作的线性表。
其中允许进行插入和删除操作的一端称为栈顶(top),而表中固定的一端称为栈底(bottom)。
栈中元素个数为零时称为空栈。
由于栈中的元素的插入和删除只能在栈顶进行,所以总是后进栈的元素先出来,即栈具有后进先出(LastINFirstOut,缩写为LIFO)的特性,故栈又称为“后进先出”(LIFO表)。
三、实验内容:
1.顺序线性表的建立、插入及删除。
2.链式线性表的建立、插入及删除。
3.通过栈操作实现十进制到二进制的转换。
四、实验步骤
1.建立顺序栈,写出栈初始化,进栈,出栈的算法。
2.利用顺序栈的进栈和出栈操作实现十进制到二进制的转换。
3.建立链栈,写出栈初始化,进栈,出栈的算法。
4.利用链栈的进栈和出栈操作实现十进制到二进制的转换。
五、实现提示:
1.算法原理:
由于十进制数转换为二进制数的方法是依次将十进制数除以2取余,然后将余数倒排序。
这样刚好满足“先进后出”的特性,即可以将除2取余的结果依次进栈,最后再依次出栈。
2.算法示意图:
例如将十进制数13转换为二进制,其方法如下:
进制转换函数定义,以十进制转换为二进制为例
voiddec_to_bin(intN,intB)
{
inte;
InitStack(S);//初始化堆栈
while(N){
push(S,N%B);
N=N/B;
}
while(!
StackEmpty(S)){//堆栈判空
e=pop(S);
printf(“%d”,e);
}
}
六、实验报告要求
♦简述实验目的、原理
♦写出顺序栈和链栈的插入、删除算法
♦写出运用栈实现十进制到十六进制转换的算法。
♦附上程序清单
实验三二叉树的遍历
一、实验目的
1.理解二叉树的概念。
2.掌握二叉树的构造与存储。
3.掌握二叉树的前序,中序和后序遍历。
二、实验原理
树型结构是一类很重要的非线性数据结构,元素结点之间存在明显的分支和层次关系。
树型结构在客观世界中广泛存在。
数是由n个(n>=0)结点组成的有限集合,其中有且仅有一个结点称为根结点(root),其余结点构成根结点的子树或叶子。
二叉树是由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。
三、实验内容
1.产生20个10到100之间的随机整数,并用一个数组存储该序列。
2.用先序方法建立一棵二叉树。
3.编写先序遍历、中序遍历、后序遍历二叉树的程序。
四、实验步骤
1.写出一个算法将20个10到100之间的随机整数存入数组。
2.用前序法建立一颗二叉树。
3.写出先序遍历、中序遍历、后序遍历二叉树的算法。
4.写出打印算法在屏幕上显示三种遍历序列。
五、实现提示
实现产生20个10到100之间的随机整数的代码如下:
#defineN10
voidgetrandomnum()
{
inti;
printf("得到个到的随机数\n");
for(i=0;i<=N-1;i++)
{
A[i]=10+rand()%90;
printf("%d",A[i]);
}
}
六、实验报告要求
♦简述实验目的、原理。
♦写出二叉树的先序遍历、中序遍历、后序遍历算法。
♦写出三种遍历序列。
♦附上程序清单
实验四无序表的查找与排序
一、实验目的
1.理解排序与查找的概念。
2.掌握各种排序方法,熟练掌握直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序等算法的基本思想。
3.关键字序列有序与无序,对于不同的排序方法有不同的影响,通过该实验进一步加深理解。
4.掌握各种查找方法。
二、实验原理
查找也称为检索,亦即查表,就是在大量的信息集中寻找一个特定的信息元素。
线性表的查找包括顺序查找,折半查找和分块查找。
排序是计算机程序设计中的一种重要运算,它的功能是将一个数据元素的无序序列调整为一个有序序列。
经排序的数据若按从大到小的顺序排列,则称为下降序。
反之,若经排序的数据若按从小到大的顺序排列,则称为上升序。
常见的排序方法包括直接插入排序,简单选择排序,冒泡排序,快速排序,归并排序。
三、实验内容
现有给定序列(5,13,19,21,37,56,64,75,80,88),写出查找关键字K分别是21和85的完整程序。
四、实验步骤
1.用一个数组存储给定序列。
2.写出顺序查找和折半查找的算法。
3.写出直接插入排序,简单选择排序,冒泡排序的算法。
4.在主程序中调用查找算法查找关键字K分别是21和85的程序。
5.在主程序中调用排序算法对给定序列排序,并写出打印算法在屏幕上显示经排序后的序列。
五、实现提示:
用一维数组V[n]存储这些无序整数,运用各种排序方法对数组中的数进行排序。
对排好序的数采用不同查找方法进行查找,分析各自的查找次数与效率。
六、实验报告要求
♦简述实验目的、原理。
♦写出顺序查找和折半查找的算法。
♦写出直接插入排序,简单选择排序,冒泡排序的算法。
附上程序清单
实验五学生成绩管理系统
一、实验目的
1.理解关系数据库的基本概念。
2.练习循环与分支程序的设计。
3.进一步熟悉SQL常用命令、语句和函数的使用。
二、实验原理:
关系数据库是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据。
现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。
关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
目前主流的关系数据库有oracle、SQL、access、db2、sqlserver,sybase等。
三、实验内容:
本实验属于综合性实验。
设计一个学生管理系统,能对学生相关信息进行录入、查询、删除、打印等功能。
本实验由学生自行设计方案加以实现。
本实验涉及的课程的知识点有:
软件开发方法、关系数据库设计、SQL、VFP、VC++或DELPHI软件。
学习用SQL语言定义、查询、修改和控制数据库。
本实验涉及的相关课程有:
数据结构、软件工程、数据库、VFP或DELPHI开发环境的操作和应用。
四、实验步骤:
1.建立一个学生成绩数据库。
数据库中包含的字段(学号、姓名、性别、年龄、专业、所在系、课程号、课程名称、学分、成绩)。
可将其分解为三个表。
①学生表:
Student(Sno,Sname,sex,age,major,dept)
②课程表:
Course(Cno,Cname,credit)
③学生选课表:
SC(Sno,Cno,Grade)
2.准备好10-20人的信号与系统、通信原理、计算机软件基础、嵌入式技术四门课程的成绩(随便输入),以作为数据库文件的数据。
3.设计一个管理程序,具有以下功能:
①能够根据要求进行排序(平均分、单科成绩)
②能够按照学号或姓名检索学生情况。
③可输出优秀学生(各科成绩在85分以上)的情况。
④可输出不及格学生的情况。
五、实验说明:
本设计性实验是在学习了开发环境的基本功能以及数据库设计、软件开发方法、SQL查询语言后,开设的综合性实验。
在教学中,由于该项目的设计的工作量大,4学时的实验时间难以满足教学要求,因此改革后的授课方式和组织形式具体做法是:
提前1周布置实验任务,按照1:
1的学时在课下由学生进行方案准备和基本模块的设计,在课上完成总体设计及调试,在开发环境上验证设计成果。
六、实验报告要求
♦简述实验目的、原理。
♦写出利用SQL语言定义、查询、修改和控制数据库的关键语句。
♦用一种高级语言写出管理程序并在界面上将结果显示出来。
附上程序清单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 基础 实验 指导书 内容