实验1实验报告
实验报告1

实验1:学生自身知识系统结构设计实验基本要求实验(实训)学时(学分):3学时实验(实训)目的与要求:训练学生结合自身实际和系统分析原理设计自身知识结构实验(实训)主要仪器、设备:微机实验教室,网络及相关软件实验(实训)主要内容:能够结合自身实际和外部环境对人才的要求(即自身SWOT分析),确立适当的人生梦想与目标,根据人生目标确立自己的可实现的职业规划和行动计划,进而建立层次清晰、相互关联、逻辑严密、操作性强知识结构系统。
实验内容所涉及本课程或相关课程的知识点:涉及管理学计划、组织等概念,涉及管理信息系统信息论、系统论和控制论等概念。
特别是要把握——目标明确是评价系统性能的第一指标;设置目标是系统计划的第一步;而职业规划即系统计划有不同的层次。
同时要深刻理解——系统是一些部件为了某种目的而有机地结合的一个整体,就其本质而言是一定环境中一类为达到某种目的而相互联系、相互作用的事物有机集合体;系统的特点包括整体性、目的性、关联性、层次性等;系统性能的评价指标包括目标明确、结构合理、接口清楚、能观能控等。
实验(实训)步骤:1、上网查询“SWOT分析“的含义;2、根据自身的SWOT,进行分析;3、根据自身实际情况,制定近两年计划;4、根据实习情况,寻找工作。
实验(实训)结果:1、了解到“SWOT分析”含义如下:s代表strength(优势),w代表weakness(弱势),o代表opportunity(机会),t代表threat(威胁),其中,s、w是内部因素,o、t是外部因素。
2、(一)内部因素:优势:性格上:做事认真,待人真诚,赋有责任感,热衷于自己的专业,喜欢思考问题。
能力上:有一定的分析能力,并有寻根问底的兴趣,一定要把问题弄清楚的决心。
生活上:态度乐观向上,自控能力强学习上:努力勤奋,上课专心。
弱势:做事不够果断,在大众面前显得不够热情大方。
有时不够积极参加学校的各项活动。
创新能力有待提高,英文表达与听说能力差。
【最新文档】实验一实验报告-优秀word范文 (6页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==实验一实验报告网络程序设计实验报告实验名称:_ Winsock编程接口实验 _实验类型:_______ 验证型实验 ________指导教师:专业班级:_________XXXXXXXXX__________姓名:________ XXXXXXXXX_____ ________ 学号:_________XXXXXXXXX____________电子邮件:_______XXXXXXXXXXXX________实验地点:_______XXXXXXXXX______________实验日期: XXXXXXXXX实验成绩:__________________________一、实验目的1.掌握Winsock的启动和初始化;2.掌握gethostname(),gethostbyname(),GetAdaptersInfo()等信息查询函数的使用。
二、实验设计实验流程图三、实验过程1.在实验过程中调用GetAdaptersInfo()时,出现了undeclared identifier 的报错,原因是没有包含其头文件,但在加了头文件iphlpapi.h后,依然出现如下错误:fatal error C1083: Cannot open include file: 'iphlpapi.h': No such file or directoryError executing cl.exe.查阅资料得知,该错误的出现是因为没有安装SDK,将SDK安装并添加到VC中后,程序错误得到解决。
2.实验结果1.程序主界面2.选择解析指定域名3.选择查看本机信息四、讨论与分析1)Winsock初始化的作用是什么?答:使用winsock初始化可加载winsock编程的动态链接库。
操作系统安全实验1实验报告

操作系统安全实验1实验报告一、实验目的本次操作系统安全实验的主要目的是让我们深入了解操作系统的安全机制,通过实际操作和观察,掌握一些常见的操作系统安全配置和防护方法,提高对操作系统安全的认识和应对能力。
二、实验环境本次实验使用的操作系统为Windows 10 和Linux(Ubuntu 2004),实验设备为个人计算机。
三、实验内容与步骤(一)Windows 10 操作系统安全配置1、账户管理创建新用户账户,并设置不同的权限级别,如管理员、标准用户等。
更改账户密码策略,包括密码长度、复杂性要求、密码有效期等。
启用账户锁定策略,设置锁定阈值和锁定时间,以防止暴力破解密码。
2、防火墙配置打开 Windows 防火墙,并设置入站和出站规则。
允许或阻止特定的应用程序通过防火墙进行网络通信。
3、系统更新与补丁管理检查系统更新,安装最新的 Windows 安全补丁和功能更新。
配置自动更新选项,确保系统能够及时获取并安装更新。
4、恶意软件防护安装并启用 Windows Defender 防病毒软件。
进行全盘扫描,检测和清除可能存在的恶意软件。
(二)Linux(Ubuntu 2004)操作系统安全配置1、用户和组管理创建新用户和组,并设置相应的权限和归属。
修改用户密码策略,如密码强度要求等。
2、文件系统权限管理了解文件和目录的权限设置,如读、写、执行权限。
设置特定文件和目录的权限,限制普通用户的访问。
3、 SSH 服务安全配置安装和配置 SSH 服务。
更改 SSH 服务的默认端口号,增强安全性。
禁止 root 用户通过 SSH 登录。
4、防火墙配置(UFW)启用 UFW 防火墙。
添加允许或拒绝的规则,控制网络访问。
四、实验结果与分析(一)Windows 10 操作系统1、账户管理成功创建了具有不同权限的用户账户,并能够根据需求灵活调整权限设置。
严格的密码策略有效地增加了密码的安全性,减少了被破解的风险。
账户锁定策略在一定程度上能够阻止暴力破解攻击。
实验报告1

实验一创建链表和链表操作一、实验目的掌握线性表的基本操作:插入、删除、查找、以及线性表合并等操作在顺序存储结构和链式存储结构上的实现。
二、实验内容:1. 创建单链表2.在链表上进行插入、删除操作;3.设计一个程序,用两个单链表分别表示两个集合,并求出这两个集合的并集。
四、测试数据:∙(3,9,5,6,11,8);在5之前插入4,7,并删除11∙求集合{1,12,8,6,4,9}和{2,5,12,7,4}的并集五、概要设计:本操作应完成如下功能:(1)创建链表说明:分配一定的空间,根据给定的链表长度输入值,创建链表。
(2)合并链表说明:将两个链表合并为一个链表只需修改链表头、尾指针即可实现。
(3)在链表中插入值说明:将给定的值插入到指定位置上,只需修改插入位置的前后结点的指针即可。
(4)在链表中删除值说明:将指定位置的值删除,只需修改删除位置的前后结点的指针即可。
六、详细设计:源代码:#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<iostream.h>#define OK 1#define ERROR 0#define OVERFLOW 0//线性链表的存储结构,一个结点typedef struct LNode{int data; // 数据域struct LNode *next; // 指针域}LNode,*LinkList; //结点结构类型和指向结点的指针类型int TraverseList_L(LinkList L) //遍历单链表{LinkList p;p=L->next;while(p){printf("-->%d",p->data);p=p->next;}return OK;}//尾插法创建的带头结点的单链表。
void CreateList_L(LinkList &L,int &n){L=(LinkList)malloc(sizeof (LNode));//建立一个空链表L。
检测实验一实验报告

实验一传感器实验班号:机械91班学号:姓名:戴振亚同组同学:裴文斐、林奕峰、冯荣宇1、电阻应变片传感器一、实验目的(1) 了解金属箔式应变片的应变效应,单臂电桥工作原理和性能。
(2) 了解半桥的工作原理,比较半桥与单臂电桥的不同性能、了解其特点(3) 了解全桥测量电路的原理及优点。
(4) 了解应变直流全桥的应用及电路的标定二、实验数据三、实验结果与分析1、性能曲线A、单臂电桥性能实验由实验数据记录可以计算出的系统的灵敏度S=ΔU/ΔW=0.21(mV/g),所以运用直线拟合可以得到特性曲线如下图所示。
B、半桥性能实验由实验记录的数据我们可以得到半桥系统的灵敏度为S=ΔU/ΔW=0.41(mV/g),所以我们可以运用直线拟合实验数据得到性能曲线如下图所示。
C、全桥性能实验由实验记录的数据我们可以得到全桥系统的灵敏度为S=ΔU/ΔW=0.78(mV/g),所以我们可以运用直线拟合实验数据得到性能曲线如下图所示。
检测实验报告戴振亚D、电子称实验由实验记录的数据我们可以得到全桥系统的灵敏度为S=ΔU/ΔW=-1(mV/g),所以我们可以运用直线拟合实验数据得到性能曲线如下图所示。
2、分析a、从理论上分析产生非线性误差的原因由实验原理我们可以知道,运用应变片来测量,主要是通过外界条件的变化来引起应变片上的应变,从而可以引起电阻的变化,而电阻的变化则可以通过电压来测得。
而实际中,电阻的变化与应变片的应变的变化不是成正比的,而是存在着“压阻效应”,从而在实验的测量中必然会引起非线性误差。
b、分析为什么半桥的输出灵敏度比单臂时高了一倍,而且非线性误差也得到改善。
首先我们由原理分析可以知道,单臂电桥的灵敏度为e0=(ΔR/4R0)*e x,而半桥的灵敏度为e0=(ΔR/2R0)*e x,所以可以知道半桥的灵敏度是单臂时的两倍,而由实验数据中我们也可以看出,而由于半桥选用的是同侧的电阻,为相邻两桥臂,所以可以知道e0=(ΔR1/R0-ΔR2/R0)*e x/4,而ΔR1、ΔR2的符号是相反的,同时由于是同时作用,减号也可以将温度等其他因素引起的电阻变化的误差减去而使得非线性误差得到改善。
实验1显微镜的使用实验报告

实验报告实验1 显微镜的使用方法一、实验名称:显微镜的使用方法二、实验目的:1、掌握显微镜的构造,熟练使用显微镜进行试验观察。
2、能够分析显微镜常见故障的原因,并作适当处理。
三、实验内容:1、利用高、低倍显微镜观察一些永久装片。
2、将所观察到的镜像绘制成图片。
三、实验器材:显微镜、装片或切片等。
四、实验原理:1、显微镜的用途显微镜是一种精密的放大仪器,是研究生物学不可缺少的工具。
在学习生物学的过程中,要研究许多细微的结构,必须借助显微镜进行观察。
2、显微镜的构造光学显微镜由机械装置和光学系统两大部分组成,其中光学系统主要包括物镜、目镜、遮光器和光源等。
3、显微镜的成像原理光学显微镜的光学系统两由大部分组成。
由目镜和物镜组成成像系统,由反光镜和旋转光样构成照明系统。
五、实验步骤:1、低倍镜的使用(1)取镜和放置:右手握住镜臂,左手托住镜座。
把显微镜轻轻地放在实验桌上略偏左、离实验桌边缘5cm为宜。
(2)对光:转动转换器,使低倍物镜正对通光孔(镜端与孔保持2厘米距离)。
转动遮光器,使大的光圈对准通光孔。
左眼注视目镜内,右眼睁开同时用手转动反光镜对向光源。
直到目镜里看到白亮的视野。
(3)放置玻片标本:把要观察的装片放在载物台上,有标本的一面向上使标本正对通光孔的中心,然后用压片夹压住。
(4)调节焦距:下降镜筒,侧目注视物镜头,用手旋转粗准焦螺旋直到物镜头接近装片为止。
上升镜筒,左眼注视目镜内,用手旋转粗准焦螺旋使镜筒缓缓上升,直到从目镜内看清物像为止。
再轻微来回转动细焦螺旋,使物像更清晰。
2、高倍镜的使用(1)选好目标:一定要先在低倍镜下把需进一步观察的部位调到中心,同时把物像调节最清晰的程度,才能进行高倍镜的观察。
(2)转动转换器:调换上高倍镜头,转换高倍镜时转动速度要慢,并从侧面进行观察(防止高倍镜头碰撞玻片),如高倍镜头碰到玻片,说明低倍镜的焦距没有调好,应重新操作。
(3)调节焦距:转换好高倍镜后,用左眼在目镜上观察。
实验1 粗盐提纯实验报告
实验1 粗盐提纯实验报告一、实验目的本实验旨在练习粗盐提纯实验技术,掌握粗盐提纯的技术原理和操作方法,并分析与研究其中物理、化学过程。
二、实验原理粗盐的提纯实验是一个物理及其相关的化学反应的复杂实验过程,其中涉及到定石膏去除碱性杂质,盐酸洗涤和沉淀技术提纯,碳酸钠-苯酚-甲醇洗涤技术,活性炭吸附技术,离子交换层析技术以及比重沉淀技术等技术方法。
(1)定石膏去除碱性杂质:定石膏的层状分子结构具有良好的表面积,可以有效地吸附碱性杂质,把碱性杂质定沉到溶液底部,使溶液中的有效离子浓度变大,从而达到纯化的效果。
(2)盐酸洗涤和沉淀技术:盐酸洗涤是指将低浓度的盐酸加入溶液中,当盐酸加入到溶液中,一部分cli.会与被提取物结合从而被分离,比重上升,落入溶液底部,另一部分在洗涤过程中可以带走其他的有机污染物,减少其溶液中的有机物的含量,增大纯度。
此外,还可以通过滤液加入碳酸钠或氢氧化钠等强碱,使更为杂质沉淀出来,以实现纯化目的。
(3)碳酸钠-苯酚甲醇洗涤技术:在溶液中加入碳酸钠、苯酚和甲醇可以使有机污染物和杂质被排除在外,实现纯化。
(4)活性炭吸附技术:在溶液中加入活性炭,可使非溶性、含有有机物质的多种杂质在活性炭的孔隙中被吸附,从而提纯粗盐的离子。
(5)离子交换层析技术:离子交换层析技术是利用离子交换树脂中的强亲和力,将目标物质从溶液中分离出来,改善细析样品的纯度,使其溶解度更高,以实现完美的纯化。
(6)比重沉淀技术:比重沉淀技术是指当溶液充分调整为密度和温度比重沉淀较大的离子,在恒定浓度下,将溶质溶液中的物质沉淀出来,并筛选出有益离子实现纯度提高的技术。
三、实验步骤1. 将实验室级粗盐加入一定量的纯水中,搅拌后形成溶液;2. 将溶液添加定石膏,进行搅拌,搅拌3-5分钟,放置5-10分钟,达到去除碱性杂质的目的;3. 将经过定石膏处理的溶液添加低浓度盐酸,使杂质沉降,进行搅拌后放置2-3分钟,用滤纸包衣处理滤液;4. 在滤液中添加一定量的活性炭,通过反复搅拌使有机污染物和杂质被完全移去;5. 在碱性条件下滤液进行离子交换层析;6. 最后用比重沉淀的方法将溶液中的盐分完全沉淀出来,并筛收并聚合成结晶体,完成提纯实验。
实验报告一
实验一 NaI(Tl)单晶γ闪烁谱仪和γ能谱的测量引言γ射线是原子核衰变或裂变时放出的辐射,本质上它是一种能量比可见光X 射线高得多的电磁辐射。
利用γ射线和物质相互作用的规律,人们设计和制造了多种类型的探测器。
闪射探测器就是其中之一。
它是利用某些物质在射线作用下发光的特性来探测射线的仪器,既能测量射线的强度,也能测量射线的能量,在核物理研究和放射性同位素测量中得到广泛的应用,“嫦娥一号”卫星有多项探测功能,其中 γ射线谱仪通过采集月球表面发射出的γ射线光子,得用反符合技术抑制本底,根据能谱中的特征峰线来辨别月球表面元素的种类和丰度。
本实验介绍一种常用的γ射线测量仪器:NaI(Tl)单晶γ闪烁谱仪。
实验目的(1)了解γ闪烁谱仪的原理和结构,掌握用谱仪测γ能谱的方法;(2)鉴定谱仪的基本性能,如能量分辨率、线性等。
(3)解核电子学仪器的数据采集、记录方法和数据处理原理。
注意事项1、实验使用到放射源,需认真做好防护工作;2、放射源和探头由起屏蔽射线作用的铅玻璃罩住,实验室不能拿开铅玻璃;3、放射源置于起屏蔽射线的铅罐中,使用时,先把铅玻璃右边的盖子打开,然后再打开放射源的盖子,使用结束后必须盖上放射源的盖子。
绝对不能把放射源拿出铅玻璃罩外,更不能把放射源拿出来打开盖对着人。
4、进入该实验室后必须先打开γ个人剂量仪,用以测量实验过程中的累积剂量,选择剂量仪中以sv μ为单位的模式,剂量仪检测到剂量每增加0.1sv μ就会响一短声报警,一般整个实验过程测到的剂量约为1sv μ,是符合安 全标准的(安全限值为msv 5≤)。
5、连接好实验仪器,把高压调节开关逆时针调到零后接通电源,开机预热30分钟左右;实验原理一、γ射线与物质相互作用的一般特性γ射线与物质的作用过程可以看作γ光子与物质中原子或分子碰撞而损失能量的过程。
γ光子是不带电的中性粒子,因此它与物质的相互作用与带电粒子有显著的差别。
带电粒子与物质相互作用时,与物质原子的核外电子的非弹性碰撞是主要的能量交换过程,每一次碰撞所转移的能量是很小的,经过许多次碰撞后逐渐损失能量。
实验一 流体力学综合实验实验报告
实验一 流体力学综合实验预习实验:一、实验目的1.熟悉流体在管路中流动阻力的测定方法及实验数据的归纳 2.测定直管摩擦系数λ和e R 关系曲线及局部阻力系数ζ 3. 了解离心泵的构造,熟悉其操作和调节方法 4. 测出单级离心泵在固定转速下的特定曲线 二、实验原理流体在管路中的流动阻力分为直管阻力和局部阻力两种。
直管阻力是流体流经一定管径的直管时,由于流体内摩擦而产生的阻力,可由下式计算:gu d l g p H f 22⋅⋅=∆-=λρ (3-1) 局部阻力主要是由于流体流经管路中的管件、阀门及管截面的突然扩大或缩小等局部地方所引起的阻力,计算公式如下:gu g p H f22''⋅=∆-=ζρ (3-2) 管路的能量损失'f f f H H H +=∑ (3-3)式中 f H ——直管阻力,m 水柱;λ——直管摩擦阻力系数;l ——管长,m ; d ——直管内径,m ;u ——管内平均流速,1s m -⋅;g ——重力加速度,9.812s m -⋅p ∆——直管阻力引起的压强降,Pa ;ρ——流体的密度,3m kg -⋅;ζ——局部阻力系数; 由式3-1可得22ludP ρλ⋅∆-=(3-4) 这样,利用实验方法测取不同流量下长度为l 直管两端的压差P ∆即可计算出λ和Re ,然后在双对数坐标纸上标绘出Re λ-的曲线图。
离心泵的性能受到泵的内部结构、叶轮形式、叶轮转速的影响。
实验将测出的H —Q 、N —Q 、η—Q 之间的关系标绘在坐标纸上成为三条曲线,即为离心泵的特性曲线,根据曲线可找出泵的最佳操作范围,作为选泵的依据。
离心泵的扬程可由进、出口间的能量衡算求得:gu u h H H H 221220-++-=入口压力表出口压力表 (3-5) 式中出口压力表H ——离心泵出口压力表读数,m 水柱;入口压力表H ——离心泵入口压力表的读数,m 水柱;0h ——离心泵进、出口管路两测压点间的垂直距离,可忽略不计;1u ——吸入管内流体的流速,1s m -⋅;2u ——压出管内流体的流速,1s m -⋅泵的有效功率,由于泵在运转过程中存在种种能量损失,使泵的实际压头和流量较理论值为低,而输入泵的功率又较理论值为高,所以泵的效率%100⨯=NN eη (3-6) 而泵的有效功率g QH N e e ρ=/(3600×1000) (3-7) 式中:e N ——泵的有效功率,K w ;N ——电机的输入功率,由功率表测出,K w ; Q ——泵的流量,-13h m ⋅;e H ——泵的扬程,m 水柱。
实验1 反应前后物质的质量关系 初中化学实验报告
第五单元质量守恒定律
实验1 反应前后物质的质量关系
实验类型:
探究性实验
实验目的:
1.学习天平的使用;
2.学会记录实验数据,并能进行简单的定量分析。
实验用品:
天平、锥形瓶、带玻璃管的橡皮塞、气球、橡皮塞、酒精灯、火柴;
红磷、细沙、硫酸铜溶液、铁钉。
实验过程:
1.提出问题
反应物的质量总和与生成物的质量总和相比较,存在什么关系?
2.猜想与假设
(1)反应物的质量总和>生成物的质量总和;
(2);
(3)。
3.制定方案(设计实验方案)
(1)设计思路:通过实验测定反应前后物质的总质量,找出质量关系,得出质量守恒定律。
(2)实验流程:测定红磷与空气反应前后的质量→得出反应物的总质量等于生成物的总质量→再铁与硫酸铜溶液反应前后的质量→验证反应物的总质量等于生成物的总质量→归纳得出质量守恒定律。
4.进行实验
)取下橡皮塞,将玻璃管下端放
到酒精灯火焰上灼烧至红热,迅速移
入锥形瓶与红磷接触,并塞紧橡皮
塞。
引燃红磷。
待锥形瓶冷却后,再
次在天平上称量,记录所称的质量
)取下橡皮塞,将铁钉浸到硫酸
5.反思与评价
(1)分析两个方案你能得出什么结论?
(2)用天平称量固体物质有哪几个步骤?。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一词法分析班级:计科12-3 学号:08123282 姓名:樊鑫一.实验目的1、学会针对DFA转换图实现相应的高级语言源程序。
2、深刻领会状态转换图的含义,逐步理解有限自动机。
3、掌握手工生成词法分析器的方法,了解词法分析器的内部工作原理。
二.实验内容TINY计算机语言的编译程序的词法分析部分实现。
从左到右扫描每行该语言源程序的符号,拼成单词,换成统一的内部表示(token)送给语法分析程序。
为了简化程序的编写,有具体的要求如下:(1)数仅仅是整数。
(2)空白符仅仅是空格、回车符、制表符。
(3)代码是自由格式。
(4)注释应放在花括号之内,并且不允许嵌套三.实验要求要求实现编译器的以下功能:(1)按规则拼单词,并转换成二元式形式(2)删除注释行(3)删除空白符 (空格、回车符、制表符)(4)列表打印源程序,按照源程序的行打印,在每行的前面加上行号,并且打印出每行包含的记号的二元形式(5)发现并定位错误,词法分析进行具体的要求:(1)记号的二元式形式中种类采用枚举方法定义;其中保留字和特殊字符是每个都一个种类,标示符自己是一类,数字是一类;单词的属性就是表示的字符串值。
(2)词法分析的具体功能实现是一个函数GetToken(),每次调用都对剩余的字符串分析得到一个单词或记号识别其种类,收集该记号的符号串属性,当识别一个单词完毕,采用返回值的形式返回符号的种类,同时采用程序变量的形式提供当前识别出记号的属性值。
这样配合语法分析程序的分析需要的记号及其属性,生成一个语法树。
(3)标示符和保留字的词法构成相同,为了更好的实现,把语言的保留字建立一个表格存储,这样可以把保留字的识别放在标示符之后,用识别出的标示符对比该表格,如果存在该表格中则是保留字,否则是一般标示符。
四.实验程序#include <iostream>#include <iomanip>#include <ctype.h>#include <fstream>#include <string>using namespace std;enum WordType {WRONG, NUMBER, BIAOSHI, IF, THEN, ELSE, END, REPEAT, UNTIL, //9 READ, WRITE, PLUS, SUBTRACT, MULTIPLY, DIVIDEY, EQUAL, LESSTHAN, COLON,//18ASSIGNMENT, LINE_FEED, SPACE, TAB, BRACKET_L, BRACKET_R}; //24enum CharType {ALPHABET, OTHER};enum WrongType {ZERO, ALP_NUM, NUM_ALP, UNLEAGL_S, NO_MA TCH, UNKNOW}; char *Words [] = {"wrong", "number", "biaoshi", "if", "then", "else", "end", "repeat", "until", //9 "read", "write", "+", "-", "*", "/", "=", "<", ":",//18":=", "\n", " ", " ", "{", "}"}; //24typedef struct{char *str;int wordtype;}Two;char ArrayChar[100], cbuffer;int i=-1, numline = 1, wordtype;string LineChar;Two T;ifstream fp("source.txt",ios::in);int main (){void HandleAlphabet();void HandleNumber ();void HandleOther ();if (!fp)cout<<"文件打开错误!"<<endl;else{cout << setiosflags (ios::left) << setw (6) << "行数" << "(";cout << setiosflags (ios::left) << setw (10)<< "类别编码" << ",";cout << setiosflags (ios::left) << setw (20) << "字符" << ")" << endl;fp.get (cbuffer);while (!fp.eof ()){if(cbuffer == '\n')//忽略换行符{cout << "第" << numline << " 行所有字符:" << LineChar << endl;numline++;LineChar = "";fp.get(cbuffer);}else if (cbuffer == ' ')//忽略空字符{LineChar += " ";fp.get(cbuffer);}else if (cbuffer == ' ')//忽略制表符{LineChar += " ";fp.get(cbuffer);}else if (isalpha(cbuffer))//判断是否是字母{HandleAlphabet ();}else if (isdigit(cbuffer))//判断是否是数字{HandleNumber ();}else //其他字符HandleOther ();i = -1;}}cout << "第" << numline << " 行所有字符:" << LineChar << endl;fp.close ();system ("pause");return 0;}int Match(char str[], int chartype)//查找匹配的字符{int i;switch (chartype){case ALPHABET:for (i = IF; i <= WRITE; i++){if (strcmp(Words[i],str) == 0)return i;}case OTHER:for (i = PLUS; i <= ASSIGNMENT; i++){if (strcmp(Words[i],str) == 0)return i;}}return WRONG;}void TypeWrong (int wrongtype, int line){switch (wrongtype){case ZERO:break;case ALP_NUM:cout << "字母后面不能紧跟数字!";break;case NUM_ALP:cout << "数字后面不能紧跟字母!";case UNLEAGL_S:break;cout << "非法特殊符号!";break;case NO_MA TCH:cout << "没有与第" << line << "行""匹配的""!";break;default:cout << "其它类型错误!";break;}}Two ConvertTwo (char str[], int wordtype, int wrongtype, int numline, int line)//进行二元转换{Two T;T.wordtype = wordtype;T.str = str;cout << setiosflags (ios::left) << setw (6) << numline << "(";cout << setiosflags (ios::left) << setw (10) << T.wordtype << ", ";cout << setiosflags (ios::left) << setw (20) << T.str << ")";if (T.wordtype == WRONG)TypeWrong (wrongtype, line);cout << endl;return T;}void HandleAlphabet ()//首字符为字母时的处理{bool mark = true;while(!fp.eof() && isalpha(cbuffer)){ArrayChar[++i]=cbuffer;fp.get(cbuffer);}if (isdigit (cbuffer)){mark = false;while(!fp.eof() && (isalpha(cbuffer)||isdigit(cbuffer))){ArrayChar[++i]=cbuffer;fp.get(cbuffer);}}ArrayChar[i+1]='\0';LineChar += ArrayChar;if (mark){wordtype = Match(ArrayChar, ALPHABET);T = ConvertTwo(ArrayChar,(BIAOSHI > wordtype ? BIAOSHI : wordtype), ZERO, numline, numline);}elseT = ConvertTwo(ArrayChar,WRONG, ALP_NUM, numline, numline);}void HandleNumber ()//首字符为数字时的处理{bool mark = true;while (!fp.eof() && isdigit(cbuffer)){ArrayChar[++i]=cbuffer;fp.get(cbuffer);}if (isalpha(cbuffer)){mark = false;while(!fp.eof() && (isalpha(cbuffer)||isdigit(cbuffer))){ArrayChar[++i]=cbuffer;fp.get(cbuffer);}}ArrayChar[i+1]='\0';LineChar += ArrayChar;if (mark)T = ConvertTwo(ArrayChar, NUMBER, ZERO, numline, numline);elseT = ConvertTwo(ArrayChar,WRONG, NUM_ALP, numline, numline);}void DeleteNote ()//删除注释{int record = numline;while (!fp.eof() && cbuffer != '}'){fp.get(cbuffer);while (!fp.eof() && cbuffer != '}'){if (cbuffer == '\n'){ArrayChar [i + 1] = '\0';LineChar += ArrayChar;cout << "第" << numline << " 行所有字符:" << LineChar << endl;LineChar = "";numline++;i = -1;fp.get(cbuffer);}ArrayChar[++i]=cbuffer;fp.get(cbuffer);}ArrayChar[i + 1]='\0';if (cbuffer == '}'){ArrayChar [++i] = '}';ArrayChar[i + 1]='\0';T = ConvertTwo("}", BRACKET_R, ZERO, numline, numline);}else{T = ConvertTwo("", WRONG, NO_MA TCH, numline, record);}}LineChar += ArrayChar;fp.get(cbuffer);}void HandleOther ()//字符为特殊字符时的处理{ArrayChar [++i] = cbuffer;if (ArrayChar [i] == '{')//删除注释{ConvertTwo("{", BRACKET_L, ZERO, numline, numline);DeleteNote ();}else//其他字符{fp.get(cbuffer);while (!fp.eof() && cbuffer != '\n' && cbuffer != ' ' && cbuffer != ' '&& !isalpha(cbuffer) && !isdigit(cbuffer)){ArrayChar [++i] = cbuffer;fp.get(cbuffer);}ArrayChar[i + 1]='\0';wordtype = Match(ArrayChar, OTHER);LineChar += ArrayChar;T = ConvertTwo(ArrayChar, wordtype, (wordtype > 0 ? 0: UNLEAGL_S), numline, numline);}}五.实验结果六.实验体会通过本次实验学会了针对DFA转换图实现相应的高级语言源程序,并且深刻领会了状态转换图的含义,逐步理解有限自动机,同时掌握手工生成词法分析器的方法,了解词法分析器的内部工作原理。