【软件基础】课程实验1及参考程序

合集下载

计算机软件技术基础实验报告

计算机软件技术基础实验报告

计算机软件技术基础实验报告自动化0901班郝万福学号:20092395实验1:线性表的排序与查找目的:掌握数据结构的基本概念、线性表的基本操作以及查找和排序方法的设计。

内容:键盘输入一组无序数据,添加到线性表中;排序线性表并输出排序结果;键盘输入一个数,并插入到排好序的线性表中(要求插入后的表仍为有序表),输出结果;键盘输入一个数,并从线性表中删除相应的数据,输出结果。

要求:程序清单;运行过程及运行结果。

实验代码:/*班级:自动化 0901 班姓名:郝万福学号:20092395编译环境: Visual Studio 2011Windows 7 x86-64 旗舰版*/#include"stdafx.h"#include"iostream"#include<conio.h>// 程序实现有各种方法,这里给出一个实例。

// 定义一个线性表const int nMaxSize = 15; // 最大值int nLen = 0; // 表中元素个数int nLinearList[nMaxSize];// 定义操作void LSort();void LOut();void LInsert(int n);void LDelete(int n);int main(){// 输入数据并放入线性表中printf("Please input data\n"); // std::cout << "Please input data\n";int nIn = 0;for (int i = 0; i <= 9; i++){scanf("%d",&nIn); // std::cin >> nIn;nLinearList[i] = nIn;nLen++;}LSort(); // 排序线性表LOut(); // 输出结果printf("Please input a data to insert \n");scanf("%d",&nIn);LInsert(nIn); // 输入一个数字,并插入到线性表中LOut();printf("Please input a data to delete \n");scanf("%d",&nIn);LDelete(nIn); // 输入一个数字,并从线性表中删除LOut();char chTmp;printf("Please input a char to finish this program.");chTmp = getch();return 0;}void LSort() // 冒泡排序,由大到小{for(int j=0;j<=10;j++){for (int i=0;i<11-j;i++)if (nLinearList[i]<nLinearList[i+1]){int temp=nLinearList[i];nLinearList[i]=nLinearList[i+1];nLinearList[i+1]=temp;}}}void LOut(){printf( "\n");for (int i = 0; i < nLen; i++){printf( "%d, ", nLinearList[i] );}printf( "\n");}void LInsert(int n){ nLen++;nLinearList[nLen] = n;for(int k=0;k<=nLen;k++){for (int l=0;l<nLen+1-k;l++)if (nLinearList[l]<nLinearList[l+1]) {int temp=nLinearList[l];nLinearList[l]=nLinearList[l+1]; nLinearList[l+1]=temp;}}}void LDelete(int n){int b=1;for(int k=0;k<=nLen;k++){if(n==nLinearList[k]) {b=0;}if(b==0){nLinearList[k]=nLinearList[k+1];}}nLen--;}实验结果:实验2:栈与队列的应用目的:掌握栈与队列的基本概念、基本操作及设计与应用。

经济统计与分析软件应用基础 第1章 实验

经济统计与分析软件应用基础 第1章 实验

实验1.1 Excel2010基本操作(一)【实验目的】●掌握启动Excel2010的方法●掌握Excel2010工作表的格式化方法●掌握保存工作簿的操作●掌握退出Excel2010的三种方法【实验内容】1.插入行、列,合并和对齐单元格,给数据表加表标题,并设置标题格式。

2.设置行高和合适的列宽,单元格字体字号,单元格自动换行。

3.设置单元格的边框和底纹4.保存文件5.退出Excel2010【操作步骤】1.启动Excel2010单击“开始”按钮,选择“所有程序”菜单下的“Microsoft Office2010”文件夹并单击,然后再单击“Excel2010”快捷方式,即可启动Excel2010。

2.打开工作簿“实验1.1.xlsx”在Excel 2010 ,选择“文件”选项卡的“打开”命令,在“打开”对话框中选择“实验1.1.xlsx”,单击“打开”按钮,则打开“实验1.1”工作表数据。

如图1-1所示。

图1-1“实验1.1”工作表数据3.插入空行,给数据表加表头标题并设置标题格式。

(1)选中行号1,右击,在弹出的快捷菜单中选“插入”命令,则在第1行之前插入一个空行。

(2)在A1单元格输入“图书情况销售表”,作为表标题(注:不输入引号)。

(3)选择A1:F1,合并后居中成为一个单元格。

4. 设置行高、合适的列宽、单元格字体、字号。

(1)设置第1行的行高为30。

选中第1行,选择“开始“选项卡“单元格”组中的“格式”命令,选择“行高”,在打开的“行高”对话框中输入“30”,单击“确定”按钮。

或选中第1行,右击选择“行高”,输入30。

(2)选中A1单元格内容,设置文字颜色:红色;字体:宋体;字号:20号。

(3)选中单元格区域A2:F47,设置字体:华文仿宋;字号:16。

(4)设置合适的列宽选中E列,选择“单元格“组中的“格式”命令,在下拉菜单中选择“自动调整列宽”命令。

(5)设置自动换行选中B列,选择“开始”选项卡“对齐方式”组中的“自动换行”命令。

计算机软件技术基础实验指导书(学生版)

计算机软件技术基础实验指导书(学生版)
二、实验前预习
每次实验前,学生须仔细阅读本实验指导书的相关内容,明确实验目的、要求;明确实验步骤;复习与实验内容有关的理论知识;预习实验软件的使用方法及注意事项;做好预习要求中提出的其它事项。
三、实验注意事项
1.实验开始前,应先检查本组的仪器设备是否齐全完备。
2.实验时每组同学应分工协作,使每个同学受到全面训练。
3.实验中严格遵循操作规程,如发现异常,报告指导教师检查处理。
5.实验过程和观察现象要认真细致,实事求是。
6.爱护公物,发生仪器设备等损坏事故时,应及时报告指导教师,按有关实验管理规定处理。
7.自觉遵守学校和实验室管理的其它有关规定。
四、实验总结
每次实验后,应对实验进行总结,即对实验过程进行整理,分析实验现象,撰写实验报告。实验报告除写明实验名称、日期、实验者姓名、同组实验者姓名外,还包括:
}
template <class T>
void sq_LList<T>::ins_sq_LList(int i,T b)
{
int k;
if (nn==mm) //存储空间已满,上溢错误
{cout<<"overflow"<<endl; return;}
if (i>nn) i=nn+1; //默认为在最后一个元素之后插入
1.实验目的;
2.实验用软件和工具;
3.实验主要步骤;
5.实验程序与程序运行结果;
6.调试中的问题整理;
7.完成每项实验的特别要求。
实验一
一、实验目的
1.掌握顺序表结构的实现方式。
2.掌握顺序表常用算法初始化、插入、删除等操作的程序实现。

《软件技术基础》实验指导

《软件技术基础》实验指导

说明每个实验题目含有一个main函数和一些函数, 与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出, 供上机实验参考使用。

对于每个题目, 只需要根据题目要求设计算法, 补充函数定义, 然后对程序进行编译、调试。

实验一线性表一、实验目的1.熟悉线性表的顺序和链式存储结构2.掌握线性表的基本运算3.能够利用线性表的基本运算完成线性表应用的运算二、实验内容设有一个线性表E={e1, e2, …, en-1, en}, 设计一个算法, 将线性表逆置, 即使元素排列次序颠倒过来, 成为逆线性表E’={ en , en-1 , …, e2 , e1 }, 要求逆线性表占用原线性表空间, 并且用顺序表和单链表两种方法表示, 分别用两个程序来完成。

(文件夹: 顺序表逆置、单链表逆置)已知由不具有头结点的单链表表示的线性表中, 含有三类字符的数据元素(字母、数字和其他字符), 试编写算法构造三个以循环链表表示的线性表, 使每个表中只含有同一类的字符, 且利用原表中的结点空间, 头结点可另辟空间。

(文件夹: 分解单链表)实验二栈和队列一、实验目的1.熟悉栈和队列的顺序和链式存储结构2.掌握栈和队列的基本运算3.能够利用栈和队列的基本运算完成栈和队列应用的运算二、实验内容1.设单链表中存放有n个字符, 试编写算法, 判断该字符串是否有中心对称的关系, 例如xyzzyx是中心对称的字符串。

(提示: 将单链表中的一半字符先依次进栈, 然后依次出栈与单链表中的另一半字符进行比较。

)(文件夹: 判字符串中心对称)假设以数组sequ[m]存放循环队列的元素, 同时设变量rear和quelen 分别指示循环队列中队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。

(文件夹:循环队列)实验三串一、实验目的1.熟悉串的顺序存储结构2.掌握串的基本运算及应用二、实验内容1. 串采用顺序存储结构, 编写朴素模式匹配算法, 查找在串中是否存在给定的子串。

软件基础实验报告

软件基础实验报告

实验名称:软件基础实验实验日期:2023年4月15日实验地点:计算机实验室实验目的:1. 熟悉软件工程的基本概念和原则。

2. 掌握软件需求分析、设计、实现和测试的基本方法。

3. 培养团队协作和沟通能力。

实验内容:一、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse4. 数据库:MySQL二、实验内容概述本次实验以一个简单的学生信息管理系统为例,通过实际操作,让学生了解软件开发的整个过程,包括需求分析、系统设计、编码实现和系统测试。

三、实验步骤1. 需求分析- 分析学生信息管理系统的功能需求,如学生信息录入、查询、修改、删除等。

- 分析非功能需求,如系统性能、安全性、易用性等。

2. 系统设计- 设计系统架构,包括前端界面和后端数据库。

- 设计数据库表结构,如学生信息表、课程信息表等。

- 设计界面布局和交互逻辑。

3. 编码实现- 使用Java语言实现学生信息管理系统的功能。

- 使用Eclipse开发工具进行编码。

- 使用MySQL数据库存储数据。

4. 系统测试- 进行单元测试,确保每个模块的功能正确。

- 进行集成测试,确保系统各模块之间能够正常工作。

- 进行性能测试,确保系统满足性能要求。

四、实验结果与分析1. 需求分析通过与用户沟通,明确了学生信息管理系统的功能需求和非功能需求,为后续开发奠定了基础。

2. 系统设计设计了合理的系统架构,包括前端界面和后端数据库,使得系统具有良好的可扩展性和易维护性。

3. 编码实现使用Java语言实现了学生信息管理系统的功能,包括学生信息录入、查询、修改、删除等,满足了需求分析中的功能需求。

4. 系统测试进行了单元测试、集成测试和性能测试,确保了系统的稳定性和性能。

五、实验总结通过本次实验,我们掌握了软件工程的基本概念和原则,熟悉了软件需求分析、设计、实现和测试的基本方法。

同时,培养了团队协作和沟通能力。

在实验过程中,我们遇到了一些问题,如数据库连接失败、界面布局不合理等。

软件学基础实验报告

软件学基础实验报告

软件学基础实验报告实验名称:软件学基础实验报告实验目的:通过本实验,了解并掌握软件工程的基础知识和技术,包括软件开发的生命周期、需求分析、设计过程、编码与调试、软件测试、软件部署等。

实验内容:1. 软件开发的生命周期软件开发的生命周期包括需求分析、设计、编码、测试和部署五个阶段。

在需求分析阶段,我们需要了解用户的需求,并以此为基础定义系统的功能和性能要求;在设计阶段,我们要根据需求分析的结果设计出系统的结构和功能;在编码阶段,我们将设计的结果转化为可执行的代码;在测试阶段,我们要对系统进行测试,验证其功能是否满足需求;在部署阶段,我们要将开发好的软件部署到实际环境中,并提供给用户使用。

2. 需求分析需求分析是软件开发的第一步,也是最重要的一步。

在这一阶段,我们要全面理解用户的需求,通过与用户的交流和访谈,确定软件的功能和性能要求,并记录下来,作为后续开发的基础。

3. 设计过程设计是软件开发过程中的重要环节,其目的是根据需求分析的结果,确定系统的结构和功能。

设计过程包括确定模块划分,设计数据结构和算法,以及完成系统的界面设计。

4. 编码与调试编码是将设计的结果转化为可执行代码的过程,常见的编程语言有C++、Java、Python等,在编码的过程中,我们要注意代码的质量和可读性,遵循良好的编码习惯。

编码完成后,我们还需要进行调试,确保代码运行的正确性。

5. 软件测试软件测试是保证软件质量的重要手段,其目的是通过测试来发现和修复软件中的错误。

测试方法有很多种,包括黑盒测试、白盒测试、灰盒测试等。

测试还需要编写测试用例,对软件的各个功能进行测试,并记录测试结果。

6. 软件部署软件部署是将开发好的软件发布到实际环境中的过程,其目的是让用户可以使用和操作软件。

在部署过程中,我们需要考虑软件的安装方式、软件的配置和用户管理等方面。

实验结果与分析:通过本实验,我深入了解了软件开发的生命周期和各个阶段的具体内容。

计算机软件技术基础课程实验指导书

计算机软件技术基础课程实验指导书
O REM ! n ^ H j q ( % ^ z ^ H z H ^ H B q p
q H pq H c H c H A / U z H, ZLQUDU * AV q * F ! <,
@ <y B( H UDUq yB(UDUd
$
" "
, H z
n H, ! (PDLO d ^ q d y FKHQIO\#FRPq ! d ^ q d _p s < H, q _ q ; &L N L H, r qd
! = / [ d
n H, ! ^ q N d q [ ;d
Q z 3; q 6 ,
q?p3 P
n q3; P
n 3& 3 q
n q36
*L n
%n
n e z q VVb y s P
# $ " # # " # " $ $ # " $ # " " #
" # " " "$ # #
y c o / q P R Lc n d c \ y *L q *L q c p 7 & ?* d
?3
Ub
;
z p 3; V *L q
%n z
w &L N L xk
q [ [ & & H
H n y ;AV 9& n q /
? z
NQ
V q z c c c
] z /B z q ?3 c c c q j& B

软件基础实验报告

软件基础实验报告

软件基础实验报告软件基础实验报告导言软件基础作为计算机科学与技术专业的一门基础课程,对于学生的专业素养和实践能力培养具有重要意义。

本次实验旨在通过实践操作,加深学生对软件基础知识的理解和应用能力的提升。

本报告将详细记录实验过程和结果,并对实验中遇到的问题进行分析和解决。

实验一:编写简单的计算器程序本实验要求我们使用Python语言编写一个简单的计算器程序。

我们首先进行了Python环境的搭建和相关库的导入,然后按照要求设计了用户界面,包括输入框、按钮和输出框等。

接着,我们编写了计算器逻辑代码,实现了加减乘除等基本运算功能。

最后,我们进行了测试,确保程序的正确性和稳定性。

实验结果显示,我们的计算器程序能够正确地进行基本运算,并且在用户输入非法字符时会给出相应的提示。

通过这个实验,我们不仅熟悉了Python语言的基本语法和库的使用,还提高了问题解决能力和编程思维。

实验二:设计一个学生信息管理系统本实验要求我们使用C语言设计一个学生信息管理系统。

我们首先进行了C语言环境的搭建和相关库的导入,然后按照要求设计了系统的功能模块,包括学生信息的录入、查询、修改和删除等。

接着,我们编写了相应的代码,并进行了测试。

实验结果显示,我们的学生信息管理系统能够正确地进行学生信息的录入、查询、修改和删除等操作,并且在用户输入非法信息时会给出相应的提示。

通过这个实验,我们不仅熟悉了C语言的基本语法和库的使用,还提高了系统设计和数据结构的能力。

实验三:实现一个简单的图像处理程序本实验要求我们使用Java语言实现一个简单的图像处理程序。

我们首先进行了Java环境的搭建和相关库的导入,然后按照要求设计了程序的功能模块,包括图像的读取、灰度化、二值化和边缘检测等。

接着,我们编写了相应的代码,并进行了测试。

实验结果显示,我们的图像处理程序能够正确地进行图像的读取、灰度化、二值化和边缘检测等操作,并且在用户输入非法图像时会给出相应的提示。

《计算机软件技术基础》实验1 程序流程设计

《计算机软件技术基础》实验1 程序流程设计

计算机科学系实验报告书
课程名:《计算机软件技术基础》题目:程序流程设计
班级:
学号:
姓名:
1、实验内容或题目
编程实现输出9*9乘法口诀表
2、实验目的与要求
⑴进一步熟悉熟悉VC++6编译环境,掌握运用VC编译C程序的基本方法
⑵掌握常见的流程控制结构,运用控制结构编写多重循环的C程序,输出9*9表
⑶输出上三角、下三角、左三角、右三角等几种形式
3、实验步骤与源程序
⑴实验步骤
1.定义整型变量i,j,k;
2.定义循环语句使i能从一加到九,并在i的循环语句中,再利用循环语句使得j依次从
一加到九,定义k为i与j的乘积,并输出k=j*i,当i完成一次循环后换行
⑵源代码
4、测试数据与实验结果(可以抓图粘贴)
结果分析与实验体会
很久没有用VC编写C程序,刚开始找不到编译按纽,后来在老师的指点下完成程序的运行,并在编写过程中逐步完善程序,按照乘法表的顺序及格式慢慢调试使得运行结果和预期的相符,。

软件工程实验一

软件工程实验一

《软件工程》课程实验报告四、实验过程与结果性能需求1.系统处理的准确性和及时性系统处理的准确性和及时性是系统的必要性能。

在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学院对信息处理的需求。

并且不能重复复两个学号的信息。

2.系统的开放性和系统的可扩充性学生信息系统在开发过程中,应该充分考虑以后的可扩充性。

比如数据在某个时间段的数据输入拥堵。

或者数据多的时候,应该确保系统有足够的空间给数据的输入和存储。

3.系统的易用性和易维护性学生信息系统针对的大部分是学生,因此系统应该更见简单,便捷。

UI界面应更加的简单易懂。

同时在维护数据的时候应该更加的方便。

这样避免了因为错误的操作而到导致数据的流逝。

2.3用户平台要求网络方面:此开发出的软件要适用于Internet网及校园内的局域网。

软件方面:支持windows系统及一些常用的办公软件如office等。

硬件方面:可以被个人电脑、平板以及功能强大的移动设备所使用。

一.业务逻辑1.1业务分解1.2业务流图A)学生信息管理:B)学业信息管理:C)学分建设:D)学生奖助信息管理:E)学生活动管理:F)素质测评:五、实验总结在本次实验,熟悉了需求分析的一般步骤,进一步弄清了业务需求、用户需求、功能和非功能需求之间的区别。

对于一个系统,我知道一开始从哪几个方面对系统进行评价。

通过画用例图,能更清新的看清使用者的操作流程,并认识到了用例图在软件或系统开发过程中的重要性,本次实验学到很多。

设计基础软件实验报告(3篇)

设计基础软件实验报告(3篇)

第1篇一、实验目的本次实验旨在通过设计基础软件,加深对软件设计原理和方法的理解,提高软件设计实践能力。

实验要求学生掌握软件需求分析、设计模型构建、设计规范遵循等基本技能,并能够运用所学知识完成一个简单的软件设计项目。

二、实验内容1. 需求分析- 明确软件功能:设计一款用于学生课程成绩管理的软件,包括成绩录入、查询、统计、导出等功能。

- 用户分析:分析软件目标用户,如教师、学生、教务管理员等。

- 功能模块划分:将软件功能划分为成绩录入、成绩查询、成绩统计、成绩导出等模块。

2. 设计模型构建- 采用UML(统一建模语言)进行软件设计,包括用例图、类图、序列图等。

- 用例图:描述软件与用户之间的交互过程,展示软件功能。

- 类图:描述软件中的类及其关系,包括类属性和方法。

- 序列图:描述软件中对象之间的交互过程,展示对象之间的消息传递。

3. 设计规范遵循- 遵循软件设计规范,如命名规范、编码规范、注释规范等。

- 确保软件设计具有良好的可读性、可维护性和可扩展性。

4. 软件设计实现- 选择合适的编程语言和开发工具,如Java、C、Python等。

- 根据设计模型,编写软件代码,实现软件功能。

- 进行单元测试,确保代码质量。

三、实验步骤1. 需求分析- 与用户沟通,了解软件需求。

- 分析需求,确定软件功能模块。

2. 设计模型构建- 使用UML工具绘制用例图、类图、序列图。

- 确定软件设计模型。

3. 设计规范遵循- 遵循软件设计规范,编写代码。

- 对代码进行注释,提高可读性。

4. 软件设计实现- 选择编程语言和开发工具。

- 根据设计模型,编写代码。

- 进行单元测试,确保代码质量。

5. 软件测试- 设计测试用例,对软件进行测试。

- 分析测试结果,修复缺陷。

四、实验结果1. 完成软件需求分析,明确软件功能。

2. 构建软件设计模型,包括用例图、类图、序列图。

3. 遵循软件设计规范,编写代码。

4. 进行单元测试,确保代码质量。

软件技术基础实验指导书(1)

软件技术基础实验指导书(1)

软件技术基础实验指导书2014年9月1日目录实验一斐波那契数列的实现算法及分析 (3)实验二顺序表的实现与应用 (5)实验三链表的实现和应用 (7)实验四栈的实现和应用 (9)实验五队列 (11)实验六二叉树的创建和遍历 (12)实验七图 (15)实验八哈夫曼树及哈夫曼编码 (16)实验九查找算法的实现 (19)实验十内部排序算法的实现 (26)实验十一迷宫问题 (29)实验十二 B+树程序设计 (30)实验十三四叉树程序设计 (31)实验十四修路方案问题 (32)实验一斐波那契数列的实现算法及分析实验目的:1.掌握分别用递归和非递归方法计算斐波那契(Fibonacci)数列。

2.掌握算法性能测试的方法,并能进行算法分析和比较。

实验环境(硬/软件要求):Windows 2000, VisualC++ 6.0实验内容:二阶Fibonacci数列的定义如下:F0=1,F1=1, F2=2,F3=3,F4=5,。

,Fi=F(i-1)=F(i-2) (i>=1).试用递归法和非递归法两种方法写出计算Fn的函数。

实验要求:1.完成计算Fn的递归函数Fib-rec.2.完成计算Fn的非递归数列Fib-ite.3.当n=10,15,20,25,30,35,40,45时测试以上两种算法执行的时间,并把测试结果填写在附表1-1中。

附表1-1 测试表注:表格中填写的是测试时间,单位μm.4.试解释两种算法在执行时间上的不同,并对两种算法进行算法分析。

【C语言源程序】#include <stdio.h>#include <time.h>Long Fib-rec(int n){if(n==0||n==1)return(1);else return(Fib-rec(n-1) + Fib-rec(n-2) );}long Fib-ite(int n){long fib1,fib2,fib;int i;fib1=1;fib2=1;for (i=3;i<=n,i + + ){fib=fib1+fib2;fib1=fib2;fib2=fib;}return fib;}void main ( ){clock-t us1, us2;int n;printf(“请输入n:\n”);scanf(“%d,&n);us1=clock( );printf(“递归函数计算结果:%1d\n”,Fib-rec(n) ); us2=clock( );printf(“递归函数执行时间%1d毫秒\n”,us2-us1);us1=clock( );printf(“非递归函数计算结果:%1d\n”,Fib-ite(n) ); us2=clock( );printf(非递归函数执行时间%1d毫秒\n”,us2-us1);}实验二顺序表的实现与应用实验目的:1.掌握线性表的概念。

软件基础实验指导书

软件基础实验指导书

目录实验一顺序表的插入、删除 (1)实验二单链表的插入、删除 (4)实验三顺序栈的入栈、出栈 (8)实验四循环队列的入队、出队 (10)实验五稀疏矩阵的转置 (13)实验六二叉排序树的建立、遍历 (15)实验七直接插入排序 (19)实验八直接选择排序 (20)实验九顺序、二分查找 (22)实验十二叉排序树查找 (25)附录实验报告要求 (28)实验一顺序表的插入、删除(2学时)一、实验目的1、理解线性表的顺序存储结构;2、能熟练建立一个顺序表,并能对其进行插入、删除等基本操作;3、能熟练运用宏定义、函数调用。

二、实验内容从键盘输入10个整数,建立一顺序表(顺序表最大长度为20),用顺序表完成在任意一个位置插入任意整数元素以及删除任意位置数据元素的操作(插入、删除位置及要插入元素数值均从键盘输入),进行完任一操作后将顺序表中的内容及表长输出。

三、参考源程序#include <stdio.h>#define MAXLEN 20typedef int elemtype;typedef struct{elemtype List[MAXLEN];int Num;}Seqlist;int insert(Seqlist *la,int i, elemtype x);int del(Seqlist *la,int i);void output(Seqlist *la);main(){Seqlist la;int m,i;elemtype x;la.Num=-1;printf("\nPlease input data:");for(i=0;i<=9;i++){++la.Num;scanf(" %d",&la.List[i]);}printf("Please input the value of m:m=1---insert m=2---delete\nm=");scanf("%d",&m);if(m==1){printf("Please input insert location and insert data:");scanf("%d%d",&i,&x);insert(&la,i,x);output(&la);}else if(m==2){printf("Please input delete location:");scanf("%d",&i);del(&la,i);output(&la);}elseprintf("The value of m is wrong!");}int insert (Seqlist *la,int i, elemtype x){int j;if (i<0||i>la->Num){printf ("\n 插入位置不合理!");return 0;}else if (la->Num==MAXLEN-1){printf ("\n 表满,不能插入!");return 0;}else{for ( j=la->Num; j>=i; j--)la->List[j+1]=la->List[j];la->List[i]=x;la->Num++;return 1;}}int del (Seqlist *la,int i){int j;if (i<0||i>la->Num){printf ("\n the position is invalid");return 0;}else{for ( j=i+1; j<=la->Num; j++)la->List[j-1]=la->List[j];la->Num--;return 1;}}void output(Seqlist *la){int m;printf("当前的线性表为");for(m=0;m<=la->Num;m++)printf(" %d",la->List[m]);printf("\n表长为%d\n",la->Num+1);}四、思考题1.设顺序表L中的数据元素按递增排列,编写一个算法,将数据元素x插入到顺序表L的适当位置上,以保持顺序表的有序性。

软件技术基础实验指导书

软件技术基础实验指导书

软件技术基础实验指导书陈帝伊编著西北农林科技大学水利与建筑工程学院2011年11月实验一单链表的创建一、实验目的1.熟悉VC++6.0的上机环境;2.掌握线性表中链表的数据类型描述,特点及其存储结构;3.掌握单链表的基本操作,创建一个新的链表及其应用;4.掌握线性表的基本运算及应用。

5.掌握基本的循环结构,以及链表建立的循环结束条件。

6.掌握链表的创建核心语句,以及使学生具备初步的程序调试能力。

二、实验内容读入一组数建立链表,以负数作为输入结束。

三、算法描述/*本程序已通过上机验证*/#include<stdio.h>#include<stdlib.h>typedef struct EAM /*定义结点类型,并定义EMP代表该类型*/{double x;struct EAM *next;}EMP;struct typelist /*定义一个全局变量EMPlist,作为将要建立的链表的类型*/ {EMP *head,*rear;long len;}EMPlist; /*该结构体用于记录建立链表的头尾指针以及元素结点的个数*/long creat(EMP *head) /*创建链表,以负数结束(负数不纳入链点)*/{EMP* p;double x;scanf("%lf",&x);while(x>=0){p=(EMP*)malloc(sizeof(EMP));p->x=x;head->next=p;head=head->next;EMPlist.len++;scanf("%lf",&x);}p->next=NULL; /**/EMPlist.rear=p;return EMPlist.len; /**/}/*主函数中调用子函数进行相应的验证*/void main(){ long n=0;EMPlist.head=(EMP*)malloc(sizeof(EMP));/*参数的初始化*/EMPlist.head->next=NULL; /*该链表结构体的各成员在使用前有必要进行初始化*/ EMPlist.rear=NULL;EMPlist.len=0;printf("请输入相关数据:\n");n=creat(EMPlist.head); /*调用创建函数*/}子函数的基本思想:子函数根据主函数传来的链表头采用尾插法进行延长,并最终保证末尾结点的指针域指向为空。

《软件工程》实验指导书(实验一)

《软件工程》实验指导书(实验一)

实验1软件工程概念与相关工具1.1 软件工程的计算环境(实验估计时间:90 分钟)1.1.1 背景知识软件工程学主要研究如何以较少的代价获得高质量的软件,而要达到这个目的,就必须研究软件开发方法和软件开发工具。

软件开发方法就是开发软件的规范化方法。

软件工具是指能支持软件生存周期中某一阶段(如系统定义、需求分析、设计、编码、测试或维护等)的需要而使用的软件系统;软件开发环境则是面向软件整个生存周期,为支持各个阶段的需要,在基本硬件和宿主软件的基础上使用的一组软件系统。

软件工具和软件开发环境都是软件工程的重要支柱,对于提高软件生产率,改进软件质量,以及适应计算机技术的迅速发展有着越来越大的作用。

从20世纪70年代末开始,专家们就致力于软件开发自动化工具的研究,并逐步形成了应用于软件过程的集成的项目支撑环境(Integrated Project Support Environment)和计算机辅助软件工程(CASE,Computer-Aided Software Engineering)工具。

在此基础上建立集成式软件开发环境,全面支持软件开发过程,以期实现软件设计过程的自动化或半自动化。

1.1.2 实验目的1)理解软件工程的基本概念,熟悉软件、软件生存周期、软件生存周期过程和软件生存周期各阶段的定义和内容。

2)通过Internet 搜索与浏览,了解网络环境中主流的软件工程技术网站,掌握通过专业网站不断丰富软件工程最新知识的学习方法,尝试通过专业网站的辅助与支持来开展软件工程应用实践。

1.1.3 工具/准备工作在开始本实验之前,请预习教科书第一章的相关内容。

需要准备一台带有浏览器、能够访问因特网的计算机。

1.1.4 实验内容与步骤1)请查阅有关资料,给“软件”下一个权威性的定义:软件(中国大陆及香港用语,台湾作软体,英文:Software)是一系列按照特定顺序组织的计算机数据和指令的集合。

一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。

软件技术基础实验指导书

软件技术基础实验指导书

目录实验一单链表的生成、插入和删除 (2)实验二二叉树的建立和遍历 (5)实验三二叉排序树的建立和查找 (6)实验四 windows操作系统及应用 (9)实验五数据库设计与应用(一) (10)实验六数据库设计与应用(二) (12)实验一单链表的生成、插入和删除一、实验目的1.掌握单链表的基本操作:建立、插入和删除2.掌握运用C语言上机调试单链表的基本方法。

二、实验环境操作系统和C语言系统三、预习要求了解单链表的建立、插入和删除算法,编写完整的程序。

四、实验内容设计算法,实现线性结构上的单链表的产生以及元素的查找、插入与删除。

具体实现要求:(1)从键盘输入n个整数,以0作为结束标记,产生不带表头的单链表,并输入结点值。

(2)从键盘输入1个整数,在单链表中查找该结点的位置。

若找到,则显示“找到了”;否则显示“找不到”。

(2)从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出单链表所有结点值,观察输出结果。

(4)从键盘输入1个整数,表示欲删除结点的位置,输出单链表所有结点值,观察输出结果。

五、参考算法#include <stdio.h>#include <stdlib.h>/*单链表的定义*/typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct node /*结点类型定义*/{ DataType data; /*结点的数据域*/struct node *next; /*结点的指针域*/}ListNode;typedef ListNode *LinkList;void main(){ int i;DataType key,x;LinkList head;ListNode *p;LinkList CreateList(void);void PrintList(LinkList head);LinkList LocateNode(LinkList head,DataType key);LinkList GetNode(LinkList head,int i);void InsertList(LinkList head,DataType x,int i);void DeleteList(LinkList head,int i);head=CreateList(); /*建立单链表*/PrintList(head); /*打印单链表*/printf("输入要查找的值:");scanf("%d",&key);p=LocateNode(head,key); /*单链表查找*/printf("请输入欲插入元素的位置:");scanf("%d",&i);printf("请输入欲插入的元素:");scanf("%d",&x);InsertList(head,x,i); /*单链表插入*/PrintList(head); /*打印单链表*/printf("请输入欲删除结点的位置:");scanf("%d",&i);DeleteList(head,i); /*单链表删除*/PrintList(head); /*打印单链表*/}/*单链表的建立,从后向前生成*/LinkList CreateList(void){//在此插入必要语句}/*单链表的打印*/void PrintList(LinkList head){//在此插入必要语句}/*单链表的查找,输入一个整数,显示该结点的位置*/LinkList LocateNode(LinkList head,DataType key){/*在不带头结点的单链表head中查找其值为key的结点*///在此插入必要语句}/*单链表的查找2,在不带头结点的单链表head中查找第i个结点*/LinkList GetNode(LinkList head,int i){//在此插入必要语句}/*单链表的插入*/void InsertList(LinkList head,DataType x,int i){/*将值为x的新结点插入到不带头结点的单链表head的第i个结点的位置上*/ //在此插入必要语句}/*单链表的删除,删除不带头结点的单链表中的第i个结点*/void DeleteList(LinkList head,int i){//在此插入必要语句}六、思考题如果生成带头结点的单链表,程序应如何修改?七、实验报告要求具体内容包含以下几项:实验题目、实验目的、实验环境、实验内容与完成情况(要求附上自主设计的源程序)、实验中出现的问题、对问题的解决方案、完成思考题、实验总结等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验1线性表的顺序结构
实验目的和要求
熟悉线性表的基本操作在顺序表上的实现。

实验内容
对已建立的顺序表进行插入和删除的基本操作。

实验步骤及要求
1. 根据实验要求新建文件,取名为sy1.cpp。

2. 根据实验内容加入相应的头文件,保存文件。

录入以下代码(可复制粘贴)。

#include <stdio.h>
#include <malloc.h>
3. 根据实验内容定义下面代表顺序表的结构类型,保存文件。

录入以下代码(可复制粘贴)。

#define maxlen 100
struct sqlisttp{
i nt elem[maxlen];
i nt last;
};
4. 根据实验内容继续定义下列函数,保存文件。

录入以下代码(可复制粘贴)。

//初始化顺序表
void InitList(sqlisttp *&L)
{
L=(sqlisttp *)malloc(sizeof(sqlisttp));
L->last=0;
}
//输出顺序表
void DispList(sqlisttp *v)
{
i nt i;
i f (v->last==0) return;
f or (i=0;i<v->last;i++)
printf("%d ",v->elem[i]);
p rintf("\n");
}
1
//顺序表的插入操作
void insert(sqlisttp *&v, int i, int x)
{
i nt k;
i f (i<1|| i>v->last+1)
printf("插入位置不合适!\n" );
e lse i
f (v->last>=maxlen-1)
printf( "线性表已满!\n" );
e lse
{
i--; //将顺序表位序转化为elem下标*/
for( k = v->last; k >= i; k-- )
v->elem[k+1] = v->elem[k];
v->elem[i] = x;
v->last++;
}
}
//顺序表的删除操作
void deletev(sqlisttp *&v, int i)
{
i nt k;
i f (i<1|| i>v->last)
printf("删除位置不合适!\n" );
e lse
{
i--; //将顺序表位序转化为elem下标*/
for( k = i+1; k <= v->last; k++ )
v->elem[k-1] = v->elem[k];
v->last--;
}
}
5. 设计主函数对所有操作进行测试。

(1)在sy1.cpp的末尾输入以下测试函数(可复制粘贴),再保存。

void main()
{
s qlisttp *v;
2
p rintf("(1)初始化顺序表L\n");
I nitList(v);
p rintf("(2)依次采用尾插法插入11,12,13,10,30元素\n");
i nsert(v,1,11);
i nsert(v,2,12);
i nsert(v,3,13);
i nsert(v,4,10);
i nsert(v,5,30);
p rintf("(3)输出顺序表v:");
D ispList(v);
p rintf("(4)在第4个元素位置上插入99元素\n");
i nsert(v,4,99);
p rintf("(5)输出顺序表v:");
D ispList(v);
p rintf("(6)删除v的第3个元素\n");
deletev(v,3);
p rintf("(7)输出顺序表v:");
D ispList(v);
}
(2)编译sy1.cpp,无错后运行sy1,将运行结果截图保存。

实验提交要求
先用学号姓名建立文件夹,然后将sy1.cpp源程序和运行结果截图复制进来,最后打包提交。

***************************************************************************
【参考程序】
/*文件名:sy1.c*/
#include <stdio.h>
#include <malloc.h>
#define maxlen 100
struct sqlisttp{
int elem[maxlen];
int last;
};
void InitList(sqlisttp *&L)
3
{
L=(sqlisttp *)malloc(sizeof(sqlisttp));
L->last=0;
}
void DispList(sqlisttp *v)
{
int i;
if (v->last==0) return;
for (i=0;i<v->last;i++)
printf("%d ",v->elem[i]);
printf("\n");
}
void insert(sqlisttp *&v, int i, int x)
{
int k;
if (i<1|| i>v->last+1)
printf("插入位置不合适!\n" );
else if (v->last>=maxlen-1)
printf( "线性表已满!\n" );
else
{
i--; //将顺序表位序转化为elem下标*/
for( k = v->last; k >= i; k-- )
v->elem[k+1] = v->elem[k];
v->elem[i] = x;
v->last++;
}
}
void deletev(sqlisttp *&v, int i)
{
int k;
if (i<1|| i>v->last)
printf("删除位置不合适!\n" );
else
{
i--; //将顺序表位序转化为elem下标*/
4
for( k = i+1; k <= v->last; k++ )
v->elem[k-1] = v->elem[k];
v->last--;
}
}
void main()
{
sqlisttp *v;
printf("(1)初始化顺序表L\n");
InitList(v);
printf("(2)依次采用尾插法插入11,12,13,10,30元素\n");
insert(v,1,11);
insert(v,2,12);
insert(v,3,13);
insert(v,4,10);
insert(v,5,30);
printf("(3)输出顺序表v:");
DispList(v);
printf("(4)在第4个元素位置上插入99元素\n");
insert(v,4,99);
printf("(5)输出顺序表v:");
DispList(v);
printf("(6)删除v的第3个元素\n");
deletev(v,3);
printf("(7)输出顺序表v:");
DispList(v);
}
5。

相关文档
最新文档