实验七图

合集下载

实验_7状态图

实验_7状态图

实验_7状态图实验七学习在Rose中创建状态图实验⽬的:学习在Rose中创建状态图的基本过程,掌握在系统模型中状态图的作⽤。

实验要求:掌握根据具体描述分析出初态、终态、中间状态以及它们之间的转换关系,并完成状态图的绘制。

实验条件:windowsXP、Rose2003实验内容及步骤:动态模型表⽰瞬时的、⾏为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。

通常,⽤状态图来描绘对象的状态、触发状态转换的事件以及对象的⾏为。

每个类的动态⾏为⽤⼀张状态图来描绘,各个类的状态图通过共享事件合并起来,所以动态模型是基于事件共享⽽相互关联的⼀组状态图的集合。

⼀个⽤例是可以被参与者感受到的、系统的⼀个完整的功能。

在UML中把⽤例定义成系统完成的⼀系列动作,动作的结果能被特定的⾏为者观察到。

这些动作除了完成系统内部的计算和⼯作外,还包括与⼀些⾏为者的通信。

⽤例具有的特征是:⽤例代表⽤户可见的功能,实现⼀个具体的⽤户⽬标;⽤例是被参与者启动的,并向⾏为者提供确切的值;⽤例可⼤可⼩,但必须是相对完整的。

⽤例是⼀个类,它代表⼀类功能⽽不是使⽤该类功能的某个具体实例。

UML中状态图是在⽤例基础上创建的。

下⾯的实验,要求在独⽴进⾏⾯向对象需求分析的基础上,使⽤Rose⼯具绘制状态图。

⼀、创建状态图:介绍状态图的基本绘制⽅法。

根据以下步骤完成“选课系统”状态图的设计。

⼀个课程类的状态变化如下:课程对象被创建,添加到数据库中。

管理员可以删除、修改课程信息,在某个学期,开设该课程,如果选修⼈数超过指定⼈数,就不再允许学⽣选这门课。

学期结束,课程的状态终⽌。

1.确定选课系统中的主要状态:我们可抽取出除了初态和终态之外的六个状态:已创建、已修改、已删除、存放在数据库、可选、不可选。

下⾯就来创建状态图。

2.新建状态图(以课程类的状态图为例):(1)右键单击浏览器中的Logical View,在弹出菜单上,选择“Ne w→StateChartDiagram”,创建⼀个新的状态图,并将状态图的名字改成“Course”。

实验7 局部阻力系数实验

实验7 局部阻力系数实验

实验七 局部阻力系数实验1实验目的和要求1.掌握测量局部阻力系数的方法;2.测量管道突然扩大、突然缩小时的局部阻力系数;3.了解影响局部阻力系数的因素2局部阻力系数实验的原理水流在流动过程中,由于水流边界条件或过水断面的改变,引起水流内部各质点的流速、压强也都发生变化,并且产生旋涡。

在这一过程中,水流质点间相对运动加强,水流内部摩擦阻力所作的功增加,水流在流动调整过程中消耗能量所损失的水头称为局部水头损失。

局部水头损失的一般表达式为gvh j 22ζ= (1)式中,j h 为局部水头损失;ζ为局部水头损失系数,即局部阻力系数,它是流动形态与边界形状的函数,即)(e R f 边界形状,=ζ,一般水流的雷诺数e R 足够大时,可以认为ζ系数不再随e R 而变化,可视作为一常数;v 为断面平均流速,一般用发生局部水头损失以后的断面平均流速,也有用损失断面前的平均流速,所以在计算或查表时要注意区分。

局部水头损失可以通过能量方程进行分析。

图1为一水流突然扩大的实验管段,在发v 1图1 局部水头损失分析简图j h =gv v p z p z 2)()(2222112211ααγγ-++-+(2)式中,)()(2211γγp z p z +-+为断面1-1和2-2的测压管水头差;v 1、v 2 分别为1-1断面和2-2断面的平均流速。

管道局部水头损失目前仅有断面突然扩大(图1)可利用动量方程,能量方程和连续方程进行理论分析,并可得出足够精确的结果,其它情况尚需通过实验方法测定局部阻力系数。

对于管道突然扩大,理论公式为gv v h j 2221)(-= (3)由连续方程A 1v 1=A 2v 2,解出v 1或v 2代入上式可分别得 g v A A h j 2122212)(-= , 21211)(扩大-=A A ζ (4)或 gv A A h j 2121221)(-=, 22121)(扩大A A -=ζ (5)式中,A1、A2分别为断面1-1和2-2的过水断面面积;1扩大ζ、2扩大ζ叫做突然放大的局部阻力系数。

实验七状态图汇总

实验七状态图汇总

人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。



要创建状态图,首先要标识出哪些实体需要使用状态图进 一步建模。虽然我们可以为每一个类、操作、包或用例创 建状态图,但是这样做势必浪费很多的精力。一般来说, 不需要给所有的类都创建状态图,只有具有重要动态行为 的类才需要。 从另一个角度看,状态图应该用于复杂的实体,而不必用 于具有复杂行为的实体。使用活动图可能会更加适合那些 有复杂行为的实体。具有清晰、有序的状态实体最适合使 用状态图进一步建模。 对于聊天系统来说,需要建模的实体就是用户的状态。


事件:


消息型事件:消息名[(参数表)] 信号型事件:信号名[(参数表)] 时间型事件:时间到到这指定的绝对时刻点或到达指定时间之 后的相对时刻点:at(绝对时刻点),after(相对时刻点) 条件型事件:对象所处环境及对象属性值的变化导致某个条件 成立:When(条件表达式)
相关概念
创建状态图案例分析
2. 确定状态图中实体的状态
对于一个用户来说,它的状态主要包括: 未注册 未登录 已登录 查找好友 新增好友 删除好友 聊天 修改个人信息
创建状态图案例分析
3. 创建完整状态图


当确定了需要建模的实 体,并找出了实体的初 始状态和终止状态以及 其他相关状态后,就可 以着手创建状态图。 首先,我们要找出相关 的事件和转换。对于聊 天系统的用户来说,当 用户没有注册系统时, 处于未注册状态;当用 户登录系统后,处于已 登录状态;当用户进行 各种操作时处于操作状 态;当用户退出时处于 未登录状态。

实验七 图的建立及其应用

实验七 图的建立及其应用

实验七 图的建立及其应用一、实验目的:(1)掌握图的存储思想及其存储实现。

(2)掌握图的深度、广度优先遍历算法思想及其程序实现。

(3)掌握图的常见应用算法的思想及其程序实现。

(4)理解有向无环图、最短路径等算法二、实验要求1.将算法中的横线内容填写完整,使程序能正常运行2.在主函数中设计一个简单的菜单,具有如下功能。

(1)建立有向图的邻接表;(2)输出邻接表;3.实现图的深度优先遍历的算法(选做)4.完成实际应用(选做)三、实验原理1、图(GRAPH )是一种复杂的数据结构,结点之间的关系可以是任意的,由此图的应用极为广泛,已经渗透到如物理、化学、电讯工程、计算机科学等领域。

2、图存储结构:邻接矩阵表示法和邻接表表示法,本次实验图主要以邻接表进行存储。

用邻接矩阵表示法表示图如下图所示:0 1 0 1 A = 1 0 1 10 1 0 01 0 0 1一个无向图的邻接矩阵表示无向图对应的邻接表表示如下图所示:序号一个无向图的的邻接表表示四、实验程序说明图类型定义typedef struct Node{int dest; //邻接边的弧头结点序号struct Node *next;}Edge; //邻接边单链表的结点的结构体typedef struct{DataType data; //图顶点Edge *adj; //邻接边的头指针}AdjLHeight; //数组的数据元素类型结构体typedef struct{AdjLHeight a[MaxVertices]; //邻接表数组int numOfVerts; //结点个数int numOfEdges; //边个数}AdjLGraph; //邻接表结构体五、参考程序#include<malloc.h> /* malloc()等*/#include<stdio.h> /* EOF(=^Z或F6),NULL */#include<stdlib.h> /* atoi() */#include<process.h> /* exit() */typedef char DataType;#define MaxVertices 10void AdjInitiate(AdjLGraph *G)//初始化图{int i;G->numOfEdges=0;G->numOfVerts=0;for(i=0;i<MaxVertices;i++){G->a[i].adj = NULL ;//设置邻接边单链表头指针初值}}void InsertVertex(AdjLGraph *G,int i,DataType vertex)//在图中的第i个位置插入顶点数据元素vertex{if(i>=0&&i<MaxVertices){G->a[i].data =vertex; //存储顶点数据元素vertexG->numOfVerts++ ; //个数加1 }else printf("结点越界");}void InsertEdge(AdjLGraph *G,int v1,int v2)//在图中加入边<v1,v2>的信息{Edge *p;if(v1<0||v1>=G->numOfVerts||v2<0||v2>=G->numOfVerts){printf("参数v1和v2越界出错!");exit(0);}p=(Edge*)malloc(sizeof(Edge));//申请邻接边单链表结点空间p->dest=v2; //设置邻接边弧头序号p->next = G->a[v1].adj ; //新结点插入邻接表的表头G->a[v1].adj = p ; //头指针指向新的单链表表头G->numOfEdges++; //边个数加1}int GetFirstVex(AdjLGraph G,int v)//取图G中结点v的第一个邻接结点{Edge *p;if(v<0||v>=G.numOfVerts){printf("参数出错!");exit(0);}p=G.a[v].adj;if(p!=NULL)return p->dest;else return -1;}int GetNextVex(AdjLGraph G,int v1,int v2)//取图G中结点v1的邻接结点v2的下一个邻接结点{Edge *p;if(v1<0||v1>=G.numOfVerts||v2<0||v2>=G.numOfVerts){printf("参数v1和v2越界出错!");exit(0);}p=G.a[v1].adj;while(p!=NULL){if(p->dest!=v2){p = p->next ;continue;}else break;}p=p->next;if(p!=NULL) return p->dest;else return -1;}void main(void){int i,k,n,e,v1,v2;char c1;Edge *p;AdjLGraph G;AdjInitiate(&G);printf("输入图的顶点数\n");scanf("%d",&n);getchar();printf("输入图顶点为(请输入字母)\n");for(i=0;i<n;i++){scanf("%c",&c1); //通过键盘,输入图的顶点getchar();InsertVertex(&G,i,c1) ; //插入顶点}printf("输入图的边数\n");scanf("%d",&e);printf("如果边v1->v2,则输入0,1\n");for(k=0;k<e;k++){printf("输入边的顶点为(请输入数字):");scanf("%d,%d",&v1,&v2); //通过键盘,输入图的邻接边的两个顶点InsertEdge(&G,v1,v2) ; //插入边}for(i=0;i<n;i++)//输出邻接表{printf("%c\t",G.a[i].data);p=G.a[i].adj;if(p==NULL) printf("数据为空");else{ while(p!=NULL){printf("%d->",p->dest);p=p->next;}printf("^");}printf("\n");}}序号六、应用题(一)校园导游图实验内容:1、设计学生所在学校的校园平面图,所含景点不少于10个。

实验七 三相桥式全控整流电路实验

实验七 三相桥式全控整流电路实验

实验七 三相桥式全控整流电路实验一、实验目的了解三相桥式全控整流电路的工作原理,研究可控整流电路在电阻负载,电阻电感性负载,反电动势负载时的工作情况。

二、实验所需挂件及附件1. 电源控制屏2. 三相晶闸管触发电路3. 双踪示波器,万用表4. 晶闸管主电路5. 可调电阻,电感等三、实验原理1、电阻性负载图7-1 三相桥式全控整流电路(电阻性负载)及o 0=α波形阴极连接在一起的3个晶闸管(VT1,VT3,VT5)称为共阴极组;阳极连接在一起的3个晶闸管(VT4,VT6,VT2)称为共阳极组。

共阴极组中与a ,b ,c 三相电源相接的3个晶闸管分别为VT1,VT3,VT5,共阳极组中与a ,b ,c 三相电源相接的3个晶闸管分别为VT4,VT6,VT2。

晶闸管的导通顺序为VT1-VT2-VT3-VT4-VT5-VT6。

o 0=α表示各晶闸管从其自然换相点开始触发,得到的输出电压波形为其线电压的包络线。

图7-2 三相桥式全控整流电路(电阻性负载)o 30=α时波形从图可以看出,当o 60≤α时,u d 波形连续,对于电阻负载,i d 波形与u d 波形形状一样,也连续,每管工作120︒ ,每间隔60︒有一管换流。

60︒为波形连续和不连续的分界点。

α>60︒,由于对应线电压的过零变负,非同一相的共阴极组和共阳极晶闸管串联承受负压而关断,此时输出电压电流为零。

负载电流断续,各晶闸管导通角小于120︒。

晶闸管及输出整流电压的情况如下表所示:时段I II III IV V VI 共阴极组中导通的晶闸管VT1VT1VT3VT3VT5VT5共阳极组中导通的晶闸管VT6VT2VT2VT4VT4VT6整流输出电压u du α -u b=u abu α -u c=u αcu b –u c=u bcu b –u a=u bau c –u a=u cau c –u b=u cb三相桥式全控整流电路的特点:(1)2管同时通形成供电回路,其中共阴极组和共阳极组各1,且不能为同1相器件。

第六章 实验七验证动量守恒定律

第六章 实验七验证动量守恒定律

14
实验基础梳理
实验热点突破
高考模拟演练
@《创新设计》
解析 (1)小球离开轨道后应做平抛运动,所以在安装实验器材时斜槽的末端必须保 持水平,才能使小球做平抛运动。 (2)为防止在碰撞过程中入射小球被反弹,入射小球a的质量ma应该大于被碰小球b的 质量mb。为保证两个小球的碰撞是对心碰撞,两个小球的半径应相等。 (3)由题图甲所示装置可知,小球a和小球b相碰后,根据动量守恒和能量守恒可知小 球b的速度大于小球a的速度。由此可判断碰后小球a、b的落点位置分别为A、C点。 (4)小球下落高度一样,所以在空中的运动时间 t 相等,若碰撞过程满足动量守恒, 则应有 mav0=mava+mbvb,两边同乘以时间 t 可得 mav0t=mavat+mbvbt,即有 maO——B— =maO——A—+mbO——C—,故选项 B 正确。 答案 (1)保持水平 (2)> = (3)A C (4)B
11
实验基础梳理
实验热点突破
高考模拟演练
@《创新设计》
注意事项 (1)碰撞的两物体应保证“水平”和“正碰”。 (2)若利用气垫导轨进行实验,调整气垫导轨时,注意利用水平仪确保导轨水平。 (3)若利用摆球进行实验,两小球静放时球心应在同一水平线上,且刚好接触,摆 线竖直,将小球拉起后,两条摆线应在同一竖直平面内。 (4)若利用长木板进行实验,可在长木板下垫一个小木片以平衡摩擦力。 (5)若利用斜槽进行实验,入射球质量m1要大于被碰球质量m2,即m1>m2,防止碰 后m1被反弹,且两球半径r1=r2=r。
15
实验基础梳理
实验热点突破
高考模拟演练
@《创新设计》
【变式训练1】 某同学设计了一个用打点计时器“探究碰撞中的不变量”的实验,在 小车A的前端粘有橡皮泥,设法使小车A做匀速直线运动,然后与原来静止的小车B 相碰并黏在一起继续做匀速运动,如图7所示。在小车A的后面连着纸带,电磁打点 计时器的频率为50 Hz。

实验七 Levy-Jennings质控图绘制

实验七 Levy-Jennings质控图绘制
实验七 Levy-Jennings质控
图的绘制
实验目的:
1、明确临床生物化学室内质量控制 的意义。 2、掌握Levy-Jennings质控图的绘 制方法。
实验操作:
X X/ n
SD (X X) / n 1
2
1、对同一批号的质控血清测定不少于20次, 分别计算出均值、标准值、变异系数。
讨论
失控后的处理
• 先回顾整个过程,思考会有哪个环节出现问题, 然后作出相应初步处理。如未找到明显问题再 如下操作。 • 重测同一质控品。 • 新开一瓶质控品,重测失控项目。 • 重新校准,重测失控项目。
• 进ห้องสมุดไป่ตู้仪器维护,重测失控项目。
• 请专家帮助。
CV SD / X 100 %
2、绘图
①在纵坐标上标出X、X+2SD、X+3SD的标志, 并将其具体数值标在坐标尺上。 ②用红笔画出X+2SD线,用蓝笔画出X+3SD 线 ③在图纸下方日期、测定值、操作值按原始 记录添入相应内容、日期一栏内。未做测定的 节假日,星期日在图上做空格处理。 ④画出每个检测值所对应的图点:在图上的横 坐标为其日期,而纵坐标为测定值。

WSN实验七、八

WSN实验七、八

实验七:温湿度传感器实验7.1 实验目的通过本实验的课程教学,主要是让学生了解以下内容:了解传感器的基本知识;了解传感器的工作原理;了解传感器的功能;掌握温湿度传感器驱动程序的设计方法。

7.2 知识介绍由于温度与湿度不管是从物理量本身还是在实际人们的生活中都有着密切的关系,所以温湿度一体的传感器就会相应产生。

温湿度传感器是指能将温度量和湿度量转换成容易被测量处理的电信号的设备或装置。

市场上的温湿度传感器一般是测量温度量和相对湿度量。

温度是度量物体冷热的物理量,是国际单位制中7个基本物理量之一。

在生产和科学研究中,许多物理现象和化学过程都是在一定的温度下进行的,人们的生活也和他密切相关。

湿度很久以前就与生活存在着密切的关系,但用数量来进行表示较为困难。

日常生活中最常用的表示湿度的物理量是空气的相对湿度,用%RH表示。

在物理量的导出上相对湿度与温度有着密切的关系。

一定体积的密闭气体,其温度越高相对湿度越低,温度越低其相对湿度越高,其中涉及到复杂的热力工程学知识,包括相对湿度、绝对湿度、饱和湿度、露点等概念。

本案例介绍一款瑞士Sensirion公司生产的高性能通用型数字式温湿度传感器SHT11,Sensirion公司是一个世界领先的传感器制造商,该公司提供的温湿度检测方案广泛应用于楼宇控制、暖通空调、家居电器设备中,如下图所示。

SHT11传感器采用了2线制串行通信协议,但传感器不能按照标准I2C协议编址,若I2C 总线上没有挂接别的设备,传感器可以连接到I2C总线上,此时单片机需要按照SHT11的协议进行通信。

2线制通信中,SCK用于处理器与SHT11之间进行通讯同步。

由于接口包含了完全静态逻辑,因此不存在最小SCK频率。

DATA引脚为三态结构,用于读取传感器数据,当处理器向传感器发送命令时,DATA在SCK上升沿有效且在SCK高电平期间必须保持稳定。

DATA在SCK的下降沿之后改变。

为了确保通讯安全,DATA的有效时间在SCK上升沿之前和下降沿之后应该分别延时至少Tsu and Tho参见图11-4。

实验七 视图的创建与使用

实验七  视图的创建与使用

实验七视图的创建与使用学号 ____ 姓名______ 班级________专业__________________一、实验目的1)理解视图的概念。

2)掌握创建视图、测试、加密视图的方法。

3)掌握更改视图的方法。

4)掌握用视图管理数据的方法。

5)了解分区视图的实现方法。

二、实验内容说明:在所有库文件名与表名取名时,请各位同学在所给定的文件名后加上下划线及学号后四位数字构成自己的实验数据库名与表名。

如:XSGL1_20051101.创建视图是数据库应中的常见需求,可以使用企业管理创建、管理视图,也可以用T-SQL 语言创建、管理视图。

1、用创建视图向导创建视图使用视图向导创建一个名为studview的投影视图,该视图从student表中查询出班级号为“052”班的所有学生的学号,姓名,性别,班级,家庭住址,入学时间,出生年月资料。

(提示:分别进入企业管理器,再分别单击“工具”、“向导”、“数据库”、“创建视图向导”,然后一步一步地创建视图。

)基本步骤:2、用企业管理器创建、管理视图(1)创建视图A、使用企业管理器在表student上创建一个能查询“051”班学生学号、姓名、家庭住址信息的投影视图。

1)依次进入企业管理器、数据库、XSGL库,并用鼠标右键单击“视图”。

2)在系统弹出的快捷菜单中单击“新建视图”,出现“新建视图”窗口。

如图所示:3)最上面的一个窗格用于添加创建视图的基础对象,在其上按鼠标右键,单击快捷菜单中的“添加表”,将表student添加到此窗格中,上面第二个窗格用于选择进入视图的列,分别选择相应字段:在查询条件窗格中输入查询条件:,输入where子句,最后一个窗格为视图结果窗口。

4)单击工具栏,执行按钮“!”,观察执行结果是否正确。

若正确,则单击“保存”按钮,输入文件名:stuview1,再单击“确定”按钮,视图创建完成。

B、使用企业管理器在表student、course、sc表上创建一个能检索学生的学号、姓名、学习课程号、学习课程名及课程成绩。

20版:实验七 验证动量守恒定律(创新设计)

20版:实验七 验证动量守恒定律(创新设计)

实验七验证动量守恒定律一、实验原理与操作原理装置图操作要领碰撞前:p=m1v1+m2v2碰撞后:p′=m1v1′+m2v2′(1)测质量:用天平测出两球的质量(2)安装:斜槽末端切线必须沿水平方向(3)起点:入射小球每次都必须从斜槽同一高度由静止释放(4)铺纸:白纸在下,复写纸在上且在适当位置铺放好。

记下重垂线所指的位置O。

(5)测距离:用小球平抛的水平位移替代速度,用刻度尺量出O到所找圆心的距离。

图1二、数据处理1.碰撞找点:把被撞小球放在斜槽末端,每次让入射小球从斜槽同一高度自由滚下,使它们发生碰撞,重复实验10次。

标出碰后入射小球落点的平均位置M 和被撞小球落点的平均位置N。

如图1所示。

2.验证:连接ON,测量线段OP、OM、ON的长度。

将测量数据填入表中,最后代入m1·OP=m1·OM+m2·ON,看在误差允许的范围内是否成立。

注意事项(1)碰撞的两物体应保证“水平”和“正碰”。

(2)选质量较大的小球作为入射小球,即m入>m被碰。

(3)实验过程中实验桌、斜槽、记录的白纸的位置要始终保持不变。

误差分析(1)主要来源于质量m1、m2的测量。

(2)小球落点的确定。

(3)小球水平位移的测量。

热点一教材原型实验命题角度实验原理及操作步骤【例1】如图2,用“碰撞实验器”可以验证动量守恒定律,即研究两个小球在轨道水平部分碰撞前后的动量关系。

图2(1)实验中,直接测定小球碰撞前后的速度是不容易的,但是,可以通过仅测量________(填选项前的符号),间接地解决这个问题。

A.小球开始释放高度hB.小球抛出点距地面的高度HC.小球做平抛运动的射程(2)图中O点是小球抛出点在地面上的垂直投影。

实验时,先将入射球m1多次从斜轨上S位置由静止释放,找到其平均落地点的位置P,测量平抛射程OP。

然后,把被碰小球m2静止于轨道的水平部分,再将入射小球m1从斜轨上S位置由静止释放,与小球m2相撞,并多次重复。

07-实验七 用电磁感应法测磁场分布图文模板

07-实验七    用电磁感应法测磁场分布图文模板

实验目的
➢ 了解用电磁感应法测交变磁场的原理和方法 ➢ 测绘载流圆形线圈轴向的磁场分布 ➢ 测绘载流亥姆霍兹线圈轴向和径向的磁场分布 ➢ 研究探测线圈的法线与亥姆霍兹线圈的轴线呈不同夹 角时所产生的感应电动势的变化规律
基本电磁知识
电磁感应:当穿过线圈中的磁通量发生变化时,线圈中将 产生感应电动势,这种现象称为电磁感应。 磁通量:Φ = BScosθ 感应电动势:ε = −n dΦ
思考: 如何测量恒定磁场的大小?
感谢
谢谢,精品课件
资料搜集
dt
补充知识
对磁场测量,必须首先明确: ➢ 测磁场,指的是测磁场中某处的磁感应强度B ➢ 本实验的磁场是交变磁场(由通以交变电流的圆线圈 产生),测B,指的是测它的有效值 ➢ 要知道某个磁场的分布,显然要测多个点的B。
载流圆形线圈的磁场
在半径为R、匝数为N的圆形线圈中通以交变电流I(有
效值),圆形线圈轴线上某点的磁感应强度B(有效值)的
2
NSω
实验仪器
测试仪
实验仪
探测线圈 (360度旋
转)
左侧线 圈
探测线圈径向移动 手轮
(线圈前后移动)
左侧线圈励 磁电流输入
端口
探测线 圈
电压输
右侧线 圈
探测线圈轴向移动 手轮
(线圈左右移动)
右侧线圈励 磁电流输入
端口
励磁电流 频率
励磁电流大 小
感应电 压
励磁 频率 调节
励磁电 流输出
励磁电 流调节

1.测量单个载流圆形线圈轴线上磁场的分布 2.测量载流亥姆霍兹线圈轴线上磁场的分布 3.测量载流亥姆霍兹线圈径向的磁场分布 4.验证公式
εm = NSωBmcosθ *5.研究励磁电流频率改变对磁场强度的影响(可不做)

实验七微波技术解读

实验七微波技术解读

实验七微波的传输特性和基本测量微波通常是指波长为 1mm 至 1m ,即频率范围为 300GH Z至 300MHz 的电磁波。

其下端与无线电通讯的短波段相连接,上端与远红外光相邻近。

根据波长差异还可以将微波分为米波,分米波,厘米波和毫米波。

不同范围的电磁波既有其相同的特性,又有各自不同的特点。

下面对微波的特点作简要介绍。

1.微波波长很短,比建筑物、飞机、船舶等地球上一般物体的几何尺寸小得多,微波的衍射效应可以忽略,故,微波与几何光学中光的传输很接近,具有直线传播性质,利用该特点可制成方向性极强的天线、雷达等。

2.微波频率很高,其电磁振荡周期为 10-9—10-12秒,与电子管中电子在电极间渡越所经历的时间可以相比拟。

因此,普通的电子管已不能用作微波振荡器、放大器和检波器,必须采用微波电子管(速调管、磁控管、行波管等)来代替。

其次,微波传输线、微波元器件和微波测量设备的线度与微波波长有相近的数量级,因此,分立的电阻器、电容器、电感器等全不同的微波元器件。

3.微波段在研究方法上不象低频无线电那样去研究电路中的电压和电流,而是研究微波系统中的电磁场。

以波长、功率、驻波系数等作为基本测量参量。

4.许多原子、分子能级间跃迁辐射或吸收的电磁波的波长处在微波波段,利用这一特点研究原子、原子核和分子的结构,发展了微波波谱学、量子无线电物理等尖端学科,以及研究低嘈声的量子放大器和极为准确的原子、分子频率标准。

5.某些波段的微波能畅通无阻地穿过地球上空的电离层,因此微波为宇宙通讯、导航、定位以及射电天文学的研究和发展提供了广阔的前景。

由此可见,在微波波段,不论处理问题时所用的概念、方法,还是微波系统的原理结构,都与普通无线电不同。

微波实验是近代物理实验的重要实验之一。

微波技术的应用十分广泛,深入到国防军事(雷达、导弹、导航),国民经济(移动通讯、卫星通信、微波遥感、工业干燥、酒老化),科学研究(射电天文学、微波波谱学、量子电子学、微波气象学),医疗卫生(肿瘤微波热疗、微波手术刀),以及家庭生活(微波炉)等各个领域。

实验七 带传动实验 (2)

实验七 带传动实验 (2)

7 实验七 带传动的弹性滑动与效率实验靠摩擦力传递动力或运动的摩擦型带传动(如平带、V 带等),由于中间元件传动带所具有的挠性,使带传动在工作中产生紧边拉力F 1与松边拉力F 2,由紧边拉力计算式102F F F =+和松边拉力计算式202FF F =-(式中,F 0为带的预紧力;F 为工作载荷要求的有效圆周力),可以看出,由于紧边和松边的拉力不同,造成带的紧边和松边的拉伸变形不同,因而不可避免地会产生带的弹性滑动。

由于弹性滑动的影响,从动轮的圆周速度v 2低于主动轮的圆周速度v 1,其降低量可用滑动率ε来表示:121212111100%100%d n d n v v v d n ππεπ--=⨯=⨯ (7-1) 若主动带轮直径与从动带轮直径相等,即12d d =,则121100%n n n ε-=⨯ 滑动率ε的值与发生弹性滑动的强弱有关,也就是与工作载荷要求的有效圆周力有关。

在做该项实验过程中可以观察到,随着工作载荷的增加,从动轮的圆周速度v 2与主动轮的圆周速度v 1的差值越来越大,即ε值越来越大。

当工作载荷要求的有效圆周力F 超过带与带轮间的摩擦力极限值时,带开始在轮面上打滑,滑动率ε值急剧上升,带传动失效。

这就是带传动实验中的滑动率实验。

带传动实验的第二项内容是求带传动的工作效率。

机械传动的工作效率η是输出功率P 2与输入功率P 1的比值,即21P P η=。

带传动工作时,由于弹性滑动的影响,造成带的摩擦发热和带的磨损,也使传动效率降低。

从机械设计手册中查到的带传动的工作效率值,是在预紧力F 0、工作载荷F 、带的圆周速度v 都达到设计的预定值时的最高效率,如果预紧力F 0、工作载荷F 、带的圆周速度v 没有达到设计的预定值时,则效率η值低于最高效率值。

带传动效率实验是在预定带的圆周速度v 值、预紧力F 0值条件下,工作载荷F 由小到大过程中,效率的变化状况。

如果预紧力F 0超过设计的预定值,虽然效率η值有所提高,但将使带的磨损加剧,温升增高,寿命下降。

实验七 图及其应用实验报告

实验七 图及其应用实验报告

个城市,假设城市间有m条路径(有向图),每条路径的长度已知。

给定地图的一个起点城市和终点城市,利用Dijsktra算法求出起点到终点、核心算法或代码片段:int no; //顶点编号InfoType info; //顶点其他信息} VertexType; //顶点类型typedef struct //图的定义{int edges[MAXV][MAXV]; //邻接矩阵int n, e; //顶点数,边数VertexType vexs[MAXV]; //存放顶点信息} MGraph; //图的邻接矩阵类型//以下定义邻接表类型typedef struct ANode //边的节点结构类型{int adjvex; //该边的终点位置struct ANode *nextarc; //指向下一条边的指针InfoType info; //该边的相关信息,这里用于存放权值} ArcNode;typedef int Vertex;typedef struct Vnode //邻接表头节点的类型{Vertex data; //顶点信息ArcNode *firstarc; //指向第一条边} VNode;typedef VNode AdjList[MAXV]; //AdjList是邻接表类型typedef struct{AdjList adjlist; //邻接表int n, e; //图中顶点数n和边数e} ALGraph; //图的邻接表类型//-------------------------------------//--------带权图的算法-----------------//-------------------------------------void MatToList1(MGraph g, ALGraph *&G)//将邻接矩阵g转换成邻接表G{int i, j;ArcNode *p; //表结点结构类型G = (ALGraph *)malloc(sizeof(ALGraph));for (i = 0; i<g.n; i++) //给邻接表中所有头节点的指针域置初值G->adjlist[i].firstarc = NULL;for (i = 0; i<g.n; i++) //检查邻接矩阵中每个元素for (j = g.n - 1; j >= 0; j--)if (g.edges[i][j] != 0 && g.edges[i][j] != INF) //存在一条边{p = (ArcNode *)malloc(sizeof(ArcNode)); //创建一个节点*pp->adjvex = j; //终点信息p->info = g.edges[i][j]; //权值信息p->nextarc = G->adjlist[i].firstarc; //将*p链到链表后G->adjlist[i].firstarc = p;}G->n = g.n; G->e = g.e;}void DispMat1(MGraph g)//输出邻接矩阵g{int i, j;for (i = 0; i<g.n; i++){for (j = 0; j<g.n; j++)if (g.edges[i][j] == INF)printf("%3s", "∞");elseprintf("%3d", g.edges[i][j]);printf("\n");}}void DispAdj1(ALGraph *G)//输出邻接表G{int i;ArcNode *p;for (i = 0; i<G->n; i++){p = G->adjlist[i].firstarc;printf("%3d: ", i);while (p != NULL){printf("%3d(%d)", p->adjvex, p->info);p = p->nextarc;}printf("\n");}}int visited[MAXV] = { 0 }; //全局数组void DFS(ALGraph *G, int v) //深度优先递归算法{ArcNode *p;visited[v] = 1; //置已访问标记printf("%3d", v); //输出被访问顶点的编号p = G->adjlist[v].firstarc; //p指向顶点v的第一条弧的弧头结点while (p != NULL){if (visited[p->adjvex] == 0) //若p->adjvex顶点未访问,递归访问它DFS(G, p->adjvex);p = p->nextarc; //p指向顶点v的下一条弧的弧头结点}}void BFS(ALGraph *G, int v) //广度优先遍历{ArcNode *p;int queue[MAXV], front = 0, rear = 0; //定义循环队列并初始化int visited[MAXV]; //定义存放结点的访问标志的数组int w, i;for (i = 0; i<G->n; i++) visited[i] = 0; //访问标志数组初始化printf("%3d", v); //输出被访问顶点的编号visited[v] = 1; //置已访问标记rear = (rear + 1) % MAXV;queue[rear] = v; //v进队while (front != rear) //若队列不空时循环{front = (front + 1) % MAXV;w = queue[front]; //出队并赋给wp = G->adjlist[w].firstarc; //找与顶点w邻接的第一个顶点while (p != NULL){if (visited[p->adjvex] == 0) //若当前邻接顶点未被访问{printf("%3d", p->adjvex); //访问相邻顶点visited[p->adjvex] = 1; //置该顶点已被访问的标志rear = (rear + 1) % MAXV; //该顶点进队queue[rear] = p->adjvex;}p = p->nextarc; //找下一个邻接顶点}}printf("\n");}void Prim(MGraph g, int v) //prim 算法求最小生成树{int lowcost[MAXV], min, n = g.n;int closest[MAXV], i, j, k;/***初始化lowcost数组,closest数组(即从起点开始设置lowcost数组,closest 数组相应的值,以便后续生成使用)***/for (i = 0; i < g.n; i++)//赋初值,即将closest数组都赋为第一个结点v,lowcost 数组赋为第一个结点v到各结点的权重{closest[i] = v;lowcost[i] = g.edges[v][i];//g.edges[v][i]的值指的是结点v到i节点的权重}/**********************************开始生成其他的结点*********************************/for (i = 1; i < g.n; i++)//接下来找剩下的n-1个结点(g.n是图的节点个数){/*****找到一个结点,该节点到已选节点中的某一个结点的权值是当前最小的*****/min = INF;//INF表示正无穷(每查找一个结点,min都会重新更新为INF,以便获取当前最小权重的结点)for (j = 0; j < g.n; j++)//遍历所有结点{if (lowcost[j] != 0 && lowcost[j] < min)//若该结点还未被选且权值小于之前遍历所得到的最小值{min = lowcost[j];//更新min的值k = j;//记录当前最小权重的结点的编号}}/****************输出被连接结点与连接结点,以及它们的权值***************/printf("边(%d,%d)权为:%d\n", closest[k], k, min);/***********更新lowcost数组,closest数组,以便生成下一个结点************/lowcost[k] = 0;//表明k结点已被选了(作标记)//选中一个结点完成连接之后,作数组相应的调整for (j = 0; j < g.n; j++)//遍历所有结点{/* if语句条件的说明:* (1)g.edges[k][j] != 0是指k!=j,即跳过自身的结点* (2)g.edges[k][j]是指刚被选的结点k到结点j的权重,lowcost[j]是指之前遍历的所有结点与j结点的最小权重。

实验七 视图的创建和管理

实验七 视图的创建和管理

实验七视图的创建和管理一、实验目的与要求⏹熟练掌握使用企业管理器和SQL语句创建、查询、更新、修改和删除视图。

⏹进一步掌握视图与基本表的联系与区别。

二、实验内容和步骤1、创建视图(1)启动企业管理器,在产品销售数据库CPXS中创建价格小于2000的产品视图VIEW_CP_PRICE2000,要求对该视图的更新都要符合价格小于2000这个条件,写出创建过程和对应的SQL语句:CREATE VIEW VIEW_CP_PRICE2000ASSELECT *FROM CPWHERE 价格< 2000(2)打开查询分析器,用SQL语句创建各客户购买产品的情况VIEW_GMQK视图,包括客户编号、客户名称、产品编号、产品名称、价格,购买日期、购买数量。

CREATE VIEW VIEW_GMQKAS SELECT distinct cpxsb.客户编号, 客户名称,cpxsb.产品编号,产品名称,价格,销售日期,数量FROM CPXSB, cp, xssWHERE cp.产品编号= cpxsb.产品编号AND cpxsb.客户编号= xss.客户编号(3)创建分区视图:在CPXS数据库中创建CP1和CP2两个表,CP1表中为编号小于等于’100010’产品数据,CP2表中为编号大于‘100010’产品数据,以分区列为产品编号,创建可更新的分区视图VIEW_CP1和VIEW_CP2。

CREATE VIEW VIEW_CP1 AS SELECT *FROM CPWHERE 产品编号< '100010'CREATE VIEW VIEW_CP2AS SELECT*FROM CPWHERE产品编号>='100010'WITH CHECK OPTION(这样创建的视图才可进行数据的更新!!要加最后一条子句,否则不可更新)2、查询视图(1)基于VIEW_CP_PRICE2000视图,查询价格在2000以下产品的产品编号、名称和价格。

实验七视力、视野、色盲和盲点的测定

实验七视力、视野、色盲和盲点的测定
实验七视力、视野、色盲和 盲点的测定
目录
• 实验目的 • 实验原理 • 实验步骤 • 实验结果分析 • 实验结论
01
实验目的
了解视力、视野、色盲和盲点的基本概念
视力
视野
是指眼睛识别细微和远距离物体的能力, 通常用视力和矫正视力来表示。视力低于 1.0时,称为视力障碍。
是指眼睛正视前方时所能看到的空间范围 。视野的大小和形状与眼球的生理结构有 关。
视野测定原理
视野是指眼睛所能看到的空间范围。
视野测定通常采用视野计来完成,通过让测试者观察不同方向的视觉刺激,记录 测试者眼睛移动过程中所看到的范围,从而得出视野值。
色盲测定原理
01
色盲是指无法正常分辨某些颜色 或全部颜色的视觉缺陷。
02
色盲测定通常采用色盲检测图来 进行,通过观察测试者对不同颜 色组合的辨认能力,判断测试者 是否存在色盲及其类型。
盲点测定原理
盲点是指眼睛视野中的某一部分区域 无法感知。
盲点测定通常采用视错觉法来进行, 通过观察测试者对特定视觉刺激的感 知情况,判断测试者是否存在盲点及 其位置。
03
实验步骤
视力测定步骤
01
02
03
准备视力表
选择合适的视力表,确保 其清晰可见,并将视力表 挂在墙上或放置在桌面上。
测试距离
调整测试距离,确保测试 者和被测试者之间的距离 为5米或2.5米,具体根据 视力表的规格而定。
色盲测定步骤
准备色盲检测图
选择合适的色盲检测图,确保其 清晰可见。
观察颜色
让被测试者观察色盲检测图中的 颜色,并回答对应的颜色名称。
记录结果
根据被测试者的回答判断其是否 为色盲或色弱,并记录下结果。

实验七反相器,二输入与非门以及二输入或非门版图设计

实验七反相器,二输入与非门以及二输入或非门版图设计

学号姓名
实验七1.反相器
反相器EECMOS的schematic图如下所示
其中PMOS管L=180nm W=720nm NMOS管L=180nm W=240nm
根据schematic画出的layout图如下所示
其中该版图长:2.16um 宽:4.87um
则版图面积为S=L*W=2.16*4.87=10.5192(um^2)
经过多此修改后,DRC验证如下
LVS验证如下
2.二输入与非门
二输入与非门nand2的schematic图如下所示
其中两个PMOS管的L=180nm W=720nm 两个NMOS管的L=180nm W=720nm
根据schematic图画出的layout版图如下所示
其中nand2版图的长:2.76um 宽:5.14um
则版图的面积S=L*W=2.76*5.14=14.1864(um^2)
通过改错后,DRC验证结果如下
LVS验证结果如下
3.二输入或非门
二输入或非门nor的schematic图如下所示
其中两个PMOS管的L=180nm W=2.51um 两个NMOS管的L=180nm W=500nm
由schematic图画出的layout版图如下所示
由于PMOS管的宽度较大,为了提高能通过的峰值电流,不浪费diff的面积,最大限度打满了源漏孔
其中该版图的长:2.91um 宽6.65um
则版图面积S=L*W=2.91*6.65=19.3531(um^2)
通过改错,DRC验证结果如下
LVS验证结果如下。

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

实验七图【实验目的】1、掌握图的邻接矩阵和邻接表表示。

2、掌握图的深度优先和广度优先搜索方法。

3、掌握图的最小生成树Prim算法。

4、掌握图的拓扑排序算法。

5、掌握图的单源最短路径dijkstra算法。

【实验学时】4-6学时【实验预习】回答以下问题:1、写出图7-1无向图的邻接矩阵表示。

图7-1 无向图G1有向图的邻接表表示。

2、写出图7-23、写出图7-1的深度优先搜索序列和广度优先搜索序列。

深度:ABDHECFG广度:ABCFDEGH4、写出图7-2的拓扑序列,说明该有向图是否有环?图7-3 无向带权图G36、根据图7-4,求从顶点A到其他顶点的单源最短路径。

图7-4有向带权图G4【实验内容和要求】1、编写程序exp7_1.c,实现图的邻接矩阵存储及图的深度优先搜索和广度优先搜索。

以图7-1的无向图为例,补充完整程序,调试运行并写出运行结果。

运行结果:(包括输入数据)exp7_1.c参考程序如下:#include<stdio.h>#define N 20#define TRUE 1#define FALSE 0int visited[N]; /*访问标志数组*/typedef struct { /*辅助队列的定义*/int data[N];int front,rear;}queue;typedef struct { /*图的邻接矩阵表示*/int vexnum,arcnum;char vexs[N];int arcs[N][N];}MGraph;void createGraph(MGraph *g); /*建立一个无向图的邻接矩阵*/ void dfs(int i, MGraph *g); /*从第i个顶点出发深度优先搜索*/ void tdfs(MGraph *g); /*深度优先搜索整个图*/void bfs(int k, MGraph *g); /*从第k个顶点广度优先搜索*/ void tbfs(MGraph *g); /*广度优先搜索整个图*/void init_visit(); /*初始化访问标识数组*/void createGraph(MGraph *g) { /*建立一个无向图的邻接矩阵*/ int i=0,j,e=0;char v;g->vexnum=0;g->arcnum=0;printf("\n输入顶点序列(以#结束):\n");while ((v=getchar())!='#') {g->vexs[i]=v; /*读入顶点信息*/i++;}g->vexnum=i; /*顶点数目*/for (i=0;i<g->vexnum;i++) /*邻接矩阵初始化*/for (j=0;j<g->vexnum;j++)g->arcs[i][j]=0;/*(1)-邻接矩阵元素初始化为0*/ printf("\n输入边的信息(顶点序号,顶点序号),以(-1,-1)结束:\n");scanf("%d,%d",&i,&j); /*读入边(i,j)*/while (i!=-1) { /*读入i为-1时结束*/g->arcs[i][j]=1; /*(2)-i,j对应边等于1*/g->arcs[j][i]=1;e++;scanf("%d,%d",&i,&j);}g->arcnum=e; /*边数目*/}/* createGraph *//*(3)---从第i个顶点出发深度优先搜索,补充完整算法*/void dfs(int i, MGraph *g){int j;printf("%c",g->vexs[i]);visited[i]=1;for(j=0;j<g->vexnum;j++)if(g->arcs[i][j]==1&&(!visited[j]))dfs(j,g);}/* dfs */void tdfs(MGraph *g) { /*深度优先搜索整个图*/int i;printf("\n从顶点%C开始深度优先搜索序列:",g->vexs[0]);for (i=0;i<g->vexnum;i++)if (!visited[i]) /*(4)---对尚未访问过的顶点进行深度优先搜索*/ dfs(i,g);printf("\n");}/*tdfs*/void bfs(int k, MGraph *g) { /*从第k个顶点广度优先搜索*/int i,j;queue qlist,*q;q=&qlist;q->rear=0;q->front=0;printf("%c",g->vexs[k]);visited[k]=TRUE;q->data[q->rear]=k;q->rear=(q->rear+1)%N;while (q->rear!=q->front) { /*当队列不为空,进行搜索*/i=q->data[q->front];q->front=(q->front+1)%N;for (j=0;j<g->vexnum;j++)if ((g->arcs[i][j]==1)&&(!visited[j])) {printf("%c",g->vexs[j]);visited[j]=TRUE;q->data[q->rear]=j; /*(5)---刚访问过的结点入队*/q->rear=(q->rear+1)%N; /*(6)---修改队尾指针*/ }}}/*bfs*/void tbfs(MGraph *g) { /*广度优先搜索整个图*/int i;printf("\n从顶点%C开始广度优先搜索序列:",g->vexs[0]);for (i=0;i<g->vexnum;i++)if (visited[i]!=TRUE)bfs(i,g); /*从顶点i开始广度优先搜索*/ printf("\n");}/*tbfs*/void init_visit(){ /*初始化访问标识数组*/int i;for (i=0;i<N;i++)visited[i]=FALSE;}int main(){MGraph ga;int i,j;printf("***********图邻接矩阵存储和图的遍历***********\n");printf("\n1-输入图的基本信息:\n");createGraph(&ga);printf("\n2-无向图的邻接矩阵:\n");for (i=0;i<ga.vexnum;i++) {for (j=0;j<ga.vexnum;j++)printf("%3d",ga.arcs[i][j]);printf("\n");}printf("\n3-图的遍历:\n");init_visit(); /*初始化访问数组*/tdfs(&ga); /*深度优先搜索图*/init_visit();tbfs(&ga); /*广度优先搜索图*/return 0;}2、编写程序exp7_2.c,实现图的邻接表存储和拓扑排序算法。

以图7-2的有向图为例,补充完整程序,调试运行并写出运行结果。

运行结果:(包括输入数据)exp7_2.c程序代码参考如下:#include<stdio.h>#include<malloc.h>#define N 20/*图的邻接表:邻接链表结点*/typedef struct EdgeNode{int adjvex; /*顶点序号*/struct EdgeNode *next; /*下一个结点的指针*/} EdgeNode;/*图的邻接表:邻接表*/typedef struct VNode{char data; /*顶点信息*/int ind; /*顶点入度*/struct EdgeNode *link; /*指向邻接链表指针*/} VNode;typedef struct ALgraph{ /*图的邻接表*/int vexnum,arcnum; /*顶点数、弧数*/VNode adjlist[N];}ALGraph;void createGraph_list(ALGraph *g); /*建立有向图的邻接表*/void topSort(ALGraph *g); /*拓扑排序*//*建立有向图的邻接表*/void createGraph_list(ALGraph *g){int i,j,e;char v;EdgeNode *s;i=0;e=0;printf("\n输入顶点序列(以#结束):\n");while((v=getchar())!='#') {g->adjlist[i].data=v; /*读入顶点信息*/g->adjlist[i].link=NULL;g->adjlist[i].ind=0;i++;}g->vexnum=i; /*建立邻接链表*/printf("\n请输入弧的信息(顶点序号,顶点序号),以(-1,-1)结束:\n");scanf("%d,%d",&i,&j);while(i!=-1) {s=(struct EdgeNode*)malloc(sizeof(EdgeNode));s->adjvex=j;s->next=g->adjlist[i].link; /*(1)s插入链表*/g->adjlist[i].link=s;g->adjlist[j].ind++; /*(2)顶点j的入度加1*/e++;scanf("%d,%d",&i,&j);}g->arcnum=e;}/*createGraph_list*/void topSort(ALGraph *g) { /*拓扑排序*/int i,j,k,top=0,m=0,s[N]; /*m为拓扑排序输出的结点数*/EdgeNode *p;for(i=0; i<g->vexnum; i++)if(g->adjlist[i].ind==0) /*(3)入度为0的顶点入栈*/s[top++]=i;printf("\n输出拓扑序列:");while(top>0) {j=s[--top];printf("%c",g->adjlist[j].data);m++;p=g->adjlist[j].link;while(p!=NULL) {k=p->adjvex;g->adjlist[k].ind--; /*顶点k入度减1*/if(g->adjlist[k].ind==0) /*顶点k入度为0,进栈*/s[top++]=k;p=p->next;}}printf("\n共输出%d个顶点\n",m);if(m<g->vexnum) /*(4)当输出顶点数小于图的顶点数,表示有环*/ printf("图中有环!");elseprintf("图中无环!");}/*topSort*/int main(){ALGraph g;int i;EdgeNode *s;printf("***********图的邻接表存储结构和拓扑排序***********\n");printf("\n1-输入图的基本信息:\n");createGraph_list(&g); /*创建图的邻接表存储结构*/printf("\n2-图的邻接表:");for(i=0; i<g.vexnum; i++) { /*输出图的邻接表存储结构*/printf("\n%c,%d:",g.adjlist[i].data,g.adjlist[i].ind);s=g.adjlist[i].link;while(s!=NULL) {printf("->%d",s->adjvex);s=s->next;}}printf("\n");printf("\n3-根据图的邻接表实现拓扑排序:\n");topSort(&g); /*进行拓扑排序*/return 0;}(3)调试下面给出的图的信息,写出运行结果,画出该有向图。

相关文档
最新文档