文档库 最新最全的文档下载
当前位置:文档库 › 实验报告 红外光谱仪测定没食子酸乙酯的结构

实验报告 红外光谱仪测定没食子酸乙酯的结构

实验报告 红外光谱仪测定没食子酸乙酯的结构
实验报告 红外光谱仪测定没食子酸乙酯的结构

实验二红外光谱仪测定没食子酸乙酯的结构

1 实验目的

1.1了解红外光谱仪的基本操作;

1.2了解红外光谱仪测定没食子酸乙酯结构的原理;

1.3掌握如何根据红外图谱推测一个化合物的结构。

2实验原理

红外光谱法(Infrared Spectroscopy,IR)是鉴定化合物和确定物质分子结构的常用手段之一。利用红外光谱法还可以对单一组分或混合物中各组分进行分析,尤其是对于一些较难分离、在紫外或可见光区找不到明显特征峰的样品可方便迅速地完成分析。

红外光谱在可见光区和微波区之间,其波长范围约为0.75~1000μm。根据实验技术和应用的不同。通常将红外光谱划分为三个区域,近红外、中红外和远红外区域,具体见表1。

表1. 红外光谱的划分

红外光谱法实质上是一种根据分子内部原子间的相对振动和分子转动等信息来确定物质分子结构和鉴别化合物的分析方法。具体过程为:当一束具有连续波长的红外光通过物质,物质分子中某个基团的振动频率或转动频率和红外光的频率一样时,分子就会吸收红外辐射的能量,并发生振动和转动能级的跃迁,由原来的基态振(转)动能级跃迁到能量较高的振(转)动能级。将分子吸收红外光的情况用仪器记录下来,就得到红外光谱图。

不同的化合物的分子结构不同,因此其具有的相应的特征红外谱图,其谱带的数目、位置、形状和强度均随化合物及其聚集态的不同而不同。因此,根据化合物的红外光谱图,就可以像辨认人的指纹一样确定该化合物或其官能团是否存在,从而定性分析有机化合物。同时,根据物质组分的吸收峰强度,依据朗伯—比耳定律便可实现对化合物的定量分析。

没食子酸乙酯(Ethyl Gallate)是一种植物活性成分,具有体外抗凝、镇痛、纤维化抑制以及抗菌等活性。其是一种单体,白色晶体,熔点143~145℃,化学结构式为:

3实验器材

3.1 实验样品:没食子酸乙酯

3.2 实验试剂:溴化钾(分析纯)

3.3 实验仪器:Frontier红外光谱仪

4实验步骤

4.1 取200mg的溴化钾和1~2mg的没食子酸乙酯置于玛瑙研钵中,研磨并混合。

4.2 将研磨好的混合样置于压片模具中,并用压片机压制,其中压力保持在25~30Mpa范围内。

4.3 打开红外光谱仪和相连的电脑,并打开Spectrum软件。

4.4 将各参数按以下数值进行设置。Start:4000cm-1;end:450 cm-1;scan:T%;scan number:1;resolution:4.00 cm-1。其中,选定“T%”为测定指标。

4.5 参数设置完后再点击“scan”分别测定背景光谱(以空气为空白对照)和样品光谱值。

4.6 光谱测定完毕后,可一次点击“view → Cursor → vertical peak”查看光谱图,并记录数据。

5 实验结果与讨论

由红外光谱仪测得没食子酸乙酯的红外光谱吸收曲线可得,波数在1200cm-1以上的吸收峰有8个,根据图1的基团吸收带数据表,可推断波数值与官能团归

属见下表2。

图1 基团红外吸收带数据表

6知识扩展

6.1 红外光谱法的优缺点。

答:红外光谱法的优点:应用广;提供信息多且具有特征性;不受物体的相态限制;样品用量少;分析速度快;操作简单。

红外光谱法的局限性:不适合红外无吸收的物质;旋光异构以及不同分子量的同一高聚物无法鉴别;谱图上不是所有的峰都能作出理论解释。

6.2 红外光谱法在食品检测中的应用。

答:红外光谱法在食品检测中有广泛的应用,具体有:

(1)在粮油检测方面,它可以同时测定小麦中蛋白质、淀粉、水分、灰分、干面筋等含量,快速测定其他粮食中淀粉和蛋白质含量,评价和控制面粉生产过程中原料与产品的品质。

(2)在肉制品加工中,测定原料肉或肉制品中的水分、蛋白质、脂肪含量等指标,甚至可以在屠宰分割过程中即时测定胴体肉的水分、蛋白质含量。

(3)在发酵工业中,近红外技术可以用来测定发酵乳的蛋白质、脂肪和总固形物含量,检测葡萄酒发酵过程中各种香味成分以及各种糖类的含量,测定酱油中主要成分,食品的掺伪检测等。

(4)在油脂工业中,近红外技术可用来检测油料中油分含量及游离脂肪酸、碘值等指标。

6.3 一种物质结构式的确定过程。

答:一种物质结构式的确定过程:

(1)根据质谱、元素分析结果得到分子式,由分子式计算不饱和度;

(2)根据红外谱图中的特征频率及频率与结构的关系,找出官能团;

(3)根据官能团及化学物理特性,拼凑可能的结构;

(4)进一步,根据与标样的标准谱图对照,结合其它仪器分析手段(紫外、质谱、核磁共振波谱)得出的结论。

6.4 红外光谱法中试样的制备要求。

答:要获得一张高质量红外光谱图,除了仪器本身的因素外,还必须有合适的样品制备方法。红外光谱的试样可以是液体、固体或气体,一般应要求:(1)试样应该是单一组份的纯物质,纯度应>98%或符合商业规格,才便于与纯物质的标准光谱进行对照。多组份试样应在测定前尽量预先用分馏、萃取、重结晶或色谱法进行分离提纯,否则各组份光谱相互重叠,难于判断。

(2)试样中不应含有游离水。水本身有红外吸收,会严重干扰样品谱,而且会侵蚀吸收池的盐窗。

(3)试样的浓度和测试厚度应选择适当,以使光谱图中的大多数吸收峰的透射比处于10%~80%范围内。

6.5 红外光谱法中试样的制备方法。

答:液体、固体或气体的红外光谱试样,制备方法有:

(1)气体样品:气态样品可在玻璃气槽内进行测定,它的两端粘有红外透光的NaCl或KBr窗片。先将气槽抽真空,再将试样注入。

(2)液体和溶液试样:液体池法,适合沸点较低,挥发性较大的试样,可注入封闭液体池中,液层厚度一般为0.01~1mm;液膜法,适合沸点较高的试样,直接滴在两片压片之间,形成液膜。

对于一些吸收很强的液体,当用调整厚度的方法仍然得不到满意的谱图时,可用适当的溶剂配成稀溶液进行测定。一些固体也可以溶液的形式进行测定。常用的红外光谱溶剂应在所测光谱区内本身没有强烈的吸收,不侵蚀盐窗,对试样

没有强烈的溶剂化效应等。

(3)固体试样:压片法,将1~2mg试样与200mg纯KBr研细均匀(使用前已经过干燥处理),置于模具中,研磨到粒度小于2μm,用(5~10)×107Pa 压力在油压机上压成透明薄片,即可测定;石蜡糊法,将干燥处理后的试样研细,与液体石蜡或全氟代烃混合,调成糊状,夹在盐片中测定;薄膜法,主要用于高分子化合物的测定,可将它们直接加热熔融后涂制或压制成膜。也可将试样溶解在低沸点的易挥发溶剂中,涂在盐片上,待溶剂挥发后成膜测定。

当样品量特别少或样品面积特别小时,采用光束聚光器,并配有微量液体池、微量固体池和微量气体池,采用全反射系统或用带有卤化碱透镜的反射系统进行测量。

数据结构-堆栈和队列实验报告

实验二堆栈和队列 实验目的: 1.熟悉栈这种特殊线性结构的特性; 2.熟练并掌握栈在顺序存储结构和链表存储结构下的基本运算; 3.熟悉队列这种特殊线性结构的特性; 3.熟练掌握队列在链表存储结构下的基本运算。 实验原理: 堆栈顺序存储结构下的基本算法; 堆栈链式存储结构下的基本算法; 队列顺序存储结构下的基本算法;队列链式存储结构下的基本算法;实验内容: 3-18链式堆栈设计。要求 (1)用链式堆栈设计实现堆栈,堆栈的操作集合要求包括:初始化Stacklnitiate (S), 非空否StackNotEmpty(S),入栈StackiPush(S,x), 出栈StackPop (S,d),取栈顶数据元素StackTop(S,d); (2)设计一个主函数对链式堆栈进行测试。测试方法为:依次把数据元素1,2,3, 4,5 入栈,然后出栈并在屏幕上显示出栈的数据元素; (3)定义数据元素的数据类型为如下形式的结构体, Typedef struct { char taskName[10]; int taskNo; }DataType; 首先设计一个包含5个数据元素的测试数据,然后设计一个主函数对链式堆栈进行测试,测试方法为:依次吧5个数据元素入栈,然后出栈并在屏幕上显示出栈的数据元素。 3-19对顺序循环队列,常规的设计方法是使用対尾指针和对头指针,对尾指针用于指示当 前的対尾位置下标,对头指针用于指示当前的対头位置下标。现要求: (1)设计一个使用对头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始化,入队列,出队列,取对头元素和判断队列是否为空; (2)编写一个主函数进行测试。 实验结果: 3-18 typedef struct snode { DataType data; struct snode *n ext; } LSNode; /* 初始化操作:*/

轴系结构设计与分析实验报告

轴系结构设计实验报告 一、实验目的 1、熟悉并掌握轴系结构设计中有关轴的结构设计,滚动轴承组合设计的基本方法; 2、熟悉并掌握轴、轴上零件的结构形状及功用、工艺要求和装配关系; 3、熟悉并掌握轴及轴上零件的定位与固定方法; 4、了解轴承的类型、布置、安装及调整方法以及润滑和密封方式。 二、实验设备 1、组合式轴系结构设计分析试验箱。 试验箱提供能进行减速器圆柱齿轮轴系,小圆锥齿轮轴系及蜗杆轴系结构设计实验的全套零件。 2、测量及绘图工具 300mm钢板尺、游标卡尺、内外卡钳、铅笔、三角板等。 三、实验步骤 1、明确实验内容,理解设计要求; 已知条件(包括传动零件类型、载荷条件、速度条件): 直齿圆柱齿轮、圆锥滚子轴承、阶梯轴、载荷变动小、传动平稳 绘制传动零件支撑原理简图: 2、复习有关轴的结构设计与轴承组合设计的内容与方法(参看教材有关章节); 3、构思轴系结构方案 (1)根据齿轮类型选择滚动轴承型号; 轴承类别:圆锥滚子轴承选择依据:能承受径向和轴向方向的力

(2)确定支承轴向固定方式(两端固定或一端固定、一端游动); 轴承轴向固定方式:两端固定选择依据:传动平稳 (3)根据齿轮圆周速度(高、中、低)确定轴承润滑方式(脂润滑、油润滑); 润滑方式:油润滑选择依据:齿轮圆周速度中低 (4)选择端盖形式(凸缘式、嵌入式)并考虑透盖处密封方式(毡圈、皮碗、油沟); 密封方式:毡圈、端盖凸缘式选择依据:更好的密封轴肩 (5)考虑轴上零件的定位与固定,轴承间隙调整等问题; 如何定位:定位的话可以用轴肩、端盖、套筒、挡圈,圆螺母。 选择依据:用外力对零件进行约束,使零件在轴向无法产生相对位移。 (6)绘制轴系结构方案示意图。 4、组装轴系部件 根据轴系结构方案,从实验箱中选取合适零件并组装成轴系部件、检查所设计组装的轴系结构是否正确。 5、测量零件结构尺寸(支座不用测量),并作好记录。 6、将所有零件放入试验箱内的规定位置,交还所借工具。 7、根据结构草图及测量数据,在图纸上绘制轴系结构装配图,要求装配关系表达正确,注明必要尺寸(如支承跨距、齿轮直径与宽度、主要配合尺寸),填写标题栏和明细表。 8、写出实验报告。 四、实验结果分析 1、轴上各键槽是否在同一条母线上。答:是。

机械设计实验报告

机械设计基础(A2)实验报告 徐嘉宁 沈阳理工大学 2006.10

目录 一. 皮带传动实验报告 (1) 1.1. 实验目的 (1) 1.2. 实验机构造及测试原理 (1) 1.3. 实验步骤 (1) 1.4. 数据和曲线 (1) 二. 齿轮传动效率实验报告 (3) 2.1. 实验目的 (3) 2.2. 实验机构及测试原理 (3) 2.3. 实验步骤 (3) 2.4. 数据和曲线 (3) 2.5. 思考题 (4) 三. HS-A型液体动压轴承实验报告 (5) 3.1. 实验目的 (5) 3.2. 实验机构及测试原理 (5) 3.3. 实验步骤 (5) 3.4. 数据和曲线 (5) 四. JDI-A型创意组合式轴系结构设计实验报告 (8) 4.1. 实验目的 (8) 4.2. 实验内容 (8) 4.3. 实验结果 (8) 五. JDI—A型创意组合式轴系结构分析实验报告 (10) 5.1. 实验目的 (10) 5.2. 实验内容 (10) 5.3. 实验结果 (10) 六. JCY机械传动性能综合实验报告 (12) 6.1. 实验目的 (12) 6.2. 实验内容 (12) 6.3. 实验步骤 (12) 6.4. 实验结果 (12)

一.皮带传动实验报告 专业班级------------------ 姓名----------------- 指导教师------------------ 日期----------------- 1.1.实验目的 1.2.实验机构造及测试原理 1.3.实验步骤 1.4.数据和曲线

二.齿轮传动效率实验报告 专业班级------------------ 姓名----------------- 指导教师------------------ 日期----------------- 2.1.实验目的 2.2.实验机构及测试原理 2.3.实验步骤 2.4.数据和曲线

心得体会 轴系结构设计实验心得体会

轴系结构设计实验心得体会 轴系结构设计实验心得体会第二篇、实验二、轴系结构设计实验 轴系结构设计实验心得体会 实验二、轴系结构设计实验 一、实验目的 1、熟悉常用轴系零部件的结构; 2、掌握轴的结构设计基本要求; 3、掌握轴承组合结构设计的基本方法。 二、实验设备 ①各种轴; ②轴上零件:齿轮、蜗杆、带轮、联轴器、轴承、轴承座、端盖、套杯、套筒、圆螺母、止退垫圈、轴端挡板、轴用弹性垫圈、孔用弹性垫圈、螺钉、螺母等。 ③工具包括活搬手、游标卡尺、胀钳。 ④铅笔、三角尺等绘图工具自备。 三、概述 轴系结构是机械的重要组成部分,也是机械设计课程的核心教学内容。由于轴系结构设计的问题多、实践性强、灵活性大,因此既是教师讲授的难点,也是学生学习中最不易掌握的内容。本实验通过学生自己动手,经过装配、调整、拆卸等全过程,不仅可以增强学生对轴系零部件结构的感性认识,还能帮助学生深入理解轴的结构设计、轴承组合结构设计的基本要领,达到提高设计能力和工程实践能力的目

的。 四、实验内容 1、每组同学根据轴系简图装配轴系部件; 2、分析并测绘部件,在简图上标出零、部件尺寸; 3、编写实验报告,并画出轴系部件装配草图。 五、实验步骤 ①根据轴系结构设计装配草图,选择相应的零件实物,按装配工艺要求顺序装在轴上,完成轴系结构设计; ②分析轴系结构方案的合理性。分析时应考虑以下问题: a.轴上各键槽是否在同一条母线上; b.轴上各零件是否处于指定位置; c.轴上各零件的轴向、周向固定是否合理、可靠,如防松、轴承拆卸等; d.轴系能否实现回转运动,运动是否灵活; e.轴系沿轴线方向的位置是否确定,轴向力能否传到机座上; f.轴系的轴向位置是否需要调整,需要时,如何调整。 ③在确认实际装配结构无误时,测绘各零件的实际尺寸(底板不测绘,轴承座只测量轴向宽度); ④将实验零件放回箱内,排列整齐,工具放回原处; ⑤在实验报告上,按1∶1比例完成轴系结构装配图(只标出各段轴的直径和长度,公差配合及其余尺寸不标注,零件序号、标题栏可省略)。 注意:因实验条件限制,本实验忽略过盈配合的松紧程度、轴肩过渡

霍夫曼树实验报告

实验二二叉树的遍历及霍夫曼编码 班级:计科1101班 学号:0909101605 姓名:杜茂鹏 2013年5月22日

一、实验目的 掌握二叉树的建立及遍历操作,霍夫曼编码基本操作及存储结构表示 二、实验内容 1. 系统要求包含以下功能 1)初始化:从终端读入字符集大小n,以及n个字符和n个权值(或者读入字符集和频度数据文件),建立哈夫曼树,并将哈夫曼树存入到文件HfmTree 中。 2)编码:利用已建好的哈夫曼树(如果不在内存中,则从文件中读入),从文件ToBeTran中读入原文,对原文进行编码,将编码后的结果存入文件CodeFile 中。 3)译码:利用已建好的哈夫曼树将文件CodeFile中的代码进行译码,结果存入文件TextFile中。 4)打印:打印输出哈夫曼树,显示ToBeTran, TextFile和CodeFile文件的内容。 三、实验要求 1.在上机前写出全部源程序; 2.能在机器上正确运行程序; 3.用户界面友好。 四、概要设计 1)首先动态分配数组存储霍夫曼树及存储霍夫曼编码表,然后从终端或文件读入霍夫曼树的字符变量及其频度,初始化建立霍夫曼树并将其写入文件HfmTree.txt中。 2)从指定的文件succe.txt中读入原文,利用已经编好的霍夫曼树对其编码,将编码结果写入文件Coding.txt保存。 3)利用已建好的哈夫曼树将文件Coding.txt中的代码进行译码,结果存入文件decoding.txt中。

五、测试数据: 2.原文内容“THIS IS MY PROGRAM” 六、详细设计 实验内容(原理、操作步骤、程序代码) //建立霍夫曼树,对原文进行编码、译码 #include #include #include #include typedef struct tree { char ch; int weight;//权值 int parent,lchild,rchild; }HTNode,*HuffmanTree;//动态分配数组存储霍夫曼树typedef char **HuffmanCode;//动态分配数组存储霍夫曼编码表void Select(HuffmanTree &HT,int* s1,int* s2,int n) { int j; int min1=10000; for(j=1;j<=n;j++) { if(HT[j].parent==0&&min1>HT[j].weight)

队列实验报告

一.实验项目名称 循环队列和链式队列的创建 二、实验目的 1、掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等, 2、队列顺序存储结构、链式存储结构和循环队列的实现,以便在 实际问题背景下灵活应用。 三、实验内容 1.链式队列的实现和运算 2.循环队列的实现和运算 四、主要仪器设备及耗材 VC++6.0运行环境实现其操作 五.程序算法 (1) 循环队列操作的算法 1>进队列 V oid enqueue (seqqueue &q, elemtype x) { if ((q.rear+1)%maxsize = = q.front) cout<<”overflow”; else { q.rear=(q.rear+1)%maxsize; //编号加1或循环回第一个单元 q.queue[q.rear]=x; } } 2>出队列 V oid dlqueue(seqqueue &q ) { if (q.rear= =q.front) cout<<”underflow”; else q.front =(q.front+1)%maxsize; } 3>取对头元素

elemtype gethead(seqqueue q ) { if (q.rear= =q.front) { cout<<”underflow”; return NULL;} else return q.queue[(q.front+1)%maxsize]; //front指向队头前一个位置 } 4>判队列空否 int empty(seqqueue q ) { if (q.rear= =q.front) reurn 1; else return 0; } (2).链队列操作的算法 1>.链队列上的初始化 void INIQUEUE( linkqueue &s) { link *p; p=new link; p->next=NULL; //p是结构体指针类型,用-> s.front=p; //s是结构体变量,用. s.rear=p; //头尾指针都指向头结点 } 2>.入队列 void push(linkqueue &s, elemtype x) { link *p; //p是结构体指针类型,用-> p=new link; p->data=x; p->next=s.rear->next; //s是结构体变量,用. s.rear->next=p; s.rear=p; //插入最后 } 3>判队空 int empty( linkqueue s ) { if (s.front= =s.rear) return 1; else return 0; } 4>.取队头元素 elemtype gethead( linkqueue s ) { if (s.front= =s.rear) return NULL; else retuen s.front->next->data; }

轴系结构设计与搭接实验

轴系结构设计与搭接实验 一、实验目的 1.了解机械传动装置中滚动轴承支承轴系结构的基本类型和应用场合。 2.根据各种不同的工作条件,初步掌握滚动轴承支承轴系结构设计的基本方法。 3.通过模块化轴系搭接实践,进一步掌握滚动轴承支承轴系结构中工艺性、标准化、轴系的润滑和密封等知识。 二、主要的实验设备 模块化轴系搭接系统:提供可实现多方案组合的基本轴段,以及轴系常用的零件如轴套、轴承、端盖、密封件、机架等。 2.测量与装拆工具 三、实验题目 1.单级齿轮减速器输入轴轴系结构 2.二级齿轮减速器输入轴轴系结构 3. 二级齿轮减速器中间轴轴系结构 4.锥齿轮减速器输入轴轴系结构 5.蜗杆减速器输入轴轴系结构 详见“轴系机构明细表” 四、实验要求 每位同学选择设计题目中一个轴系结构,根据该结构简图和搭接零件明细表设计轴系结构装配图(建议采用M=1:1比例,3#坐标纸,手绘)。 2.分析轴的各部分结构,形状,尺寸与轴的强度,刚度,加工,装配的关系。 3.分析轴上的零件的用途,定位及固定方式。 4.分析轴承类型,布置和轴承的固定,调整方式。 5.了解润滑及密封装置的类型,结构和特点。 6.携带所绘制的完整的装配图在实验室进行轴系搭接实验。 7.按照轴系结构模块的可行方案修改原设计,最终完成一个轴系结构的设计与搭接。 8.课后根据实验修改设计画出正确装配图。完成实验报告。 (注:装配图采用1:1比例,符合制图标准,标注主要零件的配合尺寸。) 五、思考题 为什么轴通常要做成中间大两头小的阶梯形状?如何区分轴的轴颈,轴头和轴身各轴段,对轴各段的过渡部分和轴肩结构有何要求? 2.你设计的轴系中轴承采用什么类型?它们的布置和安装方式有何特点?实际当中选择的根据是什么? 3.该轴系固定方式是用“两端固定”还是“一端固定,一端游动”?如何考虑轴的受热伸长问题?

轴系结构的分析与测绘

轴系结构的分析与测绘 一、实验目的 1.通过拼装和测绘,熟悉并掌握轴的结构设计以及轴承组合设计 的基本要求和方法。 2.了解并掌握轴系结构的基本形式,熟悉轴、轴承和轴上零件的结构、功能和工艺要求。掌握轴系零、部件的定位和固定、装配与调整、润滑与密封等方面的原理和方法。 二、实验内容 1. 根据选定的轴系结构设计实验方案,按照预先画出的装配草图进行轴系结构拼装。检查原设计是否合理,并对不合理的结构进行修改。 2.测量一种轴系各零、部件的结构尺寸,并绘出轴系结构的装配图,

标注必要的尺寸及配合,并列出标题栏及明细表。 三、实验设备和用具 1.模块化轴段(可组装成不同结构形状的阶梯轴)。 2. 轴上零件:齿轮、蜗杆、带轮、联轴器、轴承、轴承座、端盖、套杯、套筒、圆螺母、轴端挡板、止动垫圈、轴用弹性挡圈、孔用弹性挡圈、螺钉、螺母等。 3. 工具:活搬手、胀钳、内、外卡钳、钢板尺、游标卡尺等。 四、实验步骤 1. 利用模块化轴段组装阶梯轴,该轴应与装配草图中轴的结构尺寸一致或尽可能相近。 2. 根据轴系结构设计装配草图,选择相应的零件实物,按装配工艺要求顺序装到轴上,完成轴系结构设计。 3. 检查轴系结构设计是否合理,并对不合理的结构进行修改。合理的

轴系结构应满足下述要求: 1)轴上零件装拆方便,轴的加工工艺性良好。 2)轴上零件固定(轴向周向)可靠。 4.轴系测绘 1)测绘各轴段的直径、长度及轴上零件的相关尺寸。 2)查手册确定滚动轴承、螺纹联接件、键、密封件等有关标准件的尺寸。 5. 绘制轴系结构装配图 1) 测量出的各主要零件的尺寸,对照轴系实物绘出轴系结构装配图。 2)图幅和比例要求适当(一般按1:1),要求结构清楚合理,装配关系正确,符合机械制图的规定。 3)在图上标注必要的尺寸,主要有:两支承间的跨距,主要零件的配合尺寸等。 4)对各零件进行编号。并填写标题栏及明细表(标题栏及明细表可参阅配套教材《机械设计课程设计》)。

哈夫曼树的实验报告1

一、需求分析 1、本演示程序实现Haffman编/译码器的作用,目的是为信息收发站提供一个编/译系统, 从而使信息收发站利用Haffman编码进行通讯,力求达到提高信道利用率,缩短时间,降低成本等目标。系统要实现的两个基本功能就是:①对需要传送的数据预先编码; ②对从接收端接收的数据进行译码; 2、本演示程序需要在终端上读入n个字符(字符型)及其权值(整形),用于建立Huffman 树,存储在文件hfmanTree.txt中;如果用户觉得不够清晰还可以打印以凹入表形式显示的Huffman树; 3、本演示程序根据建好的Huffman树,对文件的文本进行编码,结果存入文件CodeFile 中;然后利用建好的Huffman树将文件CodeFile中的代码进行译码,结果存入文件TextFile中;最后在屏幕上显示代码(每行50个),同时显示对CodeFile中代码翻译后的结果; 4、本演示程序将综合使用C++和C语言; 5、测试数据: (1)教材例6-2中数据:8个字符,概率分别是0.05,0.29,0.07,0.08,0.14,0.23,0.03, 0.11,可将其的权值看为5,29,7,8,14,23,3,11 (2)用下表给出的字符集和频度的实际统计数据建立Haffman树,并实现以下报文的编码和 一、概要设计 1、设定哈夫曼树的抽象数据类型定义 ADT Huffmantree{ 数据对象:D={a i| a i∈Charset,i=1,2,3,……n,n≥0} 数据关系:R1={< a i-1, a i >| a i-1, a i∈D, i=2,3,……n} 基本操作: Initialization(&HT,&HC,w,n,ch) 操作结果:根据n个字符及其它们的权值w[i],建立Huffman树HT,用字符数组ch[i]作为中间存储变量,最后字符编码存到HC中; Encodeing(n) 操作结果:根据建好的Huffman树,对文件进行编码,编码结果存入到文件CodeFile 中 Decodeing(HT,n) 操作结果:根据已经编译好的包含n个字符的Huffman树HT,将文件的代码进行翻译,结果存入文件TextFile中 } ADT Huffmantree

数据结构-队列实验报告

《数据结构》课程实验报告 一、实验目的和要求 (1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。 (2)掌握队列的顺序表示和实现。 二、实验环境 Windows7 ,VC 三、实验内容及实施 实验三:队列 【实验要求】 构建一个循环队列, 实现下列操作 1、初始化队列(清空); 2、入队; 3、出队; 4、求队列长度; 5、判断队列是否为空; 【源程序】 #include #define MAXSIZE 100 #define OK 1; #define ERROR 0; typedef struct { int *base; int front; int rear; }SqQueue;//队列的存储结构 int InitQueue(SqQueue &Q) {

Q.base=new int[MAXSIZE]; Q.front=Q.rear=0; return OK; }//队列的初始化 int EnQueue(SqQueue &Q,int e) { if((Q.rear+1)%MAXSIZE==Q.front) return ERROR; Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXSIZE; return OK; }//队列的入队 int DeQueue(SqQueue &Q,int &e) { if(Q.front==Q.rear) return ERROR; e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXSIZE; return OK; }//队列的出队 int QueueLength(SqQueue &Q) { int i; i=(Q.rear-Q.front+MAXSIZE)%MAXSIZE; return i; }//求队列长度 void JuQueue(SqQueue &Q) { if(Q.rear==Q.front) printf("队列为空"); else printf("队列不为空"); }//判断队列是否为空 void QueueTraverse(SqQueue &Q)

数据结构实验报告及心得体会

2011~2012第一学期数据结构实验报告 班级:信管一班 学号:201051018 姓名:史孟晨

实验报告题目及要求 一、实验题目 设某班级有M(6)名学生,本学期共开设N(3)门课程,要求实现并修改如下程序(算法)。 1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统), 输出实验结果。(15分) 2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学 生的学号、姓名和成绩。 3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。 二、实验要求 1.修改算法。将奇偶排序算法升序改为降序。(15分) 2.用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分)) 3.编译、链接以上算法,按要求写出实验报告(25)。 4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。 5.用A4纸打印输出实验报告。 三、实验报告说明 实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:《N门课程学生成绩名次排序算法实现》; (2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-sp3,Visual c++); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。

三、实验源程序(算法) Score.c #include "stdio.h" #include "string.h" #define M 6 #define N 3 struct student { char name[10]; int number; int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/ }stu[M]; void changesort(struct student a[],int n,int j) {int flag=1,i; struct student temp; while(flag) { flag=0; for(i=1;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1;

轴系结构设计实验报告-new1

轴系结构设计实验报告 实验者:同组者: 班级:日期: 一、实验目的 1、熟悉并掌握轴系结构设计中有关轴的结构设计,滚动轴承组合设计的基本方法; 2、熟悉并掌握轴、轴上零件的结构形状及功用、工艺要求和装配关系; 3、熟悉并掌握轴及轴上零件的定位与固定方法; 4、了解轴承的类型、布置、安装及调整方法以及润滑和密封方式。 二、实验设备 1、组合式轴系结构设计分析试验箱。 试验箱提供能进行减速器援助齿轮轴系,小圆锥齿轮轴系及蜗杆轴系结构设计实验的全套零件。 2、测量及绘图工具 300mm钢板尺、游标卡尺、内外卡钳、铅笔、三角板等。 三、实验步骤 1、明确实验内容,理解设计要求; 已知条件(包括传动零件类型、载荷条件、速度条件): 绘制传动零件支撑原理简图: 2、复习有关轴的结构设计与轴承组合设计的内容与方法(参看教材有关章 节); 3、构思轴系结构方案 (1)根据齿轮类型选择滚动轴承型号; 轴承类别选择依据 (2)确定支承轴向固定方式(两端固定或一端固定、一端游动); 轴承轴向固定方式选择依据 (3)根据齿轮圆周速度(高、中、低)确定轴承润滑方式(脂润滑、油润滑); 润滑方式选择依据 (4)选择端盖形式(凸缘式、嵌入式)并考虑透盖处密封方式(毡圈、皮碗、油沟); 密封方式选择依据 (5)考虑轴上零件的定位与固定,轴承间隙调整等问题; 如何定位 选择依据

(6)绘制轴系结构方案示意图。 4、组装轴系部件 根据轴系结构方案,从实验箱中选取合适零件并组装成轴系部件、检查 所设计组装的轴系结构是否正确。 6、将所有零件放入试验箱内的规定位置,交还所借工具。 7、根据结构草图及测量数据,在图纸上绘制轴系结构装配图,要求装配关 系表达正确,注明必要尺寸(如支承跨距、齿轮直径与宽度、主要配合 尺寸),填写标题栏和明细表。 8、写出实验报告。 四、实验结果分析 1、轴上各键槽是否在同一条母线上。 2、轴上各零件(如齿轮、轴承)能否装到指定位置。 3、轴上零件的轴向、周向固定是否可靠。 4、轴承能否拆下。

哈夫曼树实验报告

哈夫曼树实验报告 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

计算机科学与技术学院数据结构实验报告 班级 2014级计算机1班学号姓名张建华成绩 实验项目简单哈夫曼编/译码的设计与实现实验日期一、实验目的 本实验的目的是进一步理解哈夫曼树的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力。 二、实验问题描述 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码,此实验即设计这样的一个简单编/码系统。系统应该具有如下的几个功能: 1、接收原始数据。 从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件中。 2、编码。 利用已建好的哈夫曼树(如不在内存,则从文件中读入),对文件中的正文进行编码,然后将结果存入文件中。 3、译码。 利用已建好的哈夫曼树将文件中的代码进行译码,结果存入文件中。 4、打印编码规则。 即字符与编码的一一对应关系。 5、打印哈夫曼树, 将已在内存中的哈夫曼树以直观的方式显示在终端上。 三、实验步骤 1、实验问题分析 1、构造哈夫曼树时使用静态链表作为哈夫曼树的存储。 在构造哈夫曼树时,设计一个结构体数组HuffNode保存哈夫曼树中各结点的信息,根据二叉树的性质可知,具有n个叶子结点的哈夫曼树共有2n-1个结点,所以数组HuffNode的大小设置为2n-1,描述结点的数据类型为: Typedef strcut { Int weight;/*结点权值*/ Int parent; Int lchild; Int rchild; }HNodeType; 2、求哈夫曼编码时使用一维结构数组HuffCode作为哈夫曼编码信息的存储。 求哈夫曼编码,实质上就是在已建立的哈夫曼树中,从叶子结点开始,沿结点的双亲链域回退到根结点,没回退一步,就走过了哈夫曼树的一个分支,从而得到一位哈夫曼码值,由于一个字符的哈夫曼编码是从根结点到相应叶子结点所经过的路

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include >验目的 掌握顺序栈的基本操作:初始化栈、判栈空否、入栈、出栈、取栈顶数据元素等运算以及程序实现方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)分析问题的要求,编写和调试完成程序。 (3)保存和打印出程序的运行结果,并分析程序的运行结果。 3.实验内容 利用栈的基本操作实现一个判断算术表达式中包含圆括号、方括号是否正确配对的程序。具体完成如下:

(1)定义栈的顺序存取结构。 (2)分别定义顺序栈的基本操作(初始化栈、判栈空否、入栈、出栈等)。 (3)定义一个函数用来判断算术表达式中包含圆括号、方括号是否正确配对。其中,括号配对共有四种情况:左右括号配对次序不正确;右括号多于左括号;左括号多于右括号;左右括号匹配正确。 (4)设计一个测试主函数进行测试。 (5)对程序的运行结果进行分析。 实验代码: #include < > #define MaxSize 100 typedef struct { int data[MaxSize]; int top; }SqStack;

组合式轴系结构设计与分析实验

组合式轴系结构设计与分析实验 一、实验目的 1.通过轴系结构的观察分析,理解轴、轴承、轴上零件的结构特点,建立对轴系结构的感性认识; 2.熟悉和掌握轴的结构设计和轴承组合设计的基本要求和设计方法; 3.了解并掌握轴、轴承和轴上零件的结构与功用、工艺要求、装配关系、轴与轴上零件的定位、固定及调整方法等,巩固轴系结构设计理论知识; 4.分析并了解润滑及密封装置的类型和机构特点; 5.了解并掌握轴承类型、布置和轴承相对机座的固定方式。 二、实验设备 1. 组合式轴系结构设计分析实验箱 实验箱提供能进行减速器组装的圆柱齿轮轴系,小圆锥齿轮轴系及蜗杆轴系结构设计实验的全套零件。该实验箱能够方便的组合二十种以上的轴系结构方案,具有内容系统方案多样的特点,学生可以在实验老师的指导下,按图选取零件和标准件进行组装分析,也可以另行设计新的方案组装。 该设备主要零件包括底板、轴承、垫圈、孔用弹性挡圈、轴用弹性挡圈、端盖、轴承座、齿轮、蜗杆、圆螺母、轴端挡圈、轴套、键、套杯、螺栓、螺钉、螺母等。2. 测量及绘图工具 300mm钢板尺、游标卡尺、内外卡钳、铅笔及三角板(学生自备)等。 三、实验内容与要求 1.指导教师根据下表选择性安排每组的实验内容(实验题号)

2. 进行轴的结构设计与滚动轴承组合设计 每组学生根据实验题号的要求,进行轴系结构设计,解决轴承类型选择,轴上零件定位固定、轴承安装与调节、润滑及密封等问题。 3. 绘制轴系结构装配图。 4. 每人编写实验报告一份。 四、实验步骤 1.明确实验内容,理解设计要求; 2.复习有关轴的结构设计与轴承组合设计的内容与方法(参看教材有关章节); 3.构思轴系结构方案 (1)根据齿轮类型选择滚动轴承型号; (2)确定支承轴向固定方式(两端固定或一端固定、一端游动); (3)根据齿轮圆周速度(高、中、低)确定轴承润滑方式(脂润滑或油润滑); (4)选择端盖形式(凸缘式、嵌入式)并考虑透盖处密封方式(毡圈、皮碗、油沟); (5)考虑轴上零件的定位与固定,轴承间隙调整等问题; (6)绘制轴系结构方案示意图。 4. 组装轴系部件 根据轴系结构方案,从实验箱中选取合适零件并组装成轴系部件、检查所设计组装的轴系结构是否正确。 5. 绘制轴系结构草图。 6. 测量零件结构尺寸(支座不用测量),并作好记录。 7. 将所有零件放入实验箱内的规定位置,交还所借工具。 8.根据结构草图及测量数据,在3号图纸上用1:l比例绘制轴系结构装配图,要求装配关系表示正确,注明必要尺寸(如支承跨距、齿轮直径与宽度、主要配合尺寸),填写标题栏和明细表。 9.写出实验报告。 组合式轴系结构设计实验报告(样式) 专业__________班级__________姓名___________座号__________成绩________ 一、实验目的 二、实验内容 实验题号 已知条件 三、实验结果 1、轴系结构装配图(附3号图) 2、轴系结构设计说明(说明轴上零件的定位固定,滚动轴承的安装、调整、润滑与密封方法)

哈夫曼树及其操作-数据结构实验报告(2)

电子科技大学 实验报告 课程名称:数据结构与算法 学生姓名:陈*浩 学号:************* 点名序号: *** 指导教师:钱** 实验地点:基础实验大楼 实验时间: 2014-2015-2学期 信息与软件工程学院

实验报告(二) 学生姓名:陈**浩学号:*************指导教师:钱** 实验地点:科研教学楼A508实验时间:一、实验室名称:软件实验室 二、实验项目名称:数据结构与算法—树 三、实验学时:4 四、实验原理: 霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)算法。1952年,David A. Huffman在麻省理工攻读博士时所发明的。 在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。 例如,在英文中,e的出现机率最高,而z的出现概率则最低。当利用霍夫曼编码对一篇英文进行压缩时,e极有可能用一个比特来表示,而z则可能花去25个比特(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个比特。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。 霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1*L1+W2*L2+W3*L3+...+Wn*Ln),N个权值Wi(i=1,2,...n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,...n)。 可以证明霍夫曼树的WPL是最小的。

数据结构栈和队列实验报告.doc

南京信息工程大学实验(实习)报告 实验(实习)名称栈和队列日期2017.11.8 得分指导老师崔萌萌 系计算机系专业软件工程年级2016 班次(1) 姓名学号 一、实验目的 1、学习栈的顺序存储和实现,会进行栈的基本操作 2、掌握递归 3、学习队列的顺序存储、链式存储,会进行队列的基本操作 4、掌握循环队列的表示和基本操作 二、实验内容 1、用栈解决以下问题: (1)对于输入的任意一个非负十进制数,显示输出与其等值的八进制数,写出程序。(2)表达式求值,写出程序。 2、用递归写出以下程序: (1)求n!。 (2)汉诺塔程序,并截图显示3、4、5个盘子的移动步骤,写出移动6个盘子的移动次数。

3、编程实现:(1)创建队列,将asdfghjkl依次入队。(2)将队列asdfghjkl依次出队。 4、编程实现创建一个最多6个元素的循环队列、将ABCDEF依次入队,判断循环队列是否队满。 三、实验步骤 1.栈的使用 1.1 用栈实现进制的转换: 代码如下: #include #include using namespace std; int main() { stack s; //栈s; int n,radix; printf("请输入要转换的十进制非负整数: "); scanf("%d",&n); printf("请输入目标进制: "); scanf("%d",&radix);

printf("转换为%d进制: ",radix); while(n) { s.push(n%radix); n /= radix; } while(!s.empty()) { //非空 printf("%d",s.top()); s.pop(); } printf("\n"); return 0; } 运行结果如下: 2.2 求表达式的值 代码如下: #include #include #include #include #define true 1 #define false 0 #define OPSETSIZE 8 typedef int Status;

哈夫曼树实验报告(付原C语言程序)

哈夫曼树实验报告 需求分析: 从终端读入一串字符,利用建立好的哈夫曼树对其进行编码,储存到文件当中去,然后从文件读入哈夫曼编码,针对每个字母对其进行译码,翻译为原来的信息。 二、概要设计 程序分为以下几个模块: 1、从终端读入字符集大小,n个字符和n个权值,建立哈夫曼树,写入文件hfmTree中去。 2、对hfmTree进行编码,建立hfm编码表。 3、从文件ToTran读入信息,根据hfm编码表对其进行hfm编码,将编码后的信息写入文件Codefile 中去 4、对Codefile文件反向译码,结果储存在Textfile中去。 5、将建立的hfmTree打印在终端上,并储存于相应的Treeprint文件中去。 抽象的数据定义如下: 哈夫曼树结构 typedef struct //定义哈夫曼树的结构 { int weight; //权值 int parent; //双亲 int lchild; //左孩子 int rchild; //右孩子 }htnode,huffmantree[M+1]; 建立哈夫曼树 void crthuffmantree(huffmantree ht,int w[],int n) //初始化哈夫曼树 { int i,s1,s2,m; for(i=1;i<=n;i++) { ht[i].weight=w[i]; ht[i].parent=0; ht[i].lchild=0; ht[i].rchild=0; } m=2*n-1; for(i=n+1;i<=m;i++) { ht[i].weight=0; ht[i].parent=0; ht[i].lchild=0; ht[i].rchild=0; } for(i=n+1;i<=m;i++) { select(ht,i-1,&s1,&s2); ht[i].weight=ht[s1].weight+ht[s2].weight; ht[s1].parent=i;

哈夫曼树实验报告

数据结构实验报告 实验名称:实验三哈夫曼树 学生姓名: 班级: 班内序号: 学号: 日期: 程序分析: 存储结构:二叉树 程序流程: template class BiTree { public: ) 1.初始化链表的头结点

2.获得输入字符串的第一个字符,并将其插入到链表尾部,n=1(n记录的是链 表中字符的个数) 3.从字符串第2个字符开始,逐个取出字符串中的字符 将当前取出的字符与链表中已经存在的字符逐个比较,如果当前取出的 字符与链表中已经存在的某个字符相同,则链表中该字符的权值加1。 如果当前取出的字符与链表中已经存在的字符都不相同,则将其加入到 链表尾部,同时n++ =n(tSize记录链表中字符总数,即哈夫曼树中叶子节点总数) 5.创建哈夫曼树 6.销毁链表 源代码: void HuffmanTree::Init(string Input) { Node *front=new Node; 建哈夫曼树(void HuffmanTree::CreateCodeTable(Node *p)) 算法伪代码: 1.创建一个长度为2*tSize-1的三叉链表 2.将存储字符及其权值的链表中的字符逐个写入三叉链表的前tSize个结点 的data域,并将对应结点的孩子域和双亲域赋为空 3.从三叉链表的第tSize个结点开始,i=tSize 3.1从存储字符及其权值的链表中取出两个权值最小的结点x,y,记录其 下标x,y。 3.2将下标为x和y的哈夫曼树的结点的双亲设置为第i个结点 3.3将下标为x的结点设置为i结点的左孩子,将下标为y的结点设置为 i结点的右孩子,i结点的权值为x结点的权值加上y结点的权值,i 结点的双亲设置为空 4. 根据哈夫曼树创建编码表

数据结构实验报告

数据结构实验报告 想必学计算机专业的同学都知道数据结构是一门比较重要 的课程,那么,下面是小编给大家整理收集的数据结构实验报告,供大家阅读参考。 数据结构实验报告1 一、实验目的及要求 1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。 本实验训练的要点是“栈”和“队列”的观点; 二、实验内容 1) 利用栈,实现数制转换。 2) 利用栈,实现任一个表达式中的语法检查(选做)。 3) 编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列); 三、实验流程、操作步骤或核心代码、算法片段

顺序栈: Status InitStack(SqStack S) { S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType)); if(!S.base) return ERROR; S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; } Status DestoryStack(SqStack S) { free(S.base); return OK; } Status ClearStack(SqStack S)

{ S.top=S.base; return OK; } Status StackEmpty(SqStack S) { if(S.base==S.top) return OK; return ERROR; } int StackLength(SqStack S) { return S.top-S.base; } Status GetTop(SqStack S,ElemType e) {

相关文档