软件技术基础--上机实验三

合集下载

《软件技术基础》实验指导书_实验三、四

《软件技术基础》实验指导书_实验三、四

《软件技术基础》实验指导书电子商务教研室2009年9月实验三队列的应用◆实验目的与基本要求1、掌握队列的顺序存储和链式存储结构。

2、掌握队列的特点。

3、掌握队列的基本运算。

◆实验条件1、硬件:一台微机2、软件:操作系统和C语言系统◆实验方法确定存储结构后,上机调试实现队列的基本运算。

◆实验内容1、写出队列的出队和入队算法。

2、设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

车辆按到达停车场时间的早晚,依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。

如果停车场已停放n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。

停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。

每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。

如果停留在便道上的车未进停车场要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。

编制一个程序模拟该停车场的管理。

◆性质:必做◆类型:验证◆2h队列是从日常排队现象抽象出来的一种数学模型。

当然数据结构中的队列远没有生活中的排队灵活。

数据结构中的队列规定:数据只能从队尾进,从队首出来。

已经进入队列的数据次序不能再做改变。

这就叫做“先进先出”(FIFO)或者说“后进后出”(LILO)。

允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为队首,通常也用一个队首指针(front)指向队首元素的前一个位置(当然也可以直接指向队首元素,只是许多数据结构的书上都习惯这么定义)。

与队列类似,我们可以用一维数组来模拟队列这种数据结构,也可以用链表来模拟。

根据以上描述,队列可以可以有以下基本操作:1、创建初始化:按约定置队列为空状态。

实验报告的总结怎么写

实验报告的总结怎么写

实验报告的总结怎么写实验报告是实验过程的总结与提升,也是实验的一个重要环节,但其重要性往往被忽略,特别是实验数据的总结,今天店铺给大家整理了实验报告的总结怎么写,谢谢大家对小编的支持。

实验报告的总结怎么写篇一本学期我们生科专业开设了3门实验课,在实验课中,我学到了很多在平时的学习中学习不到的东西,尤其是物理光学实验。

它教会我更多的应该是一种态度,对待科学,对待学习。

为期七周的的大学物理实验就要画上一个圆满的句号了,回顾这七周的学习,感觉十分的充实,通过亲自动手,使我进一步了解了物理实验的基本过程和基本方法,为我今后的学习和工作奠定了良好的实验基础。

我很感谢能够有机会学习物理实验,因为每一位老师都教会了我很多。

每次上实验课,老师都给我们认真的讲解实验原理,轮到我们自己动手的时候,老师还常常给予我们帮助,不厌其烦地为我们讲解,直到我们做出来。

有的同学在实验过程中出现了问题,就耽误了时间,老师也总是陪着我们直到最后一名同学做完实验。

在大学物理实验课即将结束之时,我对在这一年来的学习进行了总结,总结这一年来的收获与不足。

取之长、补之短,在今后的学习和工作中有所受用。

下面我就对我这一年所学到的东西做一个概述:1、实验课的基本程序1.1、课前预习:对于每一次将要进行的实验,我们都要做好预习,通过阅读实验教材,上网搜索资料,自己翻阅其他辅导书,弄清本次实验的目的、原理和所要使用的仪器,明确测量方法,了解实验要求及实验中特别要注意的问题等。

这一步至关重要,它是实验成败的关键。

我觉得我对于这一点还是做的不错的,因此每一次实验都能够很顺利地完成。

而且我发现我准备地越充分,实验就会越顺利。

因为前期的准备可以使我在实验的时候避免手忙脚乱,充分的预习也使我充满了信心。

因为我做了充分的预习,在实验中就不会遇到突发状况就不知该如何是好。

就这样一步一个脚印,就不必“从头再来”,节省了时间。

1.2、实验操作我们做实验是在每周周二的下午,先由实验辅导老师对实验进行讲解,老师的讲解很重要,一定要认真地听。

软件技术基础2实验任务3

软件技术基础2实验任务3

《软件技术基础2》实验报告3学院机械学院专业能源与动力工程年级2015姓名666任课教师葛卫民实验指导葛卫民2016年10月日实验三一、实验目的通过本试验,使学生理解数组、指针的概念及基本用法;掌握数组与指针程序的设计方法;掌握求最大最小、排序、字符串处理等基本算法的思想和使用方法。

二、实验内容1.通过程序实例,理解数组及指针的概念及基本语法。

2.编写教材第三章习题3中1、2、3、5、6、7要求的程序,并完成上机调试的实验任务。

其中第3题的第7小题需要分别用数组、指针结合动态内存分配两种方法来实现。

三、实验准备1.复习第三章的内容,重点是3.1、3.2、3.5节的内容及相关例题;2.编写教材第三章习题3中1、2、3、5、6、7要求的程序。

四、实验任务任务一:第1小题1.内容:向数组a中输入十个整数,求其中最大值,最小值和十个数的算术平均值。

2.源程序:#include <iostream.h>void main( ){int a[10],amax,amin,sum(0);double ave;cout<<"输入10个数:";for (int i=0; i<10; i++) cin>> a[i];for(i=0;i<10;i++) sum+=a[i];ave=sum/10.0;amax=amin=a[0];i=1;while(i<10){ if(a[i]>amax) amax=a[i];if(a[i]<amin) amin= a[i];i++;}cout<<"算术平均值="<<ave<<endl;cout<<"最大值="<<amax<<endl;cout<<"最小值="<<amin<<endl;}3.运行结果:4.实验中遇到的主要问题及解决方法无任务二:第2小题1.内容:输入十个学生一门课的成绩,分别统计大于平均值的人数和小于60分的人数。

软件技术基础

软件技术基础
适应不断更新换代升级地计算机技术
硬件更新?PC AT→PI→PIV OS更新?WIN95→98→XP→WIN8 程序语言更新?C→C++→VC++
课程内容
软件开发方法 数据结构 操作系统 数据库管理 网络编程 多媒体编程 software engineering data structure operating system data base management network programming multimedia programming
问题的提出



什么是软件 ? 软件有哪些特征? 软件工程的含义是什么? 什么是软件危机? 什么是软件生命周期? 软件开发技术究竟有哪些 B/S和C/S结构是什么? ……
1、软件的基本概念
计算机系统由计算机硬件和软件构成 计算机能完成各种神奇的功能是因为存在各种软件 什么是软件? 什么是程序?
相当于社会计算机等级考试的三级偏软
课程特点
内容浓缩
营养丰富
基础速成
教学计划
教学计划规定:讲课32学时,上机8学时
教学内容 软件开发方法 数据结构及其应用 授课学时 6 20 实验学时 0 8
操作系统及其编程
数据库及其编程 网络软件开发技术 多媒体编程技术
6
0 0 0
0
0 0 0
参考用书
《软件技术基础》黄 迪明编 电子科 技大学出版社出版 前三章讲完
(2)软件开发

软件开发时期的核心任务是:“怎么 做”。即要具体设计和实现在软件定义 时期定义的软件系统。 它又包括4个阶段: 总体设计,详细设计,编码和测试。 其中前两个阶段又称为系统设计,后两 个阶段又称为系统实现。

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

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

说明每个实验题目含有一个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. 串采用顺序存储结构, 编写朴素模式匹配算法, 查找在串中是否存在给定的子串。

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

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

《计算机软件技术基础》实验报告专业_____________年级_____________学号_____________学生姓名_____________指导老师_____________南华大学计算机学院编I 实验要求1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。

2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。

3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。

4.上机结束后,应整理出实验报告。

书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。

实验一线性表【实验目的】1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。

2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。

3.熟练掌握线性表的综合应用问题。

【实验内容】必做:1.一个线性表有n个元素(n<MAXSIZE, MAXSIZE指线性表的最大长度),且递增有序。

(1)现有一元素x要插入到线性表的适当位置上,并保持线性表原有的顺序不变。

采用链式存储表示方法实现,设计程序实现(2)从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。

要求:①指定的值x由键盘输入;②程序能处理空链表的情况。

选做:3.设有头结点的单链表,编程对表中的作一值只保留一个结点,删除其余值相同的结点。

要求:①该算法用函数(非主函数)实现;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。

4.已知非空单链表第一个结点由head指出,请写一算法,交换p所指结点与其下一个结点在链表中的位置。

要求:①该算法用函数Reverse(head,p)实现,其中head为表头指针,p指向要交换的结点;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。

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

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

《计算机软件技术基础》实验指导书编写:XXX适用专业:电器工程与自动化通讯工程电子信息工程安徽建筑工业学院电子与信息工程学院2007年9月实验一:线性链表的建立、查找、插入、删除实验实验学时:2实验类型:验证实验要求:必修一、实验目的通过本实验的学习,要求学生能够通过单链表的存储结构,掌握单链表的基本操作,包括单链表的建立、查找、插入、删除、输出等操作。

通过本实验可以巩固学生所学的线性表知识,提高编程能力,为后继课程的学习奠定基础。

二、实验内容1、为线性表{10,30,20,50,40,70,60,90,80,100}创建一个带头结点的单链表;2、在该链表上查找值为50,65的结点,并返回查找结果(找到:返回在县新链表中的位置);3、在该链表上值为50的结点后,插入一个值为120的结点;4、删除该链表上值为70的结点。

写出各操作的实现函数,并上机验证。

三、实验原理、方法和手段使用带头结点的单链表的表示线性表,通过实验,熟悉链表的创建、查找、插入、删除、输出等是链表的基本操作。

具体如下:(1)首先定义单链表的节点结构;(2)在单链表创建过程中,首先初始化一个带头结点的空链表,对线性表中的各元素依次通过键盘输入、建立该元素结点、插入到单链表中,实现单链表的创建过程;结点的插入有头插入和尾插入两种方法,采用不同方法时应注意元素的输入顺序。

(3)查找过程可以从头结点开始,将待查找的数据依次与每个结点的数据域比较,匹配及查找成功,弱链表访问完未找到匹配的元素,则查找不成功。

为能够返回查找成功的结点位置,在链表的搜索过程中,应设置一个计数器,记录搜索结点的序号;(4)插入结点时,首先要通过查找算法,找到带插入结点的前驱结点,然后为带插入元素建立结点,通过指针的修改,将结点插入。

(5)删除结点时,首先要通过查找算法,找到待删除结点的前驱,然后通过指针的修改,将待删除结点从链表中卸下,释放该结点。

(6)以上操作的正确性,均可以通过链表的输出结果来验证。

华北电力大学课程表

华北电力大学课程表
华北电力大学课表
班级:电力实10
12至13学年第一学期 节 次 星期一 星期二 星期三 星期四 1-22周 星期五 星期六 星期日
电力电子技术A
第 教十一楼 A323(130) 孙丽玲
网络与通信技术
电力电子技术A
网络与通信技术
电力电子技术A
一 上 大
教九楼B座 教十一楼 教九楼B座 教十一楼 501(200) A323(130) 501(200) A323(130) 任惠 孙丽玲 任惠 孙丽玲 1-6,8-9周上(2学 1-6,8-9周上(2学 11-18周上(2学时) 时) 11-18周上(2学时) 时) 11-18周上(2学时)
第 临教楼203(70) 何玉钧 1-6,8-13周上(2学 时)
自动控制理论B
教十一楼 A208(130) 牛成林 6,8-18周上(2学 时)
数字电子技术基础 T
临教楼203(70) 何玉钧 1-6,8-13周上(2学 时)
电力系统分析基础 T
教十一楼 A302(130) 梁海峰 1-6,8-17周上(2学 时)
许伯强 梁海峰 郭以贺
8学时 16学时 32学时 16学时
分散进行 21周 19-20周 22周
教务处 2012-9-14 18:14
华北电力大学课表
End 时间
第一小节 8:00~8:50
第二小节 9:00~9:50
第三小节 10:10~11:00
第四小节 11:10~12:00
第五小节 夏15:00~15:50 冬14:30~15:20
实验楼数电实验室 3,5,9,11,13,15,1 7,19周上
二 午 大 节
教十一楼 教八楼403(144) A302(130) 教八楼403(144) 苑东伟 梁海峰 苑东伟 3-6,8-15周上(2学 1-6,8-17周上(2学 3-6,8-15周上(2学 时) 时) 时)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名:吴振国学号:2011019190006上机实验三题目一:一、程序流程说明(1)创建一个链栈,(2)编写输出,进栈出站函数,(3)编写主函数二、程序代码#include<stdio.h>#include<malloc.h>#define LEN sizeof(node_type)typedef struct node{int data;struct node *next;}node_type;typedef struct {node_type *top;int length;}lstack_type;lstack_type *create_list(void){lstack_type *p;p=(lstack_type *)malloc(sizeof(lstack_type));p->top=NULL;p->length=0;return(p);}void print(node_type *head){node_type *p;printf("Now ,those records are:\n");p=head;if(head!=NULL){do{printf("%4d",p->data);p=p->next;}while(p!=NULL);}}int push(lstack_type *lp, int x){ node_type *p;p=(node_type *)malloc(LEN);if(p!=NULL){ p->data = x;p->next = lp->top;lp-> top = p;lp->length++;return(1);}else return(0);}int pop(lstack_type *lp){node_type *p;int x;if(lp->top==NULL){printf("stack is underflow");return(0);}else{x = lp->top->data;p = lp->top;lp->top = lp->top->next;lp->length--;free(p);return(true);}}void main(){lstack_type *p1;int a=0,b=0,m=0;p1=create_list();printf("\n input the numbers:\n");scanf("%d",&m);while(m!=0){ push(p1,m);scanf("%d",&m);}print(p1->top);pop(p1);pop(p1);print(p1->top);}三:典型测试数据(输入):2 4 6 9 43应输出(上机前自己分析的结果):43 9 6 4 2出栈后6 4 2四:上机时遇到的问题:①不能输出解决办法:更改函数返回类型②编译出错解决办法:输入数据时“&”不要忘五:实际运行结果六、小结&体会链栈的使用很方便,比顺序栈更好操作。

题目二:一、程序流程说明(1)创建一个循环队列(2)编写出队列函数,入队列函数,和负数删除函数(3)编写主函数二、程序代码#include<stdio.h>#define N 20typedef struct{ int data[N];int front, rear;}queue_type;void create_list(queue_type *lp){int i, elem;lp->front=0;lp->rear=0;printf("\n please input datas of the list\n"); lp->data[0]=NULL ;for(i=1; i< N; i++){scanf(" %d", &elem);if(elem== -1) break;lp->data[i]=elem;lp->rear++;}}void printlist(queue_type *lp){int i,j=0;printf("\nThese records are:\n");if(lp->rear<=0){printf("No data!\n");return;}elsefor(i=lp->front+1; i<=lp->rear; i++) {printf(" %4d ", lp->data[i]);}}void enqueue(queue_type *q, int x) {q->rear=(q->rear+1)%N;q->data[q->rear]=x;}int dequeue(queue_type *q){int i;i=q->front;q->front=(q->front+1)%N;/* printlist(q);*/return (q->data[i+1]);}void aa(queue_type *lp){int i,l=lp->rear,j;printf("long=%4d",lp->rear);for(i=lp->data[lp->front+1];i<=l+1;i++){j=dequeue(lp);if(j>0)enqueue(lp,j);}}main(){queue_type p;create_list(&p);printlist(&p);aa(&p);printf("after deletete list is:\n");printlist(&p);}三、测试数据*输入:2 3 -4 6 -5 8 -9 7 -10 20 (-1)应输出:2 3 6 8 7 20四:上机时遇到的问题:①负数不能完全删除解决办法:更改循环,使每一个数都能与0比较,是负数则删除(调用出队列函数)五、实际运行结果:六、小结&体会循环队列的使用能是空间更加合理的被利用。

题目三:一、程序流程说明(1)编写两个pop函数,两个pus函数(2)编写主函数二、程序代码#include<stdio.h>#define M 10#define true 1#define false 0typedef struct{int data[M];int top1,top2;}stack_type;int push1(stack_type *s){int x;printf("请输入数据(以’0‘结束):\n");scanf("%d",&x);while(x!=0&&s->top1<=s->top2){s->data[s->top1] = x;s->top1 = s->top1+1;scanf("%d",&x);}if(s->top1==s->top2)printf("栈已满!\n");return;}int push2(stack_type *s){int x;printf("请输入数据(以’0‘结束):\n");scanf("%d",&x);while(x!=0&&s->top1<=s->top2){s->data[s->top2] = x;s->top2= s->top2-1;scanf("%d",&x);}printf("栈已满!\n");return;}int pop1(stack_type *s){int out;if(s->top1 < 0) return(false);else{out = s->data[s->top1-1];s->top1 = s->top1-1;return(out);}}int pop2(stack_type *s){int out;if(s->top2 >=M) return(false);else{out = s->data[s->top2+1];return(out);}}void main(){int i,j,k;stack_type as,*lp;lp=&as;lp->top1=0;lp->top2=M-1;while(1){printf("请选择你要操作的栈:输入“1”或“2”\n");printf("返回“0”\n");scanf("%d",&i);if(i==1){printf("请选择你要进行的操作:入栈“1”;出栈“2”\n");scanf("%d",&k);switch(k){case 1:push1(lp);break;case 2:j=pop1(lp);printf("出栈元素为:%d\n",j);break;default:printf("输入错误!\n");}}else if(i==2){printf("请选择你要进行的操作:入栈“1”;出栈“2”\n"); scanf("%d",&k);switch(k){case 1:push2(lp);break;case 2:j=pop2(lp);printf("出栈元素为:%d\n",j);break;default:printf("输入错误!\n");}}else break;}}三、测试数据*输入:1 2 3 4 5//1 2 3 4输出:5(堆栈1出栈)//4(堆栈2出栈)四:上机时遇到的问题:①函数调用后无正确输出,解决办法:正确使用switch语句,检验逻辑。

相关文档
最新文档