软件基础实验报告
电脑软件实验报告
实验名称:计算机软件应用实验实验日期:2023年3月15日实验地点:计算机实验室实验目的:1. 熟悉并掌握常用的电脑软件操作技巧。
2. 了解软件的功能及其在生活中的应用。
3. 提高计算机软件的使用效率。
一、实验内容1. 文字处理软件(Word)(1)实验目的:学习Word的基本操作,如新建文档、保存文档、设置字体格式、插入图片等。
(2)实验步骤:① 打开Word软件,新建一个空白文档;② 输入文字内容,并设置字体、字号、颜色等;③ 插入图片,调整图片大小和位置;④ 保存文档。
2. 电子表格软件(Excel)(1)实验目的:学习Excel的基本操作,如创建表格、输入数据、设置单元格格式、使用公式等。
(2)实验步骤:① 打开Excel软件,新建一个空白工作簿;② 创建表格,输入数据;③ 设置单元格格式,如字体、字号、颜色、边框等;④ 使用公式计算数据,如求和、平均值、最大值等。
3. 演示文稿软件(PowerPoint)(1)实验目的:学习PowerPoint的基本操作,如创建演示文稿、设置幻灯片背景、插入图片、添加动画等。
(2)实验步骤:① 打开PowerPoint软件,新建一个空白演示文稿;② 设置幻灯片背景,如颜色、图片等;③ 插入图片、文本框等元素;④ 添加动画效果,使演示文稿更具吸引力。
4. 网络安全软件(杀毒软件)(1)实验目的:学习网络安全软件的基本操作,如安装、卸载、更新病毒库、扫描电脑等。
(2)实验步骤:① 安装杀毒软件,如360安全卫士、瑞星杀毒等;② 更新病毒库,确保杀毒软件的病毒库是最新的;③ 扫描电脑,查找并清除病毒。
二、实验结果与分析1. 通过本次实验,掌握了Word、Excel、PowerPoint等常用软件的基本操作,提高了计算机软件的使用效率。
2. 在实验过程中,学会了设置字体格式、插入图片、使用公式、设置单元格格式、添加动画等技巧,为今后的学习和工作奠定了基础。
3. 在网络安全方面,学会了安装、卸载、更新病毒库、扫描电脑等操作,提高了网络安全意识。
计算机软件技术基础实验报告_2
计算机软件基础实验报告姓名学号实验目的1. 掌握C语言程序设计方法, 并学会上机调试。
2. 熟悉Huffman编码源程序,并构造Huffman树。
实验内容试设计一算法, 从包括n个元素的数组中, 求最大和最小元素, 并使得当n个元素为有序排列时, 元素之间的比较次数仅为n-1次。
在给出的Huffman编码源程序基础上, 要求画出Huffman树, 求出与等长编码相比时的压缩比。
实验要求1.根据实验内容编写算法, 并用 C 语言进行程序设计。
2.将所编程序在计算机上调试通过,并全面测试.实验结果1. 以一个含有8个元素的一维数组{1, 2, 3, 5, 7, 8, 9, 12}为例,设计程序如下:#include<stdio.h>int maxArray(int x ,int y);int minArray(int x ,int y);int main(void){int i = 0 ;int array[8]={ 1, 2, 3, 5, 7, 8, 9, 12} ;printf;do{scanf("%d",&array[i]);i++;} while(i < 8);int maxTemp = array[0];int minTemp = array[0];int maxIndex = 0;int minIndex = 0;for(i=1;i<8;i++){maxTemp = maxArray(array[i] , maxTemp);minTemp = minArray(array[i] , minTemp);}for(i=0;i<8;i++){if (maxTemp == array[i]){maxIndex = i;}if (minTemp == array[i]){minIndex = i;}}printf;return 0;}运行结果如下:2.Huffman编码源程序#include <dos.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{unsigned int weight; //结点权值unsigned int parent,lchild,rchild; //结点的父指针, 左右孩子指针}HTNode,*HuffmanTree; //动态分配数组存储哈夫曼树typedef char **HuffmanCode; //动态分配数组存储哈夫曼编码表void CreateHuffmanTree(HuffmanTree &,unsigned int*,int ); //生成哈夫曼树void HuffmanCoding(HuffmanTree,HuffmanCode &,int ); //对哈夫曼树进行编码void PrintHuffmanCode(HuffmanCode,unsigned int*,int); //显示哈夫曼编码void Select(HuffmanTree,int,int&,int&); //在数组中寻找权值最小的两个结点void main(){HuffmanTree HT; //哈夫曼树HTHuffmanCode HC; //哈夫曼编码表HCint n,i; //n是哈夫曼树叶子结点数unsigned int *w; //w存放叶子结点权值char j='y';printf("演示构造哈夫曼树.\n");printf("输入需要进行编码的字符数目.\n例如:8\n");printf("然后输入每个字符出现的次数/权值.\n");printf("例如:5 29 7 8 14 23 3 11\n");printf("自动构造一棵哈夫曼树并显示哈夫曼编码.\n");printf(" 5---0110\n 29---10\n 7---1110\n 8---1111\n 14---110\n");printf(" 23---00\n 3---0111\n 11---010\n");while(j!='N'&&j!='n'){printf("请输入字符数目:");scanf("%d",&n); //输入字符数目if(n<=1) {printf("该数不合理!\n");continue;}w=(unsigned int*)malloc(n*sizeof(unsigned int)); //开辟空间存放权值printf("请输入各字符出现的次数/权值:\n");for(i=0;i<n;i++) scanf("%d",&w[i]); //输入各字符出现的次数/权值CreateHuffmanTree(HT,w,n); //生成哈夫曼树HuffmanCoding(HT,HC,n); //进行哈夫曼编码PrintHuffmanCode(HC,w,n); //显示哈夫曼编码printf("哈夫曼树构造完毕, 还要继续吗?(Y/N)");scanf(" %c",&j);}}void CreateHuffmanTree(HuffmanTree &HT,unsigned int *w,int n){//w存放n个结点的权值, 将构造一棵哈夫曼树HTint i,m;int s1,s2;HuffmanTree p;if(n<=1) return;m=2*n-1; //n个叶子结点的哈夫曼树, 有2*n-1个结点HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); //开辟2*n各结点空间for(p=HT+1,i=1;i<=n;++i,++p,++w) //进行初始化{p->weight=*w;p->parent=0;p->lchild=0;p->rchild=0;}for(;i<=m;++i,++p){p->weight=0;p->parent=0;p->lchild=0;p->rchild=0;}for(i=n+1;i<=m;++i) //建哈夫曼树{Select(HT,i-1,s1,s2);//从HT[1...i-1]中选择parent为0且weight最小的两个结点, 其序号分别为s1和s2HT[s1].parent=i; HT[s2].parent=i; //修改s1和s2结点的父指针parentHT[i].lchild=s1; HT[i].rchild=s2; //修改i结点的左右孩子指针HT[i].weight=HT[s1].weight+HT[s2].weight; //修改权值}}void HuffmanCoding(HuffmanTree HT,HuffmanCode &HC,int n){//将有n个叶子结点的哈夫曼树HT进行编码, 所编的码存放在HC中//方法是从叶子到根逆向求每个叶子结点的哈夫曼编码int i,c,f,start;char *cd;HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); //分配n个编码的头指针向量cd=(char *)malloc(n*sizeof(char)); //开辟一个求编码的工作空间cd[n-1]='\0'; //编码结束符for(i=1;i<=n;++i) //逐个地求哈夫曼编码{start=n-1; //编码结束位置for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) //从叶子到根逆向求编码if(HT[f].lchild==c) cd[--start]='0'; //若是左孩子编为'0'else cd[--start]='1'; //若是右孩子编为'1'HC[i]=(char *)malloc((n-start)*sizeof(char)); //为第i个编码分配空间strcpy(HC[i],&cd[start]); //将编码从cd复制到HC中}free(cd); //释放工作空间}void PrintHuffmanCode(HuffmanCode HC,unsigned int *w,int n){//显示有n个叶子结点的哈夫曼树的编码表int i;printf("HuffmanCode is :\n");for(i=1;i<=n;i++){printf(" %3d---",w[i-1]);puts(HC[i]);}printf("\n");}void Select(HuffmanTree HT,int t,int&s1,int&s2){//在HT[1...t]中选择parent不为0且权值最小的两个结点, 其序号分别为s1和s2 int i,m,n;m=n=10000;for(i=1;i<=t;i++){if(HT[i].parent==0&&(HT[i].weight<m||HT[i].weight<n)) if(m<n){n=HT[i].weight;s2=i;}else {m=HT[i].weight;s1=i;}}if(s1>s2) //s1放较小的序号{i=s1;s1=s2;s2=i;}}运行结果如下:输入数据后的运行结果:实验心得要熟练掌握程序的编写, 如果没有一定的想象能力和大量的上机实践是根本无法完成的。
基础软件实习报告
一、实习背景随着信息技术的飞速发展,软件产业在我国经济中的地位日益重要。
为了更好地了解软件行业的工作环境和实际操作,提升自身的专业技能,我于今年暑假期间在一家知名软件公司进行了为期一个月的基础软件实习。
以下是我实习期间的学习、工作及收获的总结。
二、实习单位简介实习单位是一家专注于基础软件研发、销售和服务的高新技术企业。
公司拥有一支专业的研发团队,致力于为客户提供优质的软件产品和服务。
实习期间,我参与了公司的一款基础软件的研发工作,对公司的业务有了更深入的了解。
三、实习内容1. 软件需求分析在实习的第一周,我主要参与了软件需求分析的工作。
在项目经理的带领下,我学习了如何与客户沟通,了解客户的需求,并形成详细的需求文档。
通过这个过程,我掌握了需求分析的方法和技巧,为后续的软件开发奠定了基础。
2. 软件设计在实习的第二周,我开始参与软件设计工作。
在项目经理的指导下,我学习了软件架构、模块划分、数据库设计等知识。
通过查阅资料和与团队成员的讨论,我逐步完成了软件设计文档的撰写。
3. 编码实现在实习的第三周,我进入了编码实现阶段。
在项目经理的安排下,我负责了软件中某一模块的编码工作。
在编写代码的过程中,我遇到了许多困难,但在团队成员的帮助下,我逐渐克服了这些困难,完成了模块的编码。
4. 软件测试在实习的第四周,我参与了软件测试工作。
在测试人员的指导下,我学习了如何编写测试用例,并对软件进行了功能测试、性能测试和兼容性测试。
通过这个过程,我对软件测试有了更深入的了解。
四、实习收获1. 提升专业技能通过实习,我对软件开发的各个环节有了更深入的了解,提升了自身的专业技能。
在实习过程中,我学习了需求分析、设计、编码、测试等知识,为今后的工作打下了坚实的基础。
2. 增强团队协作能力在实习过程中,我与团队成员密切合作,共同完成了软件的研发工作。
通过这次实习,我学会了如何与团队成员沟通、协作,提高了自己的团队协作能力。
3. 培养解决问题的能力在实习过程中,我遇到了许多问题,如代码编写错误、需求变更等。
软件基础期末实验报告
一、实验名称软件基础实验二、实验目的1. 熟悉软件工程的基本概念和原则。
2. 掌握软件开发的基本流程和方法。
3. 提高编程能力和团队协作能力。
4. 通过实验加深对软件工程理论知识的理解。
三、实验内容本次实验主要涉及以下几个方面:1. 需求分析2. 系统设计3. 编码实现4. 测试与调试5. 项目文档编写四、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C#五、实验步骤1. 需求分析(1)确定实验项目:设计并实现一个简单的学生管理系统。
(2)收集需求:与学生沟通,了解他们的需求,如添加、删除、修改、查询学生信息等。
(3)编写需求规格说明书:详细描述系统的功能、性能、界面等。
2. 系统设计(1)设计系统架构:采用分层架构,包括表示层、业务逻辑层和数据访问层。
(2)设计数据库:根据需求分析,设计学生信息表,包括学号、姓名、性别、年龄、班级等字段。
(3)设计界面:使用WinForms或WPF等技术设计用户界面,包括添加、删除、修改、查询等功能。
3. 编码实现(1)编写业务逻辑层代码:实现学生信息的增删改查功能。
(2)编写数据访问层代码:使用技术实现与数据库的交互。
(3)编写表示层代码:实现用户界面,与业务逻辑层进行交互。
4. 测试与调试(1)编写测试用例:针对每个功能编写测试用例,确保功能的正确性。
(2)进行单元测试:对每个模块进行测试,确保模块功能的正确性。
(3)进行集成测试:将各个模块组合在一起,测试整个系统的功能。
(4)调试:根据测试结果,对系统进行调试,修复存在的问题。
5. 项目文档编写(1)编写项目需求规格说明书:详细描述系统的功能、性能、界面等。
(2)编写项目设计说明书:描述系统的架构、数据库设计、界面设计等。
(3)编写项目测试报告:记录测试过程、测试结果、存在的问题等。
六、实验结果与分析1. 实验结果通过本次实验,成功实现了一个简单的学生管理系统,包括添加、删除、修改、查询等功能。
软件技术实习报告10篇
软件技术实习报告10篇软件技术实习报告10篇软件技术实习报告10篇软件技术实习报告(一):一、实习目的进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验。
学习SQL的基础知识及精确的运用方法,和有用的相关技术,不断提高自己的工作效率。
透过实习,培养我们综合运用Java语言的面向对象编程潜力;培养我们动手潜力;培养我们良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程潜力;强化自己的团队协作意识,了解软件开发的思考角度和业务流程主要包括流程。
为毕业之后能够更快地进入工作状态并且能够更好的工作,打好必须的基矗二、实习单位及文职人员介绍我的岗位是Java软件工程师。
实习期间参与人力资源管理系统的,根据开发规范和流程独立完成模块设计、编码、测试。
编写相关应用系统的开发文档、索引设计文档等。
较为详细和系统的模块掌握了软件开发的知识体系。
把所学知识与破解实际问题相联系,培养了自己发现风险问题、解决分析问题和解决问题的增长潜力,从而提高了自己从事实际从事组织工作的潜力。
三、实习资料及过程1、Java基础知识Java的基础知识对于一个Java软件工程师生命来说就好比是人的灵魂,此刻的公司在招聘的时候很多股份公司都不在乎你会不会流行的技术,如(Struts、Hibernate、Spring、ibatis等)。
他看重的是你的基础扎不扎实,对于网易、腾讯等大公司来说更是如此,我们运用在开发投资过程中运用了超多的Java基础知识,如类、对象、方法、成员变量、静态变量、封装、继承、多态、异常、接口、抽象类、IO流等等,所以一个系统内对于Java编程基础的依靠立马不言而喻。
2、MySQL、Oracle数据库MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQLAB公司开发、发布并支持的。
MySQLAB是由多名MySQL开发人创办的一家商业公司。
软件的应用实验报告
实验名称:软件应用实验实验日期:2023年3月15日实验地点:计算机实验室一、实验目的1. 熟悉软件的基本操作和功能。
2. 掌握软件在不同场景下的应用方法。
3. 提高软件使用效率,解决实际问题。
二、实验内容1. 实验软件:Microsoft Office Word 20162. 实验任务:(1)创建一篇文档,包括标题、正文、页眉页脚等;(2)设置文档格式,如字体、字号、段落间距等;(3)插入图片、表格等元素;(4)使用查找、替换功能;(5)保存文档。
三、实验步骤1. 打开Microsoft Office Word 2016软件,创建一个新的空白文档。
2. 输入文档标题,设置字体为“黑体”,字号为“小二”,加粗。
3. 在标题下方输入正文内容,设置字体为“宋体”,字号为“四号”,段落间距为“1.5倍行距”。
4. 插入页眉和页脚,设置页眉内容为文档标题,页脚内容为当前日期。
5. 在正文中插入一张图片,调整图片大小和位置。
6. 在正文中插入一个表格,设置表格样式和内容。
7. 使用查找、替换功能,将文档中的某个关键词替换为另一个关键词。
8. 保存文档,选择合适的文件名和保存路径。
四、实验结果与分析1. 成功创建了一篇包含标题、正文、页眉页脚的文档。
2. 设置了文档格式,包括字体、字号、段落间距等。
3. 成功插入图片、表格等元素,并调整了大小和位置。
4. 使用查找、替换功能,快速找到并替换了文档中的关键词。
5. 成功保存文档,确保文档的安全性。
实验结果符合预期,通过本次实验,掌握了Microsoft Office Word 2016的基本操作和功能,提高了软件使用效率,为今后的学习和工作打下了基础。
五、实验总结1. 本次实验使我对Microsoft Office Word 2016有了更深入的了解,掌握了其基本操作和功能。
2. 通过实验,提高了自己的软件使用能力,为解决实际问题提供了有力支持。
3. 在实验过程中,发现了自己的不足之处,如对部分功能的掌握不够熟练,需要在今后的学习中加以改进。
熟悉软件的实验报告(3篇)
第1篇一、实验目的1. 了解软件的基本概念和分类。
2. 熟悉常用的软件操作界面和功能。
3. 掌握软件的基本使用方法。
4. 培养实际操作能力,提高计算机应用水平。
二、实验环境1. 操作系统:Windows 102. 软件版本:Microsoft Office 20163. 硬件设备:联想笔记本电脑三、实验内容1. 熟悉软件的基本概念和分类(1)软件的定义:软件是指计算机系统中与硬件相互依存的一部分,它由程序、数据和相关的文档组成。
(2)软件的分类:系统软件、应用软件、中间件等。
2. 熟悉常用的软件操作界面和功能(1)Microsoft Office 2016:包括Word、Excel、PowerPoint等办公软件。
Word:主要用于文字处理,具有排版、编辑、格式设置等功能。
Excel:主要用于数据处理和统计分析,具有表格、公式、图表等功能。
PowerPoint:主要用于演示文稿制作,具有幻灯片设计、动画效果、多媒体等功能。
(2)Adobe Photoshop:一款专业的图像处理软件,具有图片编辑、设计、合成等功能。
3. 掌握软件的基本使用方法(1)Word操作:1)新建文档:点击“文件”菜单,选择“新建”。
2)输入文字:在文档编辑区输入文字,可以使用键盘和鼠标进行编辑。
3)排版:设置字体、字号、行距、页边距等格式。
4)保存文档:点击“文件”菜单,选择“保存”或“另存为”。
(2)Excel操作:1)新建工作簿:点击“文件”菜单,选择“新建”。
2)输入数据:在单元格中输入数据,可以使用键盘和鼠标进行编辑。
3)公式计算:在单元格中输入公式,进行数据计算。
4)图表制作:选择数据,插入图表,进行可视化展示。
(3)PowerPoint操作:1)新建演示文稿:点击“文件”菜单,选择“新建”。
2)添加幻灯片:点击“新建幻灯片”按钮,选择幻灯片版式。
3)编辑幻灯片:在幻灯片编辑区输入文字、插入图片、添加动画效果等。
计算机软件技术基础实验报告
学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:实验五图的存储与遍历一、实验目的1.熟悉图的逻辑结构定义、深度优先搜索和广度优先搜索算法。
2.掌握图的深度优先搜索和广度优先搜索程序实现。
二、实验用软件和工具实验软件 VC++ 6.0三、实验步骤建立一个图,用C语言实现,调试并输出结果;实现图的深度优先搜索和广度优先搜索,用C语言实现,调试并输出结果。
1.建立并显示一个图。
2.图的深度优先搜索。
3.图的广度优先搜索。
四、实验程序与程序运行结果有向网的邻接矩阵#include "stdio.h"#define M 50#define N 4void init(int b[][N]) /*初始化图*/{ int i,j,k;for(i=0;i<N;i++) /*弧的尾结点*/for(j=0;j<N;j++)/*弧的头结点*/{ printf("%d,%d(%d)",i+1,j+1,M);scanf("%d",&b[i][j]);/*输入权值*/}}void fz(int b[][N],int d[][N])/*复制一个图*/{ int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)d[i][j]=b[j][i];}void sc(int b[][N])/*显示图*/{ int i,j;学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:for(i=0;i<N;i++)/*显示图或最小生成树的数组*/{for(j=0;j<N;j++)printf("%d ",b[i][j]);printf("\n");}}main(){ int a[N][N],c[N][N];printf("\nshuruhu:\n\n");init(a);/*初始化图*/printf("\nxianshitu\n\n");sc(a);/*显示图*/fz(a,c);/*图转置*/printf("\nxianshizhuanzhitu\n\n");sc(c);/*显示图*/}遍历#include <iostream>//#include <malloc.h>#define INFINITY 32767#define MAX_VEX 20 //最大顶点个数#define QUEUE_SIZE (MAX_VEX+1) //队列长度using namespace std;bool *visited; //访问标志数组//图的邻接矩阵存储结构typedef struct{char *vexs; //顶点向量int arcs[MAX_VEX][MAX_VEX]; //邻接矩阵int vexnum,arcnum; //图的当前顶点数和弧数}Graph;//队列类class Queue{public:void InitQueue(){base=(int *)malloc(QUEUE_SIZE*sizeof(int));front=rear=0;}void EnQueue(int e){base[rear]=e;rear=(rear+1)%QUEUE_SIZE;}void DeQueue(int &e){e=base[front];front=(front+1)%QUEUE_SIZE;}public:int *base;int front;学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:int rear;};//图G中查找元素c的位置int Locate(Graph G,char c){for(int i=0;i<G.vexnum;i++)if(G.vexs[i]==c) return i;return -1;}//创建无向网void CreateUDN(Graph &G){int i,j,w,s1,s2;char a,b,temp;printf("输入顶点数和弧数:");scanf("%d%d",&G.vexnum,&G.arcnum);temp=getchar(); //接收回车G.vexs=(char *)malloc(G.vexnum*sizeof(char)); //分配顶点数目printf("输入%d个顶点.\n",G.vexnum);for(i=0;i<G.vexnum;i++){ //初始化顶点printf("输入顶点%d:",i);scanf("%c",&G.vexs[i]);temp=getchar(); //接收回车}for(i=0;i<G.vexnum;i++) //初始化邻接矩阵for(j=0;j<G.vexnum;j++)G.arcs[i][j]=INFINITY;printf("输入%d条弧.\n",G.arcnum);for(i=0;i<G.arcnum;i++){ //初始化弧printf("输入弧%d:",i);scanf("%c %c %d",&a,&b,&w); //输入一条边依附的顶点和权值temp=getchar(); //接收回车s1=Locate(G,a);s2=Locate(G,b);G.arcs[s1][s2]=G.arcs[s2][s1]=w;}}//图G中顶点k的第一个邻接顶点int FirstVex(Graph G,int k){if(k>=0 && k<G.vexnum){ //k合理for(int i=0;i<G.vexnum;i++)if(G.arcs[k][i]!=INFINITY) return i;}return -1;}//图G中顶点i的第j个邻接顶点的下一个邻接顶点int NextVex(Graph G,int i,int j){if(i>=0 && i<G.vexnum && j>=0 && j<G.vexnum){ //i,j合理for(int k=j+1;k<G.vexnum;k++)if(G.arcs[i][k]!=INFINITY) return k;}学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:return -1;}//深度优先遍历void DFS(Graph G,int k){int i;if(k==-1){ //第一次执行DFS时,k为-1for(i=0;i<G.vexnum;i++)if(!visited[i]) DFS(G,i); //对尚未访问的顶点调用DFS}else{visited[k]=true;printf("%c ",G.vexs[k]); //访问第k个顶点for(i=FirstVex(G,k);i>=0;i=NextVex(G,k,i))if(!visited[i]) DFS(G,i); //对k的尚未访问的邻接顶点i递归调用DFS}}//广度优先遍历void BFS(Graph G){int k;Queue Q; //辅助队列QQ.InitQueue();for(int i=0;i<G.vexnum;i++)if(!visited[i]){ //i尚未访问visited[i]=true;printf("%c ",G.vexs[i]);Q.EnQueue(i); //i入列while(Q.front!=Q.rear){Q.DeQueue(k); //队头元素出列并置为kfor(int w=FirstVex(G,k);w>=0;w=NextV ex(G,k,w))if(!visited[w]){ //w为k的尚未访问的邻接顶点visited[w]=true;printf("%c ",G.vexs[w]);Q.EnQueue(w);}}}}//主函数void main(){int i;Graph G;CreateUDN(G);visited=(bool *)malloc(G.vexnum*sizeof(bool));printf("\n广度优先遍历: ");for(i=0;i<G.vexnum;i++)visited[i]=false;DFS(G,-1);printf("\n深度优先遍历: ");for(i=0;i<G.vexnum;i++)学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:visited[i]=false;BFS(G);printf("\n程序结束.\n");}试验运行结果如图:学院:信电学院班级:姓名:学号:课程:计算机软件技术基础实验日期:2013年11月22日成绩:五、实验心得与体会通过本次实验,我掌握了图的深度优先搜索和广度优先搜索程序实现对树与二叉树的遍历,尤其是广度优先遍历和深度优先遍历的理解进一步加深。
软件初级实训报告
一、实训背景随着我国信息技术的快速发展,软件行业成为了我国经济增长的重要驱动力。
为了使大学生更好地适应社会需求,提高自身的实践能力,我们学校组织了一次软件初级实训活动。
本次实训旨在让学生通过实际操作,掌握软件开发的流程和方法,为今后从事相关工作打下坚实基础。
二、实训目的1. 熟悉软件开发的基本流程,包括需求分析、设计、编码、测试和维护等阶段;2. 掌握常用软件开发工具的使用,如Visual Studio、Eclipse等;3. 提高团队协作和沟通能力;4. 培养学生的创新意识和解决问题的能力。
三、实训内容1. 需求分析:以实际项目为例,让学生了解需求分析的重要性,掌握需求分析的方法和技巧。
2. 设计:引导学生根据需求分析结果,进行系统设计和数据库设计,包括数据表结构、存储过程、视图等。
3. 编码:让学生使用Java、C++等编程语言,实现系统功能,编写相应的模块代码。
4. 测试:让学生了解软件测试的基本方法和流程,进行单元测试、集成测试和系统测试。
5. 维护:让学生了解软件维护的基本知识,学会对软件进行更新、升级和故障排除。
四、实训过程1. 实训前期,教师对软件开发的基本知识进行讲解,让学生对软件开发有初步的认识。
2. 实训中期,学生以小组为单位,选择实际项目进行实践。
在教师的指导下,完成需求分析、设计、编码、测试和维护等环节。
3. 实训后期,各小组进行项目展示,教师对项目进行点评,总结实训过程中的优点和不足。
五、实训成果1. 学生掌握了软件开发的基本流程和方法,能够独立完成软件项目的开发。
2. 学生的团队协作和沟通能力得到提高,学会了如何与团队成员共同解决问题。
3. 学生的创新意识和解决问题的能力得到锻炼,能够针对实际问题提出解决方案。
4. 学生对软件行业有了更深入的了解,为今后从事相关工作奠定了基础。
六、实训总结本次软件初级实训活动取得了圆满成功。
通过实训,学生不仅掌握了软件开发的基本技能,还提高了自身的综合素质。
哲睿软件实验报告(3篇)
第1篇一、实验背景随着信息技术的飞速发展,软件工程已经成为现代工程学科的重要组成部分。
为了更好地掌握软件工程的理论和方法,提高实际操作能力,我们选择了哲睿软件作为实验对象,进行了一系列的软件工程实验。
二、实验目的1. 理解软件工程的基本原理和方法。
2. 掌握软件需求分析、设计、编码、测试和维护等各个阶段的具体操作。
3. 提高团队合作能力和沟通能力。
4. 熟练使用相关软件工具,如Visio、Rational Rose等。
三、实验内容本次实验主要包括以下内容:1. 需求分析:通过用户访谈、问卷调查等方式,收集用户需求,并使用UML用例图进行需求建模。
2. 系统设计:根据需求分析的结果,使用UML类图、序列图等进行系统设计。
3. 编码实现:选择合适的编程语言,根据设计文档进行编码实现。
4. 测试:设计测试用例,进行单元测试、集成测试和系统测试,确保软件质量。
5. 维护:对软件进行维护,修复BUG,提高软件性能。
四、实验步骤1. 需求分析阶段:- 与用户进行沟通,了解用户需求。
- 使用Visio绘制UML用例图,明确软件的功能需求。
- 分析用例图,确定系统的主要模块。
2. 系统设计阶段:- 使用Rational Rose绘制UML类图,明确系统的类结构。
- 使用UML序列图,描述系统的主要功能模块之间的交互关系。
3. 编码实现阶段:- 选择合适的编程语言,如Java、C等。
- 根据设计文档进行编码实现,实现系统的主要功能。
4. 测试阶段:- 设计测试用例,覆盖所有功能点。
- 进行单元测试、集成测试和系统测试,确保软件质量。
5. 维护阶段:- 收集用户反馈,分析BUG。
- 修复BUG,优化软件性能。
五、实验结果1. 需求分析:通过用户访谈和问卷调查,收集到用户需求,并使用UML用例图进行需求建模。
2. 系统设计:使用UML类图和序列图,明确了系统的类结构和功能模块之间的交互关系。
3. 编码实现:根据设计文档,实现了系统的主要功能。
软件操作实验报告
实验名称:软件操作实验实验日期:2023年2月24日实验地点:计算机实验室实验者:[姓名]一、实验目的1. 熟悉并掌握常用软件的基本操作。
2. 培养实验操作能力和分析问题、解决问题的能力。
3. 提高计算机应用水平,为今后的学习和工作打下基础。
二、实验内容1. Windows操作系统基本操作2. Microsoft Office系列软件的使用3. 网络浏览器的使用4. 图形图像处理软件Photoshop的基本操作三、实验步骤1. Windows操作系统基本操作(1)启动计算机,进入Windows操作系统。
(2)熟悉桌面元素,包括桌面图标、任务栏、开始菜单等。
(3)新建文件夹,重命名文件夹,删除文件夹。
(4)查找文件,设置文件属性。
(5)安装和卸载软件。
2. Microsoft Office系列软件的使用(1)Microsoft Word的使用- 创建新文档,输入文字内容。
- 设置字体、字号、段落格式。
- 插入图片、表格、页眉页脚等。
- 打印文档。
(2)Microsoft Excel的使用- 创建新工作簿,输入数据。
- 设置单元格格式,包括字体、字号、颜色等。
- 使用公式和函数进行数据计算。
- 制作图表。
(3)Microsoft PowerPoint的使用- 创建新演示文稿,添加幻灯片。
- 设置幻灯片背景、字体、动画等。
- 添加图片、表格、图表等元素。
- 演示文稿的播放和保存。
3. 网络浏览器的使用(1)打开浏览器,输入网址,访问网页。
(2)保存网页,设置主页。
(3)使用书签功能,方便下次访问。
(4)使用下载功能,下载所需文件。
4. 图形图像处理软件Photoshop的基本操作(1)打开Photoshop软件,创建新文件。
(2)使用选区工具选择图片区域。
(3)调整图片亮度、对比度、饱和度等。
(4)使用图层功能进行图片合成。
(5)保存修改后的图片。
四、实验结果与分析1. 实验结果通过本次实验,掌握了Windows操作系统、Microsoft Office系列软件、网络浏览器和Photoshop的基本操作。
软件实训报告(15篇)
软件实训报告软件实训报告(15篇)随着社会一步步向前发展,需要使用报告的情况越来越多,我们在写报告的时候要避免篇幅过长。
那么什么样的报告才是有效的呢?下面是小编为大家收集的软件实训报告,希望能够帮助到大家。
软件实训报告1一、实习目的实习是大学生学习和事业中重要的里程碑,将所学的理论知识与实践结合起来,培养勇于探索的创新精神、提高动手能力,加强社会活动能力,严肃认真的学习态度,为以后专业实习和走上工作岗位打下坚实的基础。
认识实习是教学计划的重要部分,它是培养学生的实践等解决实际问题的第二课堂,它是专业知识培养的摇篮,也是对工业生产流水线的直接认识与认知。
实习中应该深入实际,认真观察,获取直接经验知识,巩固所学基本理论,保质保量的完成指导老师所布置任务。
学习工人师傅和工程技术人员的勤劳刻苦的优秀品质和敬业奉献的良好作风,培养我们的实践能力和创新能力,开拓我们的视野,培养生产实际中研究、观察、分析、解决问题的能力。
通过顶岗实习,拓宽了我的知识面,增加感性认识,把所学知识梳理归类,不断进行总结纠正。
增强了从书本学不到的人际交往能力,语言表达和沟通能力,并了解到当前工程业的现状和发展前景和随着时代发展的最新动态。
通过顶岗实习,大大激发了我向实践学习和探索的积极性,为今后从事的工作打下坚实的基础。
认识实习是我们工科学生的一门必修课,通过认知实习,我们要对机械设计制造及其自动化专业建立感性认识,并进一步了解本专业的学习实践环节。
通过接触实际生产过程,一方面,达到对所学专业的性质、内容及其在工程技术领域中的地位有一定的认识,为了解和巩固专业思想创造条件,在实践中了解专业、熟悉专业、热爱专业。
另一方面,巩固和加深理解在课堂所学的理论知识,让自己的理论知识更加扎实,专业技能更加过硬,更加善于理论联系实际。
再有,通过到工厂去参观各种工艺流程,为进一步学习技术基础和专业课程奠定基础。
这是我们即将走出校门,踏上社会的最后一次实习。
软件应用实验报告
实验名称:XXX软件应用实验实验日期:2023年X月X日实验地点:XXX实验室一、实验目的1. 熟悉XXX软件的基本操作和功能。
2. 了解XXX软件在特定领域的应用。
3. 提高实际操作能力和问题解决能力。
二、实验内容1. XXX软件概述XXX软件是一款集成了多种功能的综合性软件,广泛应用于XXX领域。
本次实验主要针对其核心功能进行操作和探索。
2. XXX软件基本操作(1)启动软件:双击桌面图标或点击“开始”菜单中的软件名称。
(2)界面介绍:熟悉软件的菜单栏、工具栏、状态栏等界面元素。
(3)文件操作:创建、打开、保存、关闭文件等。
3. XXX软件核心功能操作(1)功能一:以XXX软件为例,详细介绍功能一的实现过程。
步骤一:打开软件,点击菜单栏中的“功能一”按钮。
步骤二:在弹出的对话框中,输入所需参数。
步骤三:点击“确定”按钮,软件开始执行。
步骤四:查看执行结果,并进行相关操作。
(2)功能二:以XXX软件为例,详细介绍功能二的实现过程。
步骤一:打开软件,点击菜单栏中的“功能二”按钮。
步骤二:在弹出的对话框中,选择相关选项。
步骤三:点击“开始”按钮,软件开始执行。
步骤四:查看执行结果,并进行相关操作。
4. XXX软件在特定领域的应用以XXX领域为例,介绍XXX软件在该领域的应用。
三、实验结果与分析1. 实验结果通过本次实验,掌握了XXX软件的基本操作和核心功能,能够熟练运用软件完成相关任务。
2. 实验分析(1)XXX软件操作简便,界面友好,易于上手。
(2)XXX软件功能强大,能够满足不同用户的需求。
(3)XXX软件在XXX领域的应用具有广泛的前景。
四、实验总结1. 通过本次实验,提高了对XXX软件的认识,为今后的学习和工作打下了基础。
2. 培养了实际操作能力和问题解决能力,为今后在XXX领域的应用奠定了基础。
3. 认识到软件应用在现代社会的重要性,激发了对软件技术的兴趣。
五、实验建议1. 加强对XXX软件的学习,深入了解其功能和操作。
医学软件基础实验报告
一、实验名称医学软件基础实验二、实验日期2023年X月X日三、实验目的1. 了解医学软件的基本功能和操作流程。
2. 掌握医学软件在临床实践中的应用。
3. 培养医学信息素养,提高信息处理能力。
四、实验原理医学软件是利用计算机技术对医学信息进行采集、存储、处理、分析和展示的应用程序。
通过本实验,使学生了解医学软件的基本原理和操作方法,为今后在临床工作中应用医学软件打下基础。
五、主要仪器与试剂1. 电脑一台2. 医学软件一套(如:电子病历系统、医学影像处理软件等)3. 医学数据资料六、实验步骤1. 登录医学软件,熟悉软件界面和基本功能。
2. 创建电子病历,录入患者基本信息、病历信息、检查结果等。
3. 查询患者病历,了解患者病情变化。
4. 利用医学影像处理软件对影像资料进行处理,如:图像放大、对比度调整等。
5. 对处理后的影像资料进行分析,得出诊断结论。
6. 保存实验数据,备份重要资料。
七、注意事项1. 在操作过程中,注意保护患者隐私,确保信息安全。
2. 按照实验步骤进行操作,避免误操作。
3. 在处理医学影像资料时,注意保护眼睛,避免长时间盯着电脑屏幕。
八、实验结果1. 成功创建并录入患者电子病历。
2. 查询患者病历,了解患者病情变化。
3. 利用医学影像处理软件对影像资料进行处理,提高诊断准确率。
4. 对处理后的影像资料进行分析,得出诊断结论。
九、讨论1. 医学软件在临床实践中的应用越来越广泛,提高了医疗工作的效率和质量。
2. 通过本实验,掌握了医学软件的基本操作,为今后在临床工作中应用医学软件奠定了基础。
3. 在实验过程中,发现医学软件在处理大量数据时,有时会出现卡顿现象,需要进一步优化软件性能。
十、实验结论1. 医学软件在临床实践中具有重要作用,能够提高医疗工作效率和诊断准确率。
2. 本实验使学生掌握了医学软件的基本操作,为今后在临床工作中应用医学软件奠定了基础。
3. 建议在医学软件开发过程中,注重性能优化,提高软件稳定性。
软件基础认知实训报告
一、前言随着信息技术的飞速发展,软件工程已经成为当今社会不可或缺的一部分。
为了更好地适应社会需求,提高自身的专业素养,我参加了软件基础认知实训。
通过这次实训,我对软件工程有了更加深入的了解,以下是我对实训过程的总结与感悟。
二、实训目的1. 了解软件工程的基本概念、原理和方法;2. 掌握软件开发的流程和工具;3. 培养团队协作精神和沟通能力;4. 提高解决实际问题的能力。
三、实训内容1. 软件工程概述实训开始,我们学习了软件工程的基本概念、原理和方法。
软件工程是一门应用计算机科学、数学和心理学等知识,对软件的开发、维护、管理等进行系统研究、分析和设计的一门学科。
通过学习,我们了解到软件工程的目标是提高软件的质量、降低成本、缩短开发周期。
2. 软件开发流程实训过程中,我们重点学习了软件开发的流程。
软件开发流程主要包括需求分析、系统设计、编码、测试、部署和维护等阶段。
通过学习,我们掌握了各个阶段的特点和任务,以及如何进行有效的沟通和协作。
3. 软件开发工具为了提高开发效率,实训中我们学习了常用的软件开发工具。
如:集成开发环境(IDE)、版本控制系统(VCS)、项目管理工具等。
通过学习,我们了解了这些工具的基本功能和使用方法,为以后的实际工作打下了基础。
4. 团队协作与沟通实训过程中,我们进行了分组讨论、项目实施等活动。
通过这些活动,我们学会了如何与团队成员协作,如何进行有效的沟通。
这对于提高团队整体执行力具有重要意义。
5. 解决实际问题在实训过程中,我们遇到了各种实际问题。
通过查阅资料、请教老师和同学,我们逐步掌握了解决这些问题的方法。
这使我们在实际工作中能够更加从容地面对挑战。
四、实训收获1. 提高了专业素养通过本次实训,我对软件工程有了更加全面、深入的了解,提高了自身的专业素养。
2. 培养了团队协作精神在实训过程中,我们学会了与团队成员沟通、协作,共同完成项目任务。
这为我们今后在工作中更好地融入团队打下了基础。
计算机软件基础上机实验报告
计算机软件基础上机实验报告实验目的:通过本次实验,掌握计算机软件的基本操作、基本编程概念以及实现方法,并能对实验结果进行分析和总结。
实验设备:计算机硬件平台和软件平台。
实验内容:1.学习使用计算机软件的基本操作。
2.学习使用计算机软件进行编程。
3.编写一个简单的计算机软件,并进行测试。
实验步骤:1.打开计算机软件,并学习基本的操作方法。
包括如何创建、保存和打开文件,如何设置字体、颜色和格式等。
2.学习基本的编程概念和语法,包括变量、函数、条件语句和循环语句等。
3.编写一个简单的计算机软件,并进行测试。
假设我们要编写一个求解一元二次方程的软件。
首先,定义一个函数来计算方程的根。
然后,在主函数中输入方程的系数,并调用函数进行计算。
最后,输出结果。
实验结果分析:通过本次实验,我学会了如何使用计算机软件进行操作和编程。
在编写一元二次方程求解软件的过程中,我遇到了一些问题,如如何处理方程无解和有多个解的情况等。
为了解决这些问题,我添加了对方程判别式的计算和判断逻辑,从而得到了正确的结果。
实验总结:本次实验让我更加深入地了解了计算机软件的基本操作和编程概念。
通过编写一个简单的计算机软件,我不仅巩固了所学的知识,还锻炼了分析和解决问题的能力。
在今后的学习和工作中,我将继续深入学习和应用计算机软件,为实现更多的功能和创造更大的价值做出贡献。
此外,我还意识到在软件开发过程中应注重错误处理和逻辑判断,确保软件的稳定性和可靠性。
以上是本次计算机软件基础上机实验的报告,通过本次实验,我对计算机软件的基本操作和编程有了更深入的了解,并在实践中掌握了一些基本的编程技巧和方法。
这将为我今后的学习和工作奠定坚实的基础。
软件工程实践实验报告要求(5篇范例)
软件工程实践实验报告要求(5篇范例)第一篇:软件工程实践实验报告要求实验一---姓名---学号加封皮软件工程实践编写实验报告的要求试验报告一利用Visio绘制DFD图根据所选系统,利用Visio绘制系统相关的DFD图。
实验学时:8学时实验要求:试验报告二 UML工具的使用学习Rational Rose、StarUML等工具,针对所选系统进行模型分析和设计,完成用例图、类图、序列图、状态图、活动图等图形的绘制。
实验学时:16学时实验要求:1.下载、安装Rational Rose、StarUML等工具软件,学习软件使用;1.可以采用结构化方法对所选系统进行需求分析;2.采用Visio绘制系传统的DFD图; 3.提交绘制的图形和实验报告。
2.绘制用例图、类图、序列图、状态图、活动图等图形针对所选系统进行模型分析和设计。
试验报告三软件源代码管理实验学时:4学时实验要求:学习基于系统工具进行源代码版本管理实验要求:1.下载、安装SVN、Trac等工具软件,学习软件使用;2.对所选系统的源代码进行版本管理。
试验报告四使用软件测试工具学习Webstress、NUnit等各类软件测试工具,及Test Manager 测试管理工具,针对所选系统实现情况,编写测试计划、设计测试用例,掌握软件自动测试方法。
实验学时:4学时实验要求:1.下载、安装Webstress、NUnit和Test Manager等工具软件,学习软件使用;2.运用NUnit工具软件进行白盒测试用例设计及自动测试;3.运用Webstress工具软件进行性能自动测试;4.了解T est Manager测试管理工具的使用方法。
第二篇:软件工程实验报告实验三:面向对象的系统对象模型实验一、实验目的1: 熟悉面向对象分析的基本方法,加深理解对象模型、动态模型和功能模型的意义和作2: 学习使用rose工具进行面向对象分析的方法3:理解对象模型、动态模型和功能模型在rose系统中的表示4:学习用例图、类图、关联图、顺序图、状态图的绘制方法,了解其各自的作用二、实验环境1.硬件环境P4以上的个人计算机环境,要求内存不少于128MB,硬盘不小于20G.。
软件专业实习报告范文5篇
软件专业实习报告范文软件专业实习报告范文精选5篇(一)软件专业实习报告一、实习单位概况实习单位:XXX公司地址:XXX市 XXX区企业性质:民营公司企业规模:1000人以上主营业务:软件开发、数据分析等二、实习背景和目的作为一名软件专业的学生,我希望通过实习进一步了解软件开发的实际操作和业务需求,提高自己的工程能力和解决问题的能力。
同时,通过实习,我也可以亲身体验企业运作和团队协作的方式,为将来步入职场做好准备。
三、实习内容和工作收获在XXX公司的实习期间,我主要参与了以下工作内容:1. 参与软件开发项目:根据项目需求和技术文档,编写代码实现功能模块,并进行单元测试和调试工作。
在这个过程中,我学会了如何合理规划代码结构和编写高效可读性的代码。
2. 参与产品测试和bug修复:负责对软件产品进行测试,发现并记录bug,并和开发人员合作进行修复和测试验证。
通过这个过程,我学会了如何进行测试用例编写和测试工具使用,还提升了解决问题的能力。
3. 项目协作与沟通:与项目组成员共同讨论和解决项目中的问题,并定期参与项目讨论会议,向团队成员汇报进展并汲取经验。
通过这个过程,我学会了如何与团队成员协作,有效地沟通和协调工作。
在实习的过程中,我不仅学到了软件开发的实际操作技巧,还提升了自己的问题解决能力和团队合作能力。
同时,实习也让我更加明确了自己的职业发展方向,并为将来的就业打下了扎实的基础。
四、实习总结和感想在实习期间,我深刻体会到了软件开发不仅是技术的堆砌,更是需要思维的思辨和沟通的能力。
在与项目组成员的沟通和协作中,我逐渐明白了团队合作的重要性,并学会了如何倾听和尊重他人的意见。
此外,通过参与实际项目的开发和测试,在不断解决问题的过程中,我积累了丰富的经验,深入了解了软件开发的流程和规范。
这对我未来的职业发展起到了重要的指导作用。
总之,这次实习经历让我受益匪浅。
我不仅学到了实际操作技能,还提升了解决问题的能力和团队合作能力。
计算机软件基础实验报告 xxx
计算机软件基础实验报告 xxx
实验名称:计算机软件基础实验
实验报告
实验目的:
1. 了解计算机软件的基本概念和分类;
2. 熟悉计算机软件的开发过程;
3. 掌握常用的计算机软件开发工具和方法。
实验内容:
1. 计算机软件的基本概念和分类
1.1 计算机软件的定义和特点
1.2 计算机软件的分类:系统软件、应用软件和工程软件
2. 计算机软件的开发过程
2.1 需求分析
2.2 设计
2.3 编码
2.4 测试
2.5 发布和维护
3. 计算机软件开发工具和方法
3.1 集成开发环境(IDE):使用Visual Studio进行软件开发 3.2 版本控制系统:使用Git进行版本控制
3.3 软件开发方法:使用敏捷开发方法进行软件开发
实验步骤:
1. 学习计算机软件的基本概念和分类;
2. 学习计算机软件的开发过程;
3. 学习计算机软件开发工具和方法;
4. 在实验环境中安装和配置所需的开发工具;
5. 通过实例学习和实践,完成一个简单的软件开发任务。
实验结果:
经过实验,我对计算机软件的基本概念和分类有了更深入的了解。
我熟悉了计算机软件的开发过程,并掌握了常用的计算机软件开发工具和方法。
在实验环境中成功安装和配置了开发工具,并完成了一个简单的软件开发任务。
实验总结:
通过本次实验,我进一步巩固了计算机软件的基础知识,并熟悉了计算机软件的开发过程。
我掌握了常用的计算机软件开发工具和方法,对计算机软件开发有了更深入的认识。
在以后的学习和工作中,我将继续努力,不断提升自己的计算机软件开发能力。
计算机软件技术基础实验报告
计算机软件实验报告姓名:班级:学号:指导教师:实验一线性表的基本操作一、实验目的与基本要求1.掌握数据结构中的一些基本概念。
数据、数据项、数据元素、数据类型和数据结构,以及它们之间的关系。
2.了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。
3.掌握线性表的基本操作:插入、删除、查找以及线性表的合并等运算。
4.掌握运用C语言上机调试线性表的基本方法。
二、实验条件1.硬件:一台微机2.软件:操作系统和C语言系统三、实验方法确定存储结构后,上机调试实现线性表的基本运算。
四、实验内容1.试编写在无头结点的单链表上实现线性表基本运算LOCATE(L,X),INSERT (L,X,1)和DELETE(L,1)的算法。
2.假设有两个按数据元素值递增有序排列的线性表A和B,均以单链表作为存储结构。
编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)结点空间存放表C。
3.将一个线性表中的值就地逆置。
4.在线性表的顺序存储结构的第一个位置上插入一个元素。
(注意区分链表和顺序表)实验代码:#include"stdlib.h"#include"stdio.h"struct node //定义结构体{int d;struct node *next;};struct node *head1,*head2,*p,*q;void pre(struct node *head) //打印数据{printf("链表中的数据为:\n");p=head;while(p!=NULL){printf("%5d",p->d);q=p;p=p->next;}printf("\n");}struct node *creat() //建立链表{struct node *head;int x;printf("输入你要储存的数据:\n");head=NULL;q=NULL;scanf("%d",&x);while(x>0){p=(struct node *)malloc(sizeof(struct node));p->d=x;p->next=NULL;if(head==NULL) head=p;else q->next=p;q=p;scanf("%d",&x);getchar();}pre(head);return (head);}void locate(struct node *head,int x) //查找链表中的数据{int u=1;p=head;while (p->next!= NULL){if (p->d==x)break;else{ p=p->next;u++;}}if(p->d!= x)printf("无此结点");printf("在链表中的位置为:");printf("%d",u);}void insert(struct node *head,int x, int i) //插入数据{ p = head;int j=1;q=(struct node *)malloc(sizeof(struct node));q->d=x;if(i==1){ q->next=head;head=q;}else{while((j<i-1)&&(p->next !=NULL)){j++;p=p->next;}q->next=p->next;p->next=q;}}void delet(struct node *head,int i) //删除数据{ p=head;int j=1;if(i<0) printf("无此位置");if(i==1){q=head; head=head->next; free(q);}else{while((j<i-1) && (p->next != NULL)){ p=p->next;j++;}q=p->next;p->next=q->next;free(q);}}void hebing(struct node *x,struct node *y) //合并两个链表{p=x;q=y;while(p->next!=NULL)p=p->next;p->next=q;pre(x);}void paixu(struct node *head) //对链表中的数据进行排序{int m,n,i=1,t;p=head;while(p->next!=NULL){p=p->next;i++;}p=head;for(n=i;n>1;n--){p=head;for(m=1;m<n;m++){q=p->next;if(p->d<q->d){t=p->d;p->d=q->d;q->d=t;}p=p->next;}}}void caozuo(struct node *head) //操作界面{int m,n;char t;printf("输入你要的操作:,查找 2,插入 3,删除\n");scanf("%c",&t);switch(t){case'1':{printf("输入你要查找的元素的值:\n");scanf("%d",&m);locate(head,m);}break;case'2':{printf("输入你要插入的元素的值和位置:\n");scanf("%d",&m);scanf("%d",&n);insert(head,m,n);pre(head);}break;case'3':{printf("输入你要删除的元素的位置:\n");scanf("%d",&m);delet(head,m);pre(head);}break;default:printf("error\n");}}void main() //主函数{char frag='y',n=NULL;printf("输入你要建立的第A链表中的元素:\n");head1=creat();printf("输入你要建立的第B链表中的元素:\n");head2=creat();do{printf("选择你要操作的链表A/B或者合并排序操作C:\n"); //选择操作scanf("%c",&n);getchar();switch(n){case'A':{caozuo(head1);}break;case'B':{caozuo(head2);}break;case'C':{hebing(head1,head2);paixu(head1);pre(head1);}break;default:printf("error\n");}printf("\n是否继续y/n:\n");scanf("%c",&frag);getchar();}while(frag=='y');}实验2 栈和队列的基本操作一、实验目的与基本要求1.掌握栈和队列的顺序存储和链式存储结构2.掌握栈和队列的特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件基础实验报告————————————————————————————————作者:————————————————————————————————日期:计算机软件技术基础实验报告姓名:XXX班级:XX 0X01学号:30X05050XX实验一线性表:1、建立单向链表,表长任意;2、可交互输出单链表中的内容;3、编写算法计算出自己所建单链表的长度并输出;4、删除自己所建单链表中的第K个结点,并将剩余结点输出;5、将单链表倒排,输出结果。
源程序如下:#include<stdio.h>#include<malloc.h>typedef int datatype;typedefstruct node//链表结构体//{datatypedata;structnode*next;}linklist;linklist*creatlist() //建立链表//{intx;linklist*head, *s;head=NULL;printf("\n 输入链表数据:");scanf("%d",&x);while(x!=0){s=malloc(sizeof(linklist)); //为链表开辟一系列的空间//s->data=x;s->next=head;head=s;printf("\n输入链表数据:");scanf("%d",&x);}returnhead;}void listContent(linklist*h)//输出链表内容//{linklist *s;s=h;while(s!=NULL){printf("%4d",s->data);s=s->next;}}intlistLong(linklist*h)//计算链表长度// {inti=0;linklist *s;s=h;while(s!=NULL){i++;s=s->next;}return(i);}voidDeleteNode(linklist *h,intk)//删除第K个节点// {int i=0;linklist*p,*q;p=h;if(k==1){h=h->next;free(p);}else{while(i<k-1&&p!=NULL){i++;q=p;p=p->next;}q->next=p->next;free(p);}}linklist *DaoXu(linklist *h)//逆序排列链表//{linklist *r,*q,*p;r=h;p=r->next;q=p->next;if(h==NULL)printf("链表为空\n");while(q!=NULL&&h!=NULL){p->next=r;r=p;p=q;q=q->next;}h->next=NULL;p->next=r;return(p);}main(){intk,x;linklist*h;do{printf("\n功能:\n");printf("1.建立链表\n");printf("2.输出链表内容;\n");printf("3.获得链表长度\n");printf("4.删除第K个节点\n");printf("5.将链表倒序输出\n");printf("6.退出\n");printf("请输入功能号:\n");scanf("%d",&x);if(x<1||x>6)printf("错误!\n");elseswitch(x){case1:h=creatlist();break;case2:listLong(h);break;case 3:printf("链表的长度是:%d",listLong(h));break;case 4:printf("请输入要删除的节点:\n");ﻩscanf("%d",&k);ﻩDeleteNode(h,k);listContent(h);break;case5:h=DaoXu(h);listContent(h);break;case 6:exit(0);break;}}while(1);}运行结果:实验总结:1.在编写倒排链表的程序时,对于循环的计数的控制没有搞好,以致无法得到想要的链表;2.要给一个指针创立空间之后才能调用它,否则会出错。
解决办法:1.通过单步调试程序,调整循环次数,来使循环中的个参数达到自己想要的通过查阅资料,完成对链表程序的实现。
在写每一个子函数时,常常会遗漏小的判断条件,比如遗漏了判断是否为空等;还有就是在对指针操作时,有时多加了*,或者分号写成逗号;在调试程序的过程中有很多小的错误或者判断条件错误等。
实验二在交互方式完成下列任务:1、动态交互建立二叉树,结点个数任意;2、分别用DLR、LDR、LRD三种方式对二叉树进行便利并输出结果;3、计算二叉树中的结点个数并输出;4、计算二叉树的深度并输出;源程序如下:# include "stdio.h"# include"malloc.h"struct BTNode{int data;ﻩstructBTNode *Lchild,*Rchild;};struct BTNode *build(structBTNode*p);struct BTNode *creatrent(structBTNode*p);void DLR(struct BTNode *T);struct BTNode *creatrent(structBTNode*p){ﻩint x;ﻩprintf("输入根:rent=");ﻩﻩscanf("%d",&x);ﻩif(x==1000){p=NULL;}elseﻩ {ﻩp->data=x;p->Lchild=(structBTNode*)malloc(sizeof(structBTNode));p->Rchild=(struct BTNode*)malloc(sizeof(struct BTNode));ﻩif(p==NULL) return p;ﻩp->Lchild=build(p->Lchild);p->Rchild=build(p->Rchild);ﻩﻩreturn p;ﻩ}}struct BTNode*build(struct BTNode*p){ﻩint x;printf("输入数据(输入值为时,表示该结点为空):value=");ﻩscanf("%d",&x);ﻩif(x==1000){p=NULL;}ﻩelseﻩﻩ{ﻩp->data=x;ﻩﻩﻩp->Lchild=(structBTNode *)malloc(sizeof(structBTNode));p->Rchild=(struct BTNode*)malloc(sizeof(struct BTNode));ﻩﻩ }if(p==NULL) returnp;p->Lchild=build(p->Lchild);p->Rchild=build(p->Rchild);ﻩﻩreturnp;ﻩ}void DLR(struct BTNode*T){if(T==NULL)return;printf("%d ",T->data);DLR(T->Lchild);DLR(T->Rchild);}void LDR(struct BTNode *T){ﻩif(T==NULL)return;ﻩLDR(T->Lchild);ﻩprintf("%d ",T->data);LDR(T->Rchild);}voidLRD(structBTNode*T){ﻩif(T==NULL) return;ﻩLRD(T->Lchild);ﻩLRD(T->Rchild);ﻩprintf("%d ",T->data);}voidmain(){ﻩstruct BTNode *rent=NULL;int flag;ﻩwhile(1)ﻩ{ﻩprintf("选择输入的操作:\n1:创建\2:先序\n 3:中序\n3:后序\n");ﻩscanf("%d",&flag);ﻩswitch(flag)ﻩ{case 1:ﻩrent=(structBTNode *)malloc(sizeof(struct BTNode));rent=creatrent(rent);ﻩbreak;case 2:DLR(rent);printf("\n");break;case3:LDR(rent);printf("\n");break;ﻩﻩﻩcase4:LRD(rent);printf("\n");break;}}}运行结果:实验总结:通过查资料完成程序,还是在调试程序的过程中出现恩多的错误,除了一些基本的错误,也出现了判断错误,比如在进行先序,中序,后序遍历的时候都没加if( k != NULL)这个条件,导致在执行程序的时候,只进行先序遍历,然后出错退出。
实验三在交互方式下完成下列任务:1、根据教材上算法,完成图的深度和广度优先遍历,要求任意给定起始点,输出结果;2、根据教材上算法,完成图的单源最短路径的算法,要求任意给定源点,输出结果;源程序如下:#include <stdio.h>#include<malloc.h>#define Q1000#define VNum6struct GLink{ intNo;intRight;struct GLink*Relat;};int G[VNum][VNum] =//对图进行初始化//{0, 23,16, Q, 45, Q,ﻩ Q, 0, 15, 50,10, Q,20, Q, 0,15,Q,Q,Q, 20, Q, 0,35, Q,ﻩ Q,Q, Q,30, 0, Q,Q,5, 4, Q,Q, 0};struct GLink *GL[VNum];int Visited[VNum];void CreateGLink(int G[VNum][VNum])// 建立邻接表//{ inti,j;struct GLink *p,*q;for (i=0; i<VNum;i++){ GL[i] =q = NULL;for (j=0; j<VNum; j++){if (i != j)if((G[i][j] > 0)&& (G[i][j] < K)) //该两点存在有向路径//ﻩ{ p =(structGLink *)malloc(sizeof(struct GLink));p->No =j;// 将该点加入邻接表//ﻩp->Right = G[i][j];if (GL[i] ==NULL)ﻩﻩGL[i]=p;ﻩelseﻩq->Relat = p;q = p;}}}}void DFS(int A[VNum][VNum],int V) //用于进行深度优先遍历的子函数,V是起点//{ int i;printf(" [%d]", V);Visited[V] = 1;// 将其标记为已访问//for (i =0; i <VNum; i++)if ((A[V][i] >0)&&(A[V][i] <K)&&(Visited[i] !=1)) // 该结点未被访问过//DFS(A,i); // 访问该点//for(i= 0;i< VNum;i++)if (Visited[i]!=1) DFS(A,i); //仍有未必访问过的点,访问该点//}void BFS(intA[VNum][VNum],int V)// 用于广度优先遍历的子函数//{ int CQ[VNum];inta=0,b,c;int i,k=1;for(i=0;i<VNum;i++)CQ[i]=K;Visited[V]= 1;//标志为访问过//CQ[0]=V;printf("[%d]",V); //将该结点放入队列//while(k<6&&a<k)// 仍有结点未被访问并且队列中仍有结点的后继结点未被访问//{b=CQ[a];for(c=0;c<VNum;c++) // 依次将队列中以结点为首的邻接表中的结点插入队列//if(Visited[c]==0&&A[b][c]<K&&A[b][c]!=0){ printf("[%d]", c);CQ[++k]=c;// 未被访问过,将其插入到队列中//Visited[c]=1; // 标志为访问过//}a++;}for(i=0;i<VNum;i++)if(Visited[i]==0)BFS(A,i);}void Short(int A[VNum][VNum],intV) // 用于计算最短路径的子函数,V是起点//{int Dist[VNum], Path[VNum];int S= 0;int i,k;int wm,u;for(i=0;i<VNum; i++){Dist[i] =A[V][i]; //默认这两点之间即为最短路径//if (Dist[i]< K)Path[i]= V; //存储该路径//}S= S| (1<<V);for (k=0; k<VNum;k++){wm=K;u = V;for(i=0; i<VNum; i++)if(((S &(1<< i))==0)&&(Dist[i] <wm)) // 该两点间存在路径//{u = i;ﻩwm= Dist[i];}S =S| (1 << u);for(i=0; i<VNum; i++)if(((S&(1 << i))==0)&& ((Dist[u]+ A[u][i]) <Dist[i])) ﻩ{ Dist[i]= Dist[u]+ A[u][i]; // 找到新的最短路径//Path[i] =u; // 更新路径长度//ﻩ}}for(i=0; i<VNum; i++) //输出该源结点到其他各点的最短路径//if ((S &(1 << i))!= 0){k =i;while ( k !=V){ printf("%d<-", k);ﻩk = Path[k];}printf("%d ",V);printf("= %d \n",Dist[i]);}else printf(" No Path: %d",i);}main(){ int i,j,a,b;CreateGLink(G);printf("1.深度优先遍历\n");//打印菜单//printf("2.广度优先遍历\n");printf("3.寻找单源最短路径\n");printf("4.退出\n");while(1) //完成菜单功能//{ printf("\n 功能项选择从1到4 : ");scanf("%d",&a);if(a==1){ for(i=0;i<VNum; i++)Visited[i] =0;ﻩﻩprintf("请输入第一个节点:");scanf("%d",&j);ﻩprintf("\n深度遍历DFS是:");DFS(G,j);printf("\n");}if(a==2){ for (i=0; i<VNum;i++)Visited[i] = 0;printf("请输入第一个节点: ");ﻩscanf("%d",&j);ﻩprintf("\n 广度遍历结果BFS是:");ﻩBFS(G,j);printf("\n");ﻩ}if(a==3){printf("请输入源点: ");scanf("%d",&b);printf("\n 单源最短路径是:\n");Short(G,b);}if(a==4)break;}}运行结果:实验总结:1运行时,2表示深度优先遍历,3表示广度优先遍历。