实验一

合集下载

试验一氯化钠的提纯

试验一氯化钠的提纯

实验一氯化钠的提纯一、实验目的1.掌握提纯NaCl的原理和方法。

2.学习溶解、沉淀、常压过滤、减压过滤、蒸发浓缩、结晶和烘干等基本操作。

3.了解Ca2+、Mg2+、SO42-等离子的定性鉴定。

二、实验原理化学试剂或医药用的NaCl都是以粗食盐为原料提纯的,粗食盐中含有Ca2+、Mg2+、K+和SO42-等可溶性杂质和泥沙等不溶性杂质。

选择适当的试剂可使Ca2+、Mg2+、SO42-等离子生成难溶盐沉淀而除去,一般先在食盐溶液中加BaCl2溶液,除去SO42-离子:Ba2+ + SO42-= BaSO4↓然后再在溶液中加Na2CO3溶液,除Ca2+、Mg2+和过量的Ba2+:Ca2+ + CO32-= CaCO3↓Ba2+ + CO32-= BaCO3↓2Mg2+ + 2OH- + CO32-= Mg2(OH)2CO3↓过量的Na2CO3溶液用HCl中和,粗食盐中的K+仍留在溶液中。

由于KCl溶解度比NaCl 大,而且粗食盐中含量少,所以在蒸发和浓缩食盐溶液时,NaCl先结晶出来,而KCl仍留在溶液中。

三、器材和药品1.器材电磁加热搅拌器,循环水泵,抽滤瓶,布氏漏斗,普通漏斗,烧杯,蒸发皿,台秤,滤纸,pH试纸。

2.药品NaCl(粗),H2SO4(3mol·L-1),Na2CO3(饱和溶液),HCl(2mol·L-1),(NH4)2C2O4(饱和溶液),BaCl2(1mol·L-1),NaOH(6mol·L-1),HAc(2mol·L-1),镁试剂(对硝基偶氮间苯二酚)。

四、实验方法一、NaCl的提纯1.粗盐溶解称取8.0g粗食盐于100mL烧杯中,加入30mL水,用酒精灯加热搅拌使其溶解。

2.除SO42-加热溶液至沸,边搅拌边滴加1mol·L-1 BaCl2溶液约2mL,继续加热5min,使沉淀颗粒长大易于沉降。

3.检查SO42-是否除尽将酒精灯移开,待沉降后取少量上清液加几滴2mol·L-1 HCl,再加几滴1mol·L-1 BaCl2溶液,如有混浊,表示SO42-尚未除尽,需再加BaCl2溶液直至完全除尽SO42-。

调速实验1-4

调速实验1-4
六、实验报告
1、简述实验中观察到的现象,对实验中出现的问题加以分析、解释。
2、画出U/F曲线。
3、画出异步电动机的机械特性n=f(Te)曲线。
4、思考题:如何改变电动机的加速度、减速度?
5、写出实验小结。
实验四速度闭环三相异步电机调压调速系统实验
一.实验目的
3)直流电动机的电枢电流不要超过额定值使用,转速也不要超过1.2倍的额定值。以免影响电机的使用寿命,或发生意外。
4)DJK04与DJK02-1不共地,所以实验时须短接DJK04与DJK02-1的地。
实验二、双闭环晶闸管不可逆直流调速系统实验
一、实验目的
1、了解双闭环不可逆直流调速系统的原理及组成。
2、掌握双闭环不可逆直流调速系统的调试方法和步骤。
⑴、通过触摸面板上LO/RE切换键进行切换。
⑵、通过对输入端子参数(n36~n39)的设定来切换。
1、 触摸面板的操作方法
触摸面板操作有两种功能:一种是用面板上的RUN键和STOP/RESET键来控制电机的起动、停止。另一种是用于参数设定。
1) 指示灯显示说明
正常时:接通电源后,RUN灯闪亮、ALARM灯灭。指示灯FREF、FOUT、IOUT、MNTR、F/R、LO/RE、PRGM中有灯亮,指示窗口有数据显示。
U09:显示过去最后一次发生过的异常内容。
U10:制造商管理用。
F/R:灯亮时,可用 或 键,选择电动机的运转方向(正/
反转)。 FOR:正转 rev:反转
LO/RE:灯亮时,可用 或 键,选择本地/远程模式。
rE:远程 LO:本地
PRGM:。灯亮时,可用 或 键,选择要设定的参数,再用
键显示该参数的内容,用 或 键修改该

小学一年级的科学探索五个有趣的实验项目

小学一年级的科学探索五个有趣的实验项目

小学一年级的科学探索五个有趣的实验项目在小学一年级的科学学习中,实验项目是一种非常有趣且有效的教学方式。

通过亲自动手参与实验,学生们可以更好地理解科学原理,并培养探索精神和科学思维。

在本文中,我将为大家介绍五个适合小学一年级学生的有趣科学实验项目。

实验一:彩虹水柱材料:一杯水、一面镜子、手电筒步骤:1. 将镜子竖直放在桌面上。

2. 将一杯水倒满。

3. 打开手电筒,使其光线照射向镜子,调整角度,使得光线成一个角度射入杯中的水。

4. 观察杯中的水,会发现出现了五颜六色的光芒,就像是一道彩虹悬浮在水中。

这个实验的原理是光的折射。

当光线从一个介质(比如水)射入另一个介质(比如空气)时,会发生折射现象,从而产生彩虹色。

实验二:独角兽牙膏材料:牙膏、背景色浅的盘子、牙刷、食用色素(红色、蓝色、黄色)步骤:1. 将牙膏挤在盘子的一侧。

2. 在牙膏上滴几滴不同颜色的食用色素。

3. 用牙刷将色素和牙膏混合在一起。

4. 用牙刷刷在牙齿上,就会发现牙齿上出现了五彩斑斓的颜色。

这个实验的原理是利用食用色素与牙膏的混合,并利用刷牙的动作将颜色扩散到牙齿表面,给人一种神奇的感觉。

实验三:油和水的分离材料:一杯水、一勺植物油、纸巾步骤:1. 将一杯水倒满。

2. 在水中加入一勺植物油。

3. 用纸巾轻轻擦拭油浮在水面上的部分。

4. 观察会发现,油和水被分离开来,油漂浮在水上,不会与水混合在一起。

这个实验的原理是油和水的密度不同,导致两者不能混合。

水的密度大于油的密度,因此油会漂浮在水面上。

实验四:漂浮的葡萄材料:一杯水、几颗葡萄、一小块盐步骤:1. 将一杯水倒满。

2. 在水中加入适量的盐,搅拌均匀。

3. 将葡萄放入水中观察。

4. 会发现葡萄会漂浮在水中,不会沉入杯底。

这个实验的原理是盐水的密度大于葡萄的密度,使得葡萄在盐水中浮起来。

实验五:发光的乳酸酸奶材料:一瓶乳酸酸奶、荧光笔步骤:1. 取一小部分乳酸酸奶放在容器中。

2. 用荧光笔折开,将荧光物质挤入乳酸酸奶中。

实验1文昌鱼

实验1文昌鱼

( 四

) 其 它 脊 索 动 物
1、柄海鞘 、

为沿海常见的尾索动物。 为沿海常见的尾索动物。 外形:成体长椭圆形, 外形:成体长椭圆形, 体表为被囊, 体表为被囊,有两个孔 孔、 孔、 孔 , 体 有柄 。

内部结构: 内部结构:口、咽鳃裂、食道、胃、肠、肛门。 肛门。 咽鳃裂、食道、 生活方式:幼体自由生活;成体固着、聚生。 生活方式:幼体自由生活;成体固着、聚生。
2、玻璃海鞘 、
被囊柔软、透明, 被囊柔软、透明,单 体附着生活。 体附着生活。
3、菊海鞘
群体生活,具公共被囊。 群体生活,具公共被囊。 中央的孔为公共出水孔, 中央的孔为公共出水孔, 外围的为单体的入水孔。 外围的为单体的入水孔。
4、七鳃鳗(脊椎动物亚门圆口纲) 、七鳃鳗(脊椎动物亚门圆口纲)
鳗形,分头、 鳗形,分头、躯干和尾三部分 单鼻孔, 单鼻孔,眼1对,7对外鳃孔 寄生或半寄生。 寄生或半寄生。
四、作业与思考
1、绘文昌鱼过咽横切面图,并注明各结 绘文昌鱼过咽横切面图, 构的名称。 构的名称。 2、试述脊索动物的主要特征。 试述脊索动物的主要特征。
脊索动物门主要特征: 脊索动物门主要特征:
实验目的: 一、实验目的:
1、通过文昌鱼的观察,明确脊索动物的 通过文昌鱼的观察,明确脊索动物的 主要特征。 主要特征。 2、认识几种其他脊索动物。 认识几种其他脊索动物。
材料和用具: 二、材料和用具:
1、文昌鱼浸制标本:1瓶 文昌鱼浸制标本: 2、文昌鱼整体装片:1/1 文昌鱼整体装片:1/1 3、文昌鱼过咽横切片:1/1 文昌鱼过咽横切片:1/1 4、海鞘浸制标本:2瓶 海鞘浸制标本: 5、七鳃鳗浸制标本:1瓶 七鳃鳗盲囊

微生物学实验-1培养基的制备与高压蒸汽灭菌

微生物学实验-1培养基的制备与高压蒸汽灭菌

2. 放回内层锅,并装入待灭菌物品。 放回内层锅,并装入待灭菌物品。
3. 加盖,并将盖上的排气软管插入内层锅的 加盖, 排气槽内。 排气槽内。再以两两对称的方式同时旋紧相 对的两个螺 栓。
4. 通电加热,待冷空气完全排尽后,关上排气 通电加热,待冷空气完全排尽后, 阀。当锅内压力升到所需压力时,控制热源,维 当锅内压力升到所需压力时,控制热源, 持压力至所需时间。本实验用 持压力至所需时间。本实验用0.1Mpa,121.5℃, , ℃ 20min灭菌。 灭菌。 灭菌 5. 灭菌所需的时间到后,关闭电源,让灭菌锅 灭菌所需的时间到后,关闭电源, 内温度自然下降,当压力表降至“ 时 内温度自然下降,当压力表降至“0”时,打开排 气阀,旋松螺栓,打开盖子,取出灭菌物品。 气阀,旋松螺栓,打开盖子,取出灭菌物品。 6. 将取出的灭菌培养基放入 ℃温箱培养 将取出的灭菌培养基放入37℃温箱培养24h, , 经检查若无杂菌生长,即可待用。 经检查若无杂菌生长,即可待用。
6. 加塞 在试管口或三角烧瓶口上塞上棉塞,以 在试管口或三角烧瓶口上塞上棉塞, 阻止外界微生物进人培养基内而造成污染, 阻止外界微生物进人培养基内而造成污染,并保 证有良好的通气性能。 证有良好的通气性能。 7. 包扎 在棉塞外包一层牛皮纸,以防止灭菌时 在棉塞外包一层牛皮纸, 冷凝水润湿棉塞,其外再用绳子扎好。 冷凝水润湿棉塞,其外再用绳子扎好。注明培养 基名称、组别、配制日期。 基名称、组别、配制日期。 8. 灭菌 将上述培养基以 0.103 MPa 121℃ , ℃ 20min高压蒸汽灭菌。 高压蒸汽灭菌。 高压蒸汽灭菌
高压蒸汽灭菌
实验目的
了解高压蒸汽灭菌的基 本原理及应用范围。 本原理及应用范围。 学习高压蒸汽灭菌的操 作方法。 作方法。

实验1-门电路逻辑功能及测试

实验1-门电路逻辑功能及测试

实验一 门电路逻辑功能及测试一、实验目的1、熟悉器件外形和管脚引线排列。

2、熟悉与非、异或门电路逻辑功能。

3、设计用与非门组成其它门电路并测试验证。

二、实验器件74LS86 四二输入端异或门 1片 74LS00 四二输入端与非门 2片 74LS20 四输入端双与非门 1片三、预习要求1、复习与非、异或门电路工作原理。

芯片引脚图如下所示:74LS86 四二输入端异或门 74LS00 四二输入端与非门74LS20 四输入端双与非门实验报告上此部分可不画图,其他部分需画图填写2、熟悉所用集成电路的引线位置及各引线用途。

四、实验内容及步骤实验前先检查实验箱电源是否正常。

然后对所选实验用的集成电路进行连线,特别注意Vcc及地线不能接错。

实验中改动接线须先断开电源,接好线后再通电源。

1、测试门电路逻辑功能〔1〕选用四输入端双非门74LS20一只,插入设计板,按图1接线,输入端a、b、c、d接S1—S4(电平开关输出插口),输出端L接电平显示发光二极管〔D1—D8任意一个〕。

(2) 将电平开关按表1置位,分别测出输出逻辑状态。

将输出结果填入表1中。

输入输出a b c d L1 1 1 1 00 1 1 1 10 0 1 1 10 0 0 1 10 0 0 0 12、异或门逻辑功能测试〔1〕选四二输入端异或门74LS86,按图2接线,输入端a、b、c、d接电平开关,输出端A、B、Y接电平显示发光二极管。

〔2〕将电平开关按表2置位拨动,将输出结果填入表2中。

图2表2输入输出a b c d A B Y0 0 0 0 0 0 01 0 0 0 1 0 11 1 0 0 0 0 01 1 1 0 0 1 11 1 1 1 0 0 00 1 0 1 1 1 03、分析并验证逻辑电路的逻辑关系〔1〕用74LS00按图3、图4接线,将输入输出关系分别填入表3、表4中。

〔2〕写出上面两个电路的逻辑表达式。

图3图4输入输出A B Y0 0 00 1 11 0 11 1 1输入输出A B Y Z0 0 0 00 1 1 01 0 1 01 1 0 14、组成或非门: 用一片二输入端四与非门74LS00组成或非门。

实验1运算器实验报告

2018年10月11日星期四 9
ALU运算结果的传送控制
8种结果处理——由I6~I8提供结果处理情况 通用寄存器是否接收运算结果,及运算结果类型; Q寄存器的值是否发生变化; 运算器向外输出什么样的内容;
I8I7I6 000 结果处理 寄存器组 - Q寄存器 FQ Y输出 F
001
共完成 8 种运算功能;
3 种算术运算(加减等)和5种逻辑运算(与或异或等);
2018年10月11日星期四 4
Am2901的输入控制
8种数据组合——由I0~I2提供数据来源 选择输入ALU的两个操作数R和S的组合关系
数据来源 I2I1I0 000 001 R A S Q B
A
0 0 0 D
实验一
运算器实验ห้องสมุดไป่ตู้
主讲人:秦勉
实验目的
深入了解AM2901运算器的功能与具体用法;
深化运算器部件的组成、设计、控制与使用等诸项
知识。
2018年10月11日星期四
2
运算器Am2901
组成 算逻运算器ALU 寄存器组R0—R15 乘商寄存器Q 5组多路选择器
功能 8种 运算类型 8种 数据组合方式 8种 结果处理
2018年10月11日星期四 3
Am2901运算器
符号位S F3 结果为零Z F=0000 结果溢出V OVR 进位输出C Cn+4
F ALU S R Cn
每片Am2901为4位的; 4片Am2901级联构成16位运算器;
输出——运算结果F、标志位SZVC;
输入——R、S、最低位的进位信号Cn RS的数据来源由多路开关可选,共8种组合状态;
010

FB

试验一基本电工仪表的使用与测量误差的计算

电工电子实验指导理工组:张延鹏实验一 基本电工仪表的使用与测量误差的计算一、实验目的1.熟悉实验台上仪表的使用和布局; 2.熟悉恒压源与恒流源的使用和布局; 3.掌握电压表、电流表内电阻的测量方法; 4.掌握电工仪表测量误差的计算方法。

二、实验原理通常,用电压表和电流表测量电路中的电压和电流,而电压表和电流表都具有一定的内阻,分别用R V 和R A 表示。

如图1-1所示,测量电阻R 2两端电压U 2时,电压表与R 2并联,只有电压表内阻R V 无穷大,才不会改变电路原来的状态。

如果测量电路的电流I ,电流表串入电路,要想不改变电路原来的状态,电流表的内阻R A 必须等于零。

但实际使用的电压表和电流表一般都不能满足上述要求,即它们的内阻不可能为无穷大或者为零,因此,当仪表接入电路时都会使原来的状态发生变化,使被测的读数值与电路原来的实际值之间产生误差,这种由于仪表内阻引入的测量误差,称之为方法误差。

显然,方法误差值的大小与仪表本身内阻值的大小密切相关,我们总是希望电压表的内阻越接近无穷大越好,而电流表的内阻越接近零越好。

可见,仪表的内阻是一个十分关键的参数。

通常用以下方法测量仪表的内阻。

1.用“分流法”测量电流表的内阻设被测电流表的内阻为R A ,满量程电流为I m ,测试电路如图1-2所示,首先断开开关S ,调节恒流源的输出电流I ,使电流表指针达到满偏转,即I =I A =I m 。

然后和上开关S ,并保持I 值不变,调节电阻箱R 的阻值,使电流表的指针在1/2满量程位置,即I A = I S = I m / 2则电流表的内阻R A =R 。

2.用“分压法”测量电压表的内阻设被测电压表的内阻为R V ,满量程电压为U m ,测试电路如图1-3所示,首先闭合开关S ,调节恒压源的输出电压U ,使电压表指针达到满偏转,即U =U V =U m 。

然后断开开关S ,并保持U 值不变,调节电阻箱R 的阻值,使电压表的指针在1/2满量程位置,即U V = U m = U m / 2可调恒压源 R V U m图1-3图1-2可调恒流源R 1则电压表的内阻R V = R 。

哈工大电路实验1实验报告

竭诚为您提供优质文档/双击可除哈工大电路实验1实验报告篇一:哈工大数字电路实验报告实验二数字逻辑电路与系统上机实验讲义实验二时序逻辑电路的设计与仿真课程名称:院系:班级:姓名:学号:教师:哈尔滨工业大学20XX年12月实验二时序逻辑电路的设计与仿真3.1实验要求本实验练习在maxplusII环境下时序逻辑电路的设计与仿真,共包括6个子实验,要求如下:3.2同步计数器实验3.2.1实验目的1.练习使用计数器设计简单的时序电路2.熟悉用mAxpLusII仿真时序电路的方法3.2.2实验预习要求1.预习教材《6-3计数器》2.了解本次实验的目的、电路设计要求3.2.3实验原理计数器是最基本、最常用的时序逻辑电路之一,有很多品种。

按计数后的输出数码来分,有二进制及bcD码等区别;按计数操作是否有公共外时钟控制来分,可分为异步及同步两类;此外,还有计数器的初始状态可否预置,计数长度(模)可否改变,以及可否双向等区别。

本实验用集成同步4位二进制加法计数器74Ls161设计n分频电路,使输出信号cpo的频率为输入时钟信号cp频率的1/n,其中n=(学号后两位mod3.2.4实验步骤1.打开mAxpLusII,新建一个原理图文件,命名为exp3_2.gdf。

2.按照实验要求设计电路,将电路原理图填入下表。

3.新建一个波形仿真文件,命名为exp3_2.scf,加入时钟输入信号cp及输出信号cpo,并点击mAxpLusII左侧工具条上的时钟按钮,将cp的波形设置为周期性方波。

4.运行仿真器得到输出信号cpo的波形,将完整的仿真波形图(包括全部输入输出信号)附于下表。

3.3时序电路分析实验3.3.1实验目的练习用mAxpLusII进行时序逻辑电路的分析。

3.3.2实验预习要求1.预习教材《6-3-1异步二进制计数器》2.了解本次实验的目的、电路分析要求3.3.3实验原理分析如下时序电路的功能,并判断给出的波形图是否正确。

Windows操作系统实验1

Windows操作系统实验实验一Windows基本操作●建立一个文件夹,命名格式为:你的学号的最后两位+你的姓名,如“01王伟”。

以下所有文档都保存在此文件夹中。

全部作业做完后,把此文件夹复制到teacher机上所指定的你所在班级文件夹中。

●任选10道题把你操作结果的界面屏幕拷贝到word中,保存成一个文件,文件名自定。

一.实验内容练习1.Win 的桌面管理操作:1.同时打开画图、计算器和记事本等三个应用程序,分别使用任务栏和键盘进行窗口切换;2.将桌面上的所有窗口排列成“横向平铺”显示,互不重叠;3.设置任务栏的属性为自动隐藏;4.在桌面上新建一个名为“上机实验作业”的文件夹;5.将系统“日期/时间属性”对话框的画面,复制到“写字板”应用程序的文档中,文件名为A1.DOC;6.将当前整个屏幕的图像信息复制到剪贴板,再从剪贴板粘贴到画图程序的文档中,文件名为A2.JPG;7.在桌面上创建“资源管理器”的快捷方式;8.将桌面上“资源管理器”的快捷方式更名为“文件管理器”;9.删除桌面上“文件管理器”的快捷方式图标;10.设置在将文件移入回收站时,不显示“删除确认”的对话框;11.清空回收站。

练习2.Win 的开始菜单操作:1.使用磁盘清理程序删除不需要的文件及Win 组件;2.将“记事本”应用程序设置为启动Win 后自动运行的方式;3.将“开始”菜单“程序/附件/娱乐”组中“播放器”程序项,移动至“程序”组中;4.在Win 的帮助系统中,查找关于设置共享打印机方法的说明信息;5.利用“开始”菜单中的“搜索”功能,在C盘上查找所有文件扩展名为. BMP的文件;6.利用“开始”菜单中的“搜索”功能,查找2010年9月1日创建的所有Word文档(文件扩展名为.DOC)文件;7.利用“开始”菜单中的“运行”项,启动字处理应用程序Microsoft Word;8.清除“开始”菜单中“文档”项目中最近使用的文件;9.在MS-DOS方式窗口中,显示C盘根文件夹下的所有可执行文件的清单列表;10.将“开始”菜单“程序”组中的“Microsoft Word”、“Microsoft Excel”和“Microsoft PowerPoint”等三个程序项,发送到“桌面快捷方式”。

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

电子科技大学实验报告学生姓名:xxxx 学号:xxx指导教师:xxx实验地点:xx 实验时间:xx一、实验室名称:软件实验室二、实验项目名称:面向对象程序设计—数据封装三、实验学时:6四、实验原理:数据封装将一组数据和这组数据有关的操作集合封装在一起,形成一个能动的实体,称为对象。

用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象。

面向对象技术试图通过建立一个合适的数据类型,将描述对象的属性(数据)和行为(函数)结合在一起,形成一个新的抽象数据类型,称为类类型(class)。

类是C++的封装机制,其中包括了数据成员和成员函数。

在C++类中,能确保数据只能由类中的成员函数进行访问和处理。

在任何时候,都可以自由地改变数据成员的组织形式,只需改变成员函数的实现细节。

由于这些成员函数的接口不改变,系统其他部分的程序(及使用者)就不会由于改动而受到影响。

类的概念将数据和与这个数据有关的操作集合封装在一起,建立了一个定义良好的接口,人们只关心其使用,不关心其实现细节。

这反应了抽象数据类型的思想。

五、实验目的:本实验通过编写一些简单的程序,使学生掌握数据封装的概念,并能熟练编写C++类,培养理论联系实际和自主学习的能力,提高程序设计水平。

六、实验内容:一位小学教师Ken希望完成这样的任务:针对于小学生正在学习四边形(quadrangle)的特性,编写一个小软件,能够随机在屏幕上显示矩形(rectangle)、正方形(square)、平行四边形(parallelogram)、梯形(trapezoid)和菱形(diamond)五种形体之一,同时显示该形体的特性和关键数据(随机产生),学生复习形体的特性,然后根据给出的关键数据计算形体的面积,软件判断其结果的正确性。

在学习过程中,软件记录产生的每一个形体,在学生选择不再继续后,将其学习的过程重放一遍,用以重温,加深印象。

根据Ken老师的要求,需要至少编写六个类:1)Rect //注意:类名不要使用Rectangle2)Square3)Parallelogram4)Trapezoid5)Diamond6)List其中,前五个类用于描述五种形体。

五种形体不用顶点坐标的表示形式,而只是简单地用它们的特征值表示。

例如:矩形、平行四边形用长和高表示;正方形用边长表示;梯形用两条平行边长和高表示;菱形用两条对象线长表示。

要求为这五种形体编写相应的类,类中包括至少如下数据成员和成员函数:1)特征值,例如长和宽等;2)string name; 用于存储形体的类别。

类别的名字就是类的名字。

例如:Rect类的类别名就是“Rectangle”;3)double area(); 用于求形体的面积;4)void draw(); 用于绘制形体。

不要求用图形的方式画图形,只需要简单地打印出形体的类别和特征值;5)构造(包括拷贝构造)函数和析构函数。

构造函数要带有相应的参数以能够用指定特征值初始化形体对象。

此外,List类用于存储各种形体。

形体的产生可以通过随机的方式完成。

不过,List类的push_back()成员的代码需要自行完成。

附件中给出了List 类的大部分代码。

重温过程实际上就是遍历List类对象的过程。

这个过程可能有些复杂,附件中也给出了遍历的示例代码。

附件中给出了其它需要的示例代码,以及解题思路,请参阅。

注:请将此实验编写的代码完整保存,此后的两项实验都要以本次实验的代码为基础。

实验四属于选作实验。

七、实验器材(设备、元器件):PC机一台,装有C/C++语言集成开发环境。

八、实验步骤:#include <stdio.h>#include <iostream>#include <string>#include <cstdlib>#include <ctime>using namespace std;class Quadrangle{public:string name; //形体的标识};typedef Quadrangle * QUADPTR;class Rect{public:string name; //形体的标识(矩形)Rect(int w = 5, int h = 7, string nm = "Rectangle"){name=nm;height=h;width=w;}~Rect (){}void draw() const;double area() const;string what() const;int& Width(); //获取矩形的宽。

如果是梯形,还需要一个成员int& Width2()来获取另一条平行边的长度int& Height();//获取矩形的高private:int width, height; //高和宽};void Rect::draw() const{cout << what() <<": width = " << width << ", height = " << height << endl; }string Rect::what() const{return name;}double Rect::area() const{return width*height;}class Squ{public:string name; //形体的标识(正方形)Squ(int length1= 5, string nm = "Square"){name=nm;length = length1;}~Squ (){}void draw() const;double area() const;string what() const;int& getlength(); //获取正方形的边长。

如果是梯形,还需要一个成员int& Width2()来获取另一条平行边的长度private:int length; //边长};void Squ::draw() const{cout<< what() <<" length: = " << length<< endl;}string Squ::what() const{return name;}double Squ::area() const{return length*length;}class Para{public:string name; //形体的标识(平行四边形)Para (int w = 5, int h = 7, string nm = "Parallelogram"){name=nm;width=w;height=h;}~Para (){}void draw() const;double area() const;string what() const;int& Width(); //获取平行四边形的长。

如果是梯形,还需要一个成员int& Width2()来获取另一条平行边的长度int& Height();//获取平行四边形的高private:int width,height; //高和长};void Para::draw() const{cout << what() <<": width = " << width << ", height = " << height << endl; }string Para::what() const{return name;}double Para::area() const{return width*height;}class Dia{public:string name; //形体的标识(菱形)Dia(int length = 5, int length3 = 7, string nm = "Diamond") {name=nm;length1 =length ;length2 = length3;}~Dia (){}void draw() const;double area() const;string what() const;double &Length1(); //获取菱形的对角线的长。

如果是梯形,还需要一个成员int& Width2()来获取另一条平行边的长度double &Length2();private:double length1,length2;};void Dia::draw() const{cout << what() <<": length1 = " << length1<< ", length2 = " << length2 << endl;}string Dia::what() const{return name;}double Dia::area() const{return (length1*length2)/2;}class Tra{public:string name; //形体的标识(梯形)Tra(int w1= 5, int w2 = 4,int h = 7, string nm = "Trapezoid"){name=nm;width1=w1 ;width2=w2;height=h;}~Tra (){}void draw() const;double area() const;string what() const;double& Width1(); //梯形的长。

如果是梯形,还需要一个成员int& Width2()来获取另一条平行边的长度double&Width2();double& Height();//获取梯形的高private:double width1,width2,height;};void Tra::draw() const{cout << what() <<": width1 = " << width1<< ", width2 = " << width2<< ", height = " << height<< endl;}string Tra::what() const{return name;}double Tra::area() const{return (width1+width2)*height/2;}typedef void (*ACCESSFUN)(QUADPTR);class List{private:struct _Node{QUADPTR data;_Node* next;} *head, *tail; //链表的头尾指针typedef _Node* _range;size_t len; //链表中节点的数目,即链表的长度public:List(); //平凡构造函数List(const List& l); //复制构造函数~List();void push_back(const QUADPTR quad); //尾部添加size_t size(); //获取链表的长度void traverse(ACCESSFUN f); //遍历};List::List() :head(NULL),tail(NULL){}List::List(const List& l){head=tail=NULL;_Node * p=l.head;while (p!=NULL){this->push_back(p->data);p=p->next;}}List::~List(){_Node *p=head,*q;while (p!=NULL){q=p;p=p->next;delete q;}}void List::push_back(const QUADPTR quad){_Node *p = new _Node;p->data=const_cast < QUADPTR > (quad);p->next=NULL;if(tail==NULL)head=tail=p;else{tail->next=p;tail=p;}}size_t List::size(){_Node *p=head;size_t len=0;while(p!=NULL){p=p->next;++len;}return len;}void List::traverse(ACCESSFUN f){_range p =head; //请自行添加初始化部分while(p != NULL){f(p->data);p=p->next;//请自行添加指针移动部分}}void access(QUADPTR quad){if (quad->name == "Rectangle"){Rect *p = reinterpret_cast<Rect*>(quad);p->draw();cout << "area = " << p->area() << endl;}else if (quad->name =="Square"){Squ *p =reinterpret_cast<Squ *>(quad);p->draw();cout << "area = " << p->area() << endl;}else if (quad->name =="Parallelogram"){Para *p =reinterpret_cast<Para *>(quad);p->draw();cout << "area = " << p->area() << endl;}else if (quad->name =="Diamond"){Dia *p =reinterpret_cast<Dia *>(quad);p->draw();cout << "area = " << p->area() << endl;}else if (quad->name =="Trapezoid"){Tra *p =reinterpret_cast<Tra *>(quad);p->draw();cout << "area = " << p->area() << endl;}}int main(){List list;srand(unsigned(time(NULL)));cout<<"小学生学习进程"<<endl;done:int i=(rand() % 5);if (i==0){Rect *re = new Rect();re->draw();list.push_back(reinterpret_cast<QUADPTR>(re));cout<<"输入其面积计算结果: ";for(;;){double answer=0.0;cin>>answer;if( answer != re->area())cout<<"结果错误,请重新计算: ";else{cout<<" 结果正确"<<endl;break;}}}else if(i==1){Dia *di = new Dia();di->draw();list.push_back(reinterpret_cast<QUADPTR>(di));cout<<"输入其面积计算结果: ";for(;;){double answer=0.0;cin>>answer;if( answer != di->area())cout<<"结果错误,请重新计算: ";else{cout<<" 结果正确"<<endl;break;}}}else if(i==2){Para *pa = new Para();pa->draw();list.push_back(reinterpret_cast<QUADPTR>(pa));cout<<"输入其面积计算结果: ";for(;;){double answer=0.0;cin>>answer;if( answer != pa->area())cout<<"结果错误,请重新计算: ";else{cout<<" 结果正确"<<endl;break;}}}else if(i==3){Tra *tr = new Tra();tr->draw();list.push_back(reinterpret_cast<QUADPTR>(tr));cout<<"输入其面积计算结果: ";for(;;){double answer=0.0;cin>>answer;if( answer != tr->area())cout<<"结果错误,请重新计算: ";else{cout<<" 结果正确"<<endl;break;}}}else if(i==4){Squ *sq = new Squ();sq->draw();list.push_back(reinterpret_cast<QUADPTR>(sq));cout<<"输入其面积计算结果: ";for(;;){double answer=0.0;cin>>answer;if( answer != sq->area())cout<<"结果错误,请重新计算: ";else{cout<<" 结果正确"<<endl;break;}}}int answer1;cout<<"小朋友是要继续学习呢还是开始复习呢?(如果继续学习的话请输入1,如果是想要复习的话请输入2): ";cin>>answer1;if( answer1 == 1)goto done;else if(answer1==2){cout<<"小学生复习进程"<<endl;list.traverse(access);}system("pause");return 0;}九、实验数据及结果分析:十、实验结论:实验运行成功,通过随机产生五种形体,让小学生根据其给定数据计算形体面积,并验证其正确性。

相关文档
最新文档