实验六

实验六
实验六

《JAVA 语言》实验报告(6)

实验名称:________________ 指导教师:___________ 实验日期:________________ 专 业:________________ 班 级:___________ 姓 名:________________ 一、实验目的:

1. 掌握OOP 方式进行程序设计的方法,

2. 了解类的继承性和多态性的作用。

二、实验内容:

一 类的继承性练习

1. 进一步理解继承的含义

新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass ),这个新类称为子类。通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。

2. 创建公共类LX3_7_P

(1)编写程序文件LX3_7_P.java ,源代码如下。

public class LX3_7_P

{

protected String xm; //具有保护修饰符的成员变量

protected int xh;

void setdata(String m,int h) //设置数据的方法

{

xm =m;

xh = h;

}

public void print() //输出数据的方法

{

System.out.println(xm+", "+xh);

}

}

(2)编译LX3_7_P.java ,产生类文件LX3_7_P.class 。

(3)创建继承的类

a 程序功能:通过LX3_7_P 类产生子类LX3_8,其不仅具有父类的成员变量xm (姓名)、xh (学号),还定义了新成员变量xy (学院)、xi (系)。在程序中调用了父类的print 方法,同时可以看出子类也具有该方法。

b 编写LX3_8.java 程序,源代码如下。

class LX3_8 extends LX3_7_P{

protected String xy;

protected String xi;

public static void main(String args[])

类的继承性和多态性

张 鑫 2015-4-15 网络工程 网络工程1301 秦文龙

{

LX3_7_P p1 = new LX3_7_P();

p1.setdata("帅零",12321) ;

p1.print();

LX3_8 s1 = new LX3_8() ;

s1.setdata("郭丽娜",12345); //调用父类的成员方法

s1.xy="经济管理学院"; //访问本类的成员变量

s1.xi="信息管理系"; //访问本类的成员变量

s1.print();

System.out.print(s1.xm+", "+s1.xy+", "+s1.xi);

}

}

(3)编译并运行程序,其结果如图6.1 所示。

图6.1

3.了解成员变量的隐藏方式

所谓隐藏是指子类重新定义了父类中的同名变量,在子类Line 中重新定义了x 为x1,y 为y1,隐藏了父类Point 中的两个成员变量x 和y。子类执行自己的方法时,操作的是子类的变量,子类执行父类的方法时,操作的是父类的变量。在子类中要特别注意成员变量的命名,防止无意中隐藏了父类的关键成员变量,这有可能给程序带来麻烦。

4.了解成员方法的覆盖方式

(1)方法覆盖的定义与作用

通过继承子类可以继承父类中所有可以被子类访问的成员方法,但如果子类的方法与父类方法同名,则不能继承,此时称子类的方法覆盖了父类的方法,简称为方法覆盖(override)。方法覆盖为子类提供了修改父类成员方法的能力。例如,子类可以修改层层继承下来的Object 根类的toString 方法,让它输出一些更有用的信息。下面的程序显示了在子类Circle 中添加toString 方法,用来返回圆半径和圆面积信息。

(2)编写覆盖Object 类toString 方法的程序文件LX3_9.java,源代码如下。

class Circle {

private int radius;

Circle(int r) {

setRadius(r);

}

public void setRadius(int r) {

radius=r;

}

public int getRadius() {

return radius;

}

public double area() {

return 3.14159*radius*radius;

}

public String toString() {

return "圆半径:"+getRadius()+" 圆面积:"+area();

}

}

public class LX3_9{

public static void main(String args[]) {

Circle c=new Circle(10);

System.out.println("\n"+c.toString());

}

}

(3)编译并运行程序,其结果如图6.2 所示

图6.2

(4)程序结构分析。

程序添加了toString 方法并修改了它的返回值。由于toString 和继承下来的Object 类的方法名相同、返回值类型相同,因此覆盖了超类Object 中的toString 方法。

方法覆盖时要特别注意:

用来覆盖的子类方法应和被覆盖的父类方法保持同名、相同的返回值类型,以及相同的参数个数和参数类型。

5.This、super 和super()的使用

(1)程序功能:说明this、super 和super()的用法。程序首先定义Point(点)类,然后创建点的子类Line(线)。最后通过LX3_10 类输出线段的长度。

程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。在子类Line 的setLine 方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this 引用,告诉编译器是为当前类的成员变量赋值。在length 和toString 方法中使用父类成员变量时,使用super 引用,告诉编译器使用的是父类的成员变量。

(2)使用this、 super 和super()的程序文件LX3_10.java,源代码如下。

class Point {

protected int x, y;

Point(int a, int b) {

setPoint(a, b);

}

public void setPoint(int a, int b) {

x=a;

y=b;

}

}

class Line extends Point {

protected int x, y;

Line(int a, int b) {

super(a, b);

setLine(a, b);

}

public void setLine(int x, int y) {

this.x=x+x;

this.y=y+y;

}

public double length() {

int x1=super.x, y1=super.y, x2=this.x, y2=this.y;

return Math.sqrt((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1));

}

public String toString() {

return "直线端点:[" + super.x + "," + super.y + "] [" +

x + "," + y + "] 直线长度:" + this.length();

}

}

public class LX3_10{

public static void main(String args[]) {

Line line=new Line(50, 50);

System.out.println("\n"+line.toString());

}

}

(3)编译并运行程序,结果如图3.10 所示。

图3.10

二类的多态性练习

1.理解类的多态性

类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。多态使程序简洁,为程序员带来很大便利。在OOP 中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。类的多态性体现在方法的重载(overload)上,包括成员方法和构造方法的重载。

2.方法的重载

3.构造方法的重载

构造方法的名称和类同名,没有返回类型。构造方法不能直接调用,只能由new 操作符调用,主要用来完成对象的初始化。重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。

(1)程序功能:编写构造方法RunDemo 的重载程序文件LX3_12,源代码如下。

(2)源代码:

class RunDemo {

private String userName, password;

RunDemo() {

System.out.println("全部为空!");

}

RunDemo(String name) {

userName=name;

}

RunDemo(String name, String pwd) {

this(name);

password=pwd;

check();

}

void check() {

String s=null;

if (userName!=null)

s="用户名:"+userName;

else

s="用户名不能为空!";

if (password!="12345678")

s=s+" 口令无效!";

else

s=s+" 口令:********";

System.out.println(s);

}

}

public class LX3_12 {

public static void main(String[] args) {

new RunDemo();

new RunDemo("刘新宇");

new RunDemo(null,"邵丽萍");

new RunDemo("张驰","12345678");

}

}

(2)编译并运行程序,结果如图6.4所示。

图6.4

三、实验结果与结论:

1. 假如我们在开发一个系统时需要对员工进行建模,员工包含3个属性:姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。

class People{

String p(String name,String id,float money){

return("员工:"+"姓名"+name+"工号"+id+"工资"+money);

}

String q(String name,String id,float money,float jiangjin){

return("经理:"+"姓名"+name+"工号"+id+"工资"+money+"奖金"+jiangjin);

}

}

class Manager extends People{

String q(String name,String id,float money,float jiangjin){

return("经理:"+"姓名"+name+"工号"+id+"工资"+money+"奖金"+jiangjin);

}

}

public class Yuangong{

public static void main(String[] args){

Manager yang;

yang=new Manager();

System.out.println(yang.p("杨洋","10101010",8800));

System.out.println(yang.q("杨艳","10101068",10000,5000));

}

}

图6.5

2.定义一个自己的数学类MyMath。类中提供静态方法max,该方法接收3个同类型的参

数(例如整形),返回其中的最大值。

实验代码:

class Math

{

int x,y,z;

Math()

{

this.x=x;

this.y=y;

this.z=z;

}

static int max(int x,int y,int z)

{

int t=(x>y)?x:y;

if(t

t=z;

}

return t;

}

}

public class Output

{

public static void main(String[] args){

Math i=new Math();

System.out.println("最大值为:"+i.max(1,2,3));

}

}

图6.6

3. 以点类作为基类,从点派生出圆,从圆派生圆柱,设计成员函数输出它们的面积和体积。

实验代码:

class Point{

protected int x;

protected int y;

Point()

{

this.x=0;

this.y=0;

}

Point(int x,int y)

{

this.x=x;

this.y=y;

}

}

public class Circle extends Point{

protected int r;

Circle(int x,int y,int r)

{

super(x,y);

this.r=r;

}

public double area()

{

return 3.14*r*r;

}

public static void main(String[] args)

{

Circle i=new Circle(8,8,4);

Cylinder j=new Cylinder(8,8,4,6);

System.out.println("面积:"+i.area());

System.out.println("体积:"+j.volume());

}

}

class Cylinder extends Circle{

protected int h;

Cylinder(int x,int y,int r,int h)

{

super(x,y,r);

this.h=h;

}

public double volume()

{

return 3.14*r*r*h;

}

}

实验结果:

图6.7 四、实验总结:

试验六丙酮蒸汽吸收

实验六丙酮蒸汽吸收 一、实验目的 (1) 了解填料吸收塔的一般结构和工业吸收过程流程。 (2) 掌握吸收总传质系数K y a的测定方法。 (3) 考察吸收剂进口条件的变化对吸收效果的影响。 (4) 了解处理量变化对吸收效果的影响。 二、实验原理 1.概述 吸收过程是依据气相中各溶质组分在液相中的溶解度不同而分离气体混合物的单元操作。在化学工业中洗手操作广泛应用于气体原料净化、有用组分的回收、产品制取和废气治理等方面。在吸收研究过程中,一般可分为对吸收过程本身的特点或规律进行研究和对吸收设备进行开发研究两个方向。前者的研究内容包括吸收剂的选择、确定因影响吸收过程的因素、测定吸收速率等,研究的结果可为吸收工艺设计提供依据,或为过程的改进及强化指出方向;后者研究的重点为开发新型高效的吸收设备,如新型高效填料、新型塔板结构等。 吸收通常在塔设备内进行,工业上尤其以填料塔用的普遍。填料塔一般由以下几部分构成:(1)圆筒壳体;(2)填料;(3)支撑板;(4)液体预分布装置;(5)液体再分布器;(6)捕沫装置; (7)进、出口接管等等。其中,塔内放置的专用填料作为气液接触的媒介,其作用是使从塔顶流下的流体沿填料表面散布成大面积的液膜,并使从塔底上升的气体增强湍动,从而为气液接触传质提供良好条件。液体预分布装置的作用是使得液体在塔内有一良好的均匀分布。而液体在从塔顶向下流动的过程中,由于靠近塔壁处的空隙大,流体阻力小,液体有逐渐向塔壁处汇集的趋向,从而使液体分布变差。液体再分布器的作用是将靠近塔壁处的液体收集后再重新分布。填料时填料吸收塔最重要的部分。对于工业填料,按照其结构和形状,可以分为颗粒填料和规整填料两大类。其中,颗粒填料是一粒粒的具有一定几何形状和尺寸的填料颗粒体,一般以散装(乱堆)的方式堆积在塔内。常见的大颗粒填料有拉西环、鲍尔环、阶梯环、弧鞍环、矩鞍环等等。填料等材质可以使金属、塑料、陶瓷等。规整填料是由许多具有相同几何形状的填料单元组成,以整砌的方式装填在塔内。常见的规整填料有丝网波纹填料、孔板波纹填料等。填料的性能主要评价指标是填料的比表面积和孔隙率。一般地希望填料能提供达的气液接触面积和较小的流动压降。 2.吸收速率方程式和吸收传质系数 吸收传质速率吸收传质速率由吸收速率方程式决定 (1) 或 (2) 式(1)、(2)中N A——吸收速率,mol/s; K y a——气相吸收传质系数,mol/(m3·h); A——气液接触传质面积,m2; ——塔顶、塔底气象平均传质推动力; a——填料的比表面积,m2/m3; V p——填料体积,m3; 严格说来,a应为单位体积填料的有效润湿表面积。由于a的大小与物系对填料表面积的润湿性和气液流动状况有关,工程上为方便起见,将K y和a合并为一个常数,即K y a称为气相容积吸收传质系数,mol/(m3·h),这样,吸收传质速率式又可表为 (3) 气相平均传质推动力 由吸收过程物料衡算

实验6+过程_函数和程序...

实验6过程、函数和程序包 姓名:学号: 专业:班级: 同组人:无实验日期:2013/7/21 【实验目的与要求】 ?掌握过程的创建与调用 ?掌握PL/SQL函数的编写与调用 ?熟悉程序包的使用 【实验内容与步骤】 6.0.实验准备工作:PL/SQL程序文件的编辑与执行 1.使用文档编辑器编辑以下文件,并保存为aa.sql: 2.以scott身份登录,在SQ L Plus中执行@aa命令运行程序: 注:测试时,文件名请用全名(即包含路径,如:@c:\aa) 给出运行结果:

6.1.存储过程 1.最简单的存储过程编写与执行 (1)创建测试表 drop table Exam_Table; create table Exam_Table( e_id number(5), e_name varchar2(20), e_salary number(8,2) ); (2)创建存储过程 create or replace procedure insert_salary (v_id number,v_name varchar2,v_salary number) is begin insert into Exam_Table values (v_id,v_name,v_salary); commit; dbms_output.put_line('数据插入成功'); end; / (3) 执行(调用)存储过程 exec insert_salary(6,'g',2000); (4)查询执行结果

select * from Exam_Table; 给出执行的最后结果: 2.参数的使用:in/out/in out参数 阅读以下程序,理解不同类型参数使用的不同,运行程序,给出运行结果。 (1) 用两个参数:in ,out 传入一个姓名,输出:某某人你好: create or replace procedure mp(v_in varchar2,v_out out varchar2) is begin v_out:=v_in||'你好'; end; declare v_name varchar2(10); begin mp('scott',v_name); dbms_output.put_line(v_name); end;--输出:scott你好 给出运行结果:

实验报告6答案

实验报告 课程名称:高级语言程序设计 实验六:一维数组和二维数组班级:学生姓名: 学号: 专业: 指导教师: 学期:2009-2010 学年上学期 云南大学信息学院 一、实验目的 1掌握一、二维数组的定义及初始化 2、掌握数组元素的输入、输出及引用方法 3、掌握使用循环对数组元素进行访问 4、掌握一、二维数组的简单应用

二、知识要点 1 一、二维数组的定义与赋值(初始化、循环键盘输入) 2、访问数组元素(下标的正确使用) 3、数组的典型应用(复制、求和、统计某种元素个数、求数组中的最大/最小值、 元素的查找与排序) 三、实验预习(要求做实验前完成) 1定义一个有四个元素的float型数组: 2、定义一个具有五个元素的整型数组并将其初始化为{1,2,3,4,5} 3、要用循环从键盘输入整型数组s的元素值(共6个),应该使用语句: 4、交换数组元素d[2]和d[4],使用语句: 5、语句for(k=0;k<3;k++)x[2][k] = 0;将把哪些元素变为0? 四、实验内容(要求提供:① 算法描述或流程图② 源程序) 1已知一个数组有10个元素,值分别是3, 6, 8, 4, 5, 66, 80, 72, 69, 70。 编程,将数组元素逆置后输出。(提示:第一个与最后一个交换位置,第二个与倒数第二个交换位置,...... ) 2、编程序求Fibo nacci数列的前30项,Fib on acci数列的定义为: 1 5=1) fn = * 1 (n =2) Jnj + fnd (n >2) 要求将数列存放在数组中,并按每行5个数的格式输出该数列。 3、输入一个4行4列的二维数组,统计偶数的个数,并输出所有小于5的数。 4、已知一个二维数组:{{14,26,18,17},{24,37,21,8},{19,31,22,16},{7,19,14,26}}, 编 程,输出该二维数组的最小元素的行下标与列下标。 五、实验结果(要求写出运行界面及输出的运行结果) 六、实验小结 1.#define N 10 #include main() {int i, t,a[N]; for(i=0;i

实验六 吸收实验

实验六 吸收实验 一、实验目的 1. 了解填料吸收塔的基本构造、吸收过程的基本流程及其操作。 2. 掌握吸收总传质系数ya K 的测定方法。 二、实验原理 对低浓度气体吸收且平衡线为直线的情况,吸收传质速率由吸收方程决定: m ya y ?=填V K N A 则只要测出A N ,测出气相的出、入塔浓度,就可计算ya K ,而 )(21y y V N A -= 式中:V 为混合气体的流量,mol/s ,由转子流量计测定; 1y ,2y 分别为进塔和出塔气相的组成(摩尔分率),用气相色谱分析得到。 液相出塔浓度由全塔物料衡算得到。 计算Δym 时需用平衡数据,本实验的平衡数据如下所示: 丙酮、空气混合气体中丙酮的极限浓度*s y 与空气温度 t 的关系(压强为a 101.25 P ?) 丙酮的平衡溶解度:

三、实验流程及设备 实验装置包括空气 输送,空气和丙酮鼓泡 接触以及吸收剂供给和 气液两相在填料塔中逆 流接触等部分,其流程 示意如图所示。空气的 压力定为a 100.24 P ?。 1.熟悉实验流程,学习填料塔的操作。在空气流量恒定条件下,改变清水流量,测定气体进出口浓度1y 和2y ,计算组分回收率η、传质推动力m y ?和传质系数ya K 。 2.在清水流量恒定条件下,改变空气流量,测定气体进出口浓度1y 和2y , 计算组分回收率η、传质推动力m y ?和传质系数ya K 。 3.改变吸收液体的温度,重复实验。 4.在控制定值器的压强时应该注意干将空压机的出口阀门微开。 5.加热水时,要缓慢调节变压器的旋钮。 6.调节参数后要有一段稳定时间,直至出口水温基本恒定,取样时先取2y 再取1y 。 7. 转子流量计的读数要注意换算。 8.气体流量不能超过/h 600L 。液体流量不能超过/h 7L ,防止液泛。 五、实验数据记录及处理 1. 设备参数和有关常数 实验装置的基本尺寸: 塔内径:34mm ;填料层高度:24cm ; 自查丙酮—空气物系的平衡数据; 大气压:101.33 KPa ;室温:13.5 ℃。 2. 实验数据

实验六答案

实验六答案 1、创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分 别表示雇员的姓名、编号和月薪。再从employee类派生出3个类worker、technician 和salesman,分别代表普通工人、科研人员、销售人员。三个类中分别包含数据成员productNum、workHours和monthlysales,分别代表工人每月生产产品的数量、科研人员每月工作的时数和销售人员每月的销售额。要求在employee类中声明虚成员函数pay,并在各个派生类中覆盖pay函数,用来计算雇员的月薪,并假定: 普通工人的月薪=每月生产的产品数×每件产品的赢利×20% 科研人员的月薪=每月的工作时数×每小时工作的酬金 销售人员的月薪=月销售额×销售额提成。 创建一个通用函数CalculateSalary,用来计算并返回各种不同类型雇员的月薪。函数CalculateSalary的原型如下: float CalculateSalary(employee *emptr) ; 在main函数中分别声明worker类、technician类和salesman类的对象代表各种类型的雇员,并调用函数CalculateSalary计算他们的月薪。 解:程序代码如下: #include using namespace std; class employee { protected: char name[20]; int empNo; float salary; public: employee(char *cp="",int no=1001); employee(employee&); void setname(char *cp); void setempNo(int no); void setsalary(float sa); char*getname(); int getempNo(); float getsalary(); virtual float pay(){ return 0;} }; employee::employee(char *cp,int no) { int i=0; while(*cp) { name[i]=*cp; i++; cp++;

吸收实验

实验七 吸收实验 一、实验目的 1. 了解填料吸收装置的基本流程及设备结构; 2. 测定填料层的压强降和空塔气速的关系; 3. 测定总体积吸收系数,并分析气体空塔气速及喷淋密度对总体积吸收系数的影响。 二、设备流程 吸收塔为玻璃塔,塔内径为0.1m ,填料为12×12×2.2mm 的拉西环,整个吸收实验装置由四部分组成: 1、空气系统: 空气由风机(旋涡气泵或容积式风机)供给,进入缓冲罐6,通过空气调节阀8调节流量,经空气转子流量计10计量后,在主管路上和氨气混合后由塔底进入,为保持一定的尾气压力(100~200mmH 2O )以通过尾气分析器,在尾气出口处装置有尾气调节阀22。 2、氨气系统: 氨气由氨气钢瓶供给,经减压阀降压至0.1Mpa 以下后,进入氨气缓冲罐(为确保安全,缓冲罐上装有安全阀,其排出经塑料管引到室外),由氨气调节阀3调节流量后,经氨气转子流量计5计量后(同时串联有孔板流量计)与空气混合进入塔底。转子流量计前装有压力计及温度计。 3、自来水系统: 自来水经过滤后,由调节阀15调节流量,经转子流量计16计量后,进入塔顶,经莲蓬式喷淋器均匀地喷洒在填料上,塔底吸收液经排出管17排出。 4、尾气分析系统: 由尾气分析器19及湿式气体流量计21组成(并联有质量流量计,使用质量流量计时要使用喷射管装置以补充尾气压力的不足)。 三、实验原理 1、填料层流体力学性能的测定: AES —II 型吸收实验装置流程示意图 1氨气缓冲罐;2氨气温度计;3流量调节阀;4氨表压计;5转子流量计;6空气缓冲罐;7空气温度计;8流量调节阀;9空气表压计;10转子流量计;11吸收塔;12喷淋器;13塔顶表压计;14压差计;15水流量调节阀;16转子流量计;17排液管;18尾气三通阀;19吸收盒;20尾气温度计;21湿式气体流量计;22尾气稳压阀;

实验六 高层绘图操作答案

实验六 高层绘图操作 实验目的: 1. 掌握绘制二维图形的常用函数 2. 掌握绘制三维图形的常用函数 3. 掌握绘制图形的辅助操作 实验内容: 1. 1. 设x x x y cos 2^1sin 35.0????? ? ++=,在π 2~ 0=x 区间取101点,绘制函数曲 线。 x=0:pi/100:2*pi; y=(0.5+3*sin(x)./(1+x..^2)).*cos(x); plot(x,y); 2. 已知2 1x y = ,)2cos(2x y =,213y y y ?=,完成下列操作: (1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。 (2) 以子图形式绘制三条曲线。 (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 (1).在同一坐标系下用不同的颜色和线型绘制三条曲线。 x=0:pi/1000:2*pi; y1=x.^2; y2=cos(2*x); y3=y1.*y2;

plot(x,y1,'r',x,y2,'b-.',x,y3,'k--'); (2). 以子图形式绘制三条曲线。 x=0:pi/10:2*pi; y1=x.^2; subplot(2,2,1);plot(x,y1,'r'); title('y1=x^2'); y2=cos(2*x); subplot(2,2,2);plot(x,y2,'b-.'); title('y2=cos(2*x)'); y3=y1.*y2; subplot(2,2,3);plot(x,y3,'k--'); title('y3=y1.*y2'); (3). 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。x=0:pi/10:2*pi; y1=x.^2; subplot(2,2,1);bar(x,y1,'r'); title('y1=x^2'); subplot(2,2,2);stairs(x,y1,'r'); title('y1=x^2'); subplot(2,2,3);stem(x,y1,'r'); title('y1=x^2'); subplot(2,2,4);fill(x,y1,'r');

实验六答案

实验六函数与编译预处理答案 一、断点的设置和取消、单步执行跟踪进入函数和跳出函数方法 练习 2、调试练习: 要求:模仿示例调试以下程序,直到输出正确结果,源程序名为error6_2.c 程序功能:利用函数调用求“1!+2!+3!+4!+...+10!”的值(参见实验教材72页程序填空题第(1)小题) 源程序(有错误的程序——不是语法错误,而是算法错误或逻辑错误): 改正错误后的源程序: void main() { long s=0,i; long mm(int k); for(i=1;i<=10;i++) s=s+mm(i); printf("1!+2!+3!+...+10!=%ld\n",s); } long mm(int k) { long t=1, j; for(j=1;j<=k;j++) t=t*j; return (t); } 3、综合调试、改错练习: 以下程序有多处错误,请综合运用前面所学过的所有知识和VC++的调试手段,改正程序的各种错误,使其运行出正确的结果。程序的功能是:利用函数调用求任意两个整数的和。 改正错误后的源程序:

main() { int sum(int a,int b); int x,y; scanf("%d,%d",&x,&y); printf("x=%d,y=%d\n",x,y); printf("%d+%d=%d\n",x,y,sum(x,y)); } int sum(int a,int b) { return (a+b); } 二、编程练习 利用VC++编写程序,并调试、运行,直到输出正确结果。编程练习1: 注意: 这里提供了以填空的形式出现源程序参考清单,目的是给同学们一个思路。最好不要将此源程序清单复制到VC++中,否则会出现多处语法错误。同学们可以据此思路来填写有关语句,从而完成程序。在调试程序时,一定要运用前面学过的方法。 下面函数是实现求[1,3000]能被17或23整除的整数的个数。请将程序补充完整,并调试运行,直到输出正确结果。(源文件名为blank6_1.c) 完成填空后的源程序: #include int f(int m, int n) { int i, count=0; for(i=m; i<=n; i++) if(i%17==0||i%23==0) count++; return count; } main() {int m,n; scanf("%d%d",&m,&n); printf("count=%d\n", f(m,n)); }

实验六吸收实验

实验六 吸收实验 (一)丙酮填料吸收塔的操作及吸收传质系数的测定 一、实验目的 1、了解填料吸收塔的结构和流程; 2、了解吸收剂进口条件的变化对吸收操作结果的影响; 3、掌握吸收总传质系数Kya 的测定方法。 二、实验内容 1、测定吸收剂用量与气体进出口浓度y 1、y 2的关系; 2、测定气体流量与气体进出口浓度y 1、y 2的关系; 3、测定吸收剂及气体温度与气体进出口浓度y 1、y 2的关系; 三、实验原理 吸收是分离混合气体时利用混合气体中某组分在吸收剂中的溶解度不同而达到分离的一种方法。不同的组分在不同的吸收剂、吸收温度、液气比及吸收剂进口浓度下,其吸收速率是不同的。所选用的吸收剂对某组分具有选择性吸收。 1、吸收总传质系数K y a 的测定 传质速率式: N A =K y a ·V 填·△Ym (1) 物料衡算式: G 空(Y 1-Y 2)=L(X 1-X 2) (2) 相平衡式: Y=mX (3) (1)和(2)式联立得: K y a= 12() m G Y Y V Y -?空填 (4) 由于实验物系是清水吸收丙酮,惰性气体为空气,气体进口中丙酮浓度y 1>10%,属于高浓度气体吸收,所以: Y 1= 11 1y y - ; Y 2= 2 21y y - ; G 空—空气的流量(由装有测空气的流量计测定),Kmol/m 2·h ; V 填—与塔结构和填料层高度有关; 其中:22112211ln ) ()(mX Y mX Y mX Y mX Y Y m -----= ? (5) 02=X ; )(211Y Y L G X -=空 ; L —吸收剂的流量(由装有测吸收剂的流量计测定), Kmol/m 2·h ; m---相平衡常数(由吸收剂进塔与出塔处装的温度计所测温度确定),吸收温度: 附:流量计校正公式为: 2 出 进t t t +=

JAVA实验6答案

广东海洋大学学生实验报告书(学生用表) 实验名称实验六. Java的接口与实现课程名称Java程序设计与开发 技术 课程号16232204 学院(系) 信息学院专业计算机科学与技术班级计科 学生姓名学号实验地点钟海楼 04019 实验日期 2015年 10月26日 一、实验目的 (1)学习掌握Java中类怎样实现接口、接口回调技术; (2)学习掌握Java 程序中面向接口的编程思想。 二、实验任务 完成实验六指导上实验1、实验2、实验3的实验任务。 三、实验仪器设备和材料 安装有J2SE开发工具的PC机。 四、实验内容和步骤 实验1 代码如下: Estimator.java interface CompurerAverage{ public double average(double x[]); } class Gymnastics implements CompurerAverage{ public double average(double x[]){ int count=x.length; double aver=0,temp=0; for(int i=0;i

for(int i=1;i2) aver=aver/(count-2); else aver=0; return aver; } } class School implements CompurerAverage{ public double average(double[] x){ int count=x.length; double sum=0; for(int i=0;i

实验六吸收实验

实验六 吸收实验 1.实验目的 (1)了解填料塔吸收塔的结构与流程; (2)测定液相总传质单元数和总体积吸收系数; (3)了解气体空塔速度和液体喷淋密度对总体积吸收系数的影响。 2.基本原理 由于CO 2气体无味、无毒、廉价,所以本实验选择CO 2作为溶质,用水吸收空气中的CO 2。一般将配置的原料气中的CO 2浓度控制在10%(质量)以内,所以吸收的计算方法可按低浓度来处理。 计算公式: ??????+----= A mX Y mX Y A A N OL 1121)1(ln 11 OL X X X N Z L X X dY Z L a K Ω=-Ω=?12* 式中 K X a : 以?X 为推动力的液相总体积吸收系数,kmol / (m 3·s); N OL : 以?X 为推动力的液相总传质单元数; A : 吸收因数 m V L A /= ; L : 水的摩尔流量,kmol /s ; V : 空气的摩尔流量,kmol /s ; Z : 填料层高度,m ; Ω: 塔的横截面积,m 2 ; 本实验的平衡关系可写成:Y = mX ; 式中 m :相平衡常数,m =E /P ; E :亨利系数,E =f (t ),Pa ,可根据液相温度t 查得; P :总压,Pa (取大气压)。 测定方法: (1)本实验采用转子流量计测得空气和水的体积流量,并根据实验条件(温度和压力)和有关公式换算成空气和水的摩尔流量。 (2)测定塔底和塔顶气相组成Y 1和Y 2(利用气相色谱分析得到质量分率,再换算成摩尔比)。 (3)塔底和塔顶液相组成X 1、X 2的确定:对清水而言,X 2=0,由全塔物料衡算()()2121X X L Y Y V -=- 可求出X 1 。 3.实验装置与流程 实验装置流程如图2-10所示。自来水送入填料塔塔顶经喷淋头喷淋在填料顶层。由风机送来的空气和由二氧化碳钢瓶来的二氧化碳混合后,一起进入气体混合贮罐,然后从塔底进入塔内,与水在塔内进行逆流接触,发生质量传递,由塔顶出来的尾气放空。由于本实验为低浓度气体的吸收,整个实验过程可看成是等温操作。 填料吸收塔内径为100mm ,塔内分别装有金属丝网波纹规整填料和θ环散装填料两种,填料层总高度Z =2 m.。塔顶有液体分布器,塔中部有液体再分布器,塔底部有栅板式填料支承装置。塔底有液封,以避免气体泄漏。 填料规格和特性:金属丝网波纹填料的型号为JWB —700Y ,填料尺寸为φ100×100mm ,比表面积为700m 2/m 3。θ环散装填料尺寸为φ10×10mm 。

matlab 实验6 函数及其调用

数学实验练习六:函数 一、1)写一个 MATLAB 函数 piFun01.m 来计算下列级数: f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...) 其中 n 为函数的输入,代表上述级数的项数,级数和 f(n) 则是函数的输出。 解:function f=pifun01(n) f=0; for i=1:n f=f+4*(-1)^(i+1)/(2*i-1); end >> piFun01(100000) ans = 3.1416 2)使用 tic 和 toc 指令来测量 piFun01(100000) 的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。我的旧计算机是 Pentium 450MHz,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。

解:function f=pifun01(n) tic f=0; for i=1:n f=f+4*(-1)^(i+1)/(2*i-1); end f=toc 二、写一个 MATLAB 的递归函数 fibo.m 来计算 Fibonacci 数列, 其定义如下: fibo(n+2) = fibo(n+1)+fibo(n) 此数列的启始条件如下: fibo(1) = 0, fibo(2) = 1. a) fibo(25) 的返回的值是多少? 解:function f=fibo(n) if n==1 f=0; elseif n==2

f=1; else f=fibo(n-1)+fibo(n-2); end >> clear >> fibo(25) ans = 46368 b)使用 tic 和 toc 指令来测量 fibo(25) 的计算时间。我的计 算机是 Pentium 2GHz,所得的计算时间约为 3.35 秒。请说明你的计算机规格以及其计算时间。 解: function f=fibo(n) tic if n==1 f=0; elseif n==2 f=1; else f=fibo(n-1)+fibo(n-2); end

JAVA实验6答案

GDOU-B-11-112 广东海洋大学学生实验报告书(学生用表) 实验名称 实验六.Java 的接口与实现 课程名称JaVa 程序设计与开发 课程号16232204 技术 实验地点钟海楼实验日期 2015年 04019 10 月 26 日 、实验目的 (1) 学习掌握Java 中类怎样实现接口、接口回调技术; (2) 学习掌握Java 程序中面向接口的编程思想。 二、实验任务 完成实验六指导上实验1、实验2、实验3的实验任务。 三、实验仪器设备和材料 安装有J2SE 开发工具的PC 机。 四、实验内容和步骤 实验1 代码如下: Estimator.java in terface Compu rerAverage{ p ublic double average(double x[]); } class Gymn astics imp leme nts Compu rerAverage{ p ublic double average(double x[]){ int coun t=x.le ngth; double aver=0,te mp=0; for(i nt i=0;i

aver=aver+x[i]; } if(cou nt>2) aver=aver/(co un t-2); else aver=0; retur n aver; } } class School impi eme nts Compu rerAverage{ p ublic double average(double[] x){ int coun t=x.le ngth; double sum=0; for(i nt i=0;i

实验六、用窗函数法设计FIR滤波器分析解析

实验六 用窗函数法设计 FIR 滤波器 一、实验目的 (1) 掌握用窗函数法设计FIR 数字滤波器的原理和方法。 (2) 熟悉线性相位FIR 数字滤波器特性。 (3) 了解各种窗函数对滤波特性的影响。 二、实验原理 滤波器的理想频率响应函数为H d (e j ω ),则其对应的单位脉冲响应为: h d (n) = ?-π π ωωωπ d e e H n j j d )(21 窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼h d (n)。由于h d (n)往往是无 限长序列,且是非因果的,所以用窗函数。w(n)将h d (n)截断,并进行加权处理: h(n) = h d (n) w(n) h(n)就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数H(e j ω )为: H(e j ω ) = ∑-=-1 )(N n n j e n h ω 如果要求线性相位特性,则h (n )还必须满足: )1()(n N h n h --±= 可根据具体情况选择h(n)的长度及对称性。 用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N 的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。 三、实验步骤 1. 写出理想低通滤波器的传输函数和单位脉冲响应。 2. 写出用四种窗函数设计的滤波器的单位脉冲响应。 3. 用窗函数法设计一个线性相位FIR 低通滤波器,用理想低通滤波器作为逼近滤波器,截止频率ωc =π/4 rad ,选择窗函数的长度N =15,33两种情况。要求在两种窗口长度下,分别求出h(n),打印出相应的幅频特性和相频特性曲线,观察3dB 带宽和阻带衰减; 4 用其它窗函数(汉宁窗(升余弦窗)、哈明窗(改进的升余弦窗)、布莱克曼窗) 设计该滤波器,要求同1;比较四种窗函数对滤波器特性的影响。 四、实验用MATLAB 函数 可以调用MATLAB 工具箱函数fir1实现本实验所要求的线性相位FIR-DF 的设计,调用一维快速傅立叶变换函数fft 来计算滤波器的频率响应函数。

吸收与解吸实验

一、实验目的 12 3 4 二、实验原理 ㈠、吸收实验 根据传质速率方程,在假定Kxa 低浓、难溶等] 条件下推导得出吸收速率方程: Ga=Kxa ·V ·Δx m 则: Kxa=Ga/(V ·Δx m ) 式中:Kxa ——体积传质系数 [kmolCO 2/m 3hr Ga ——填料塔的吸收量 [Kmol CO 2 V ——填料层的体积 [m 3] Δx m ——填料塔的平均推动力 1、Ga 的计算 已知可测出:Vs[m 3/h]、V B [m 3/h](可由色谱直接读出) Ls[Kmol/h]=Vs ×ρ水/M 水 101 1'29]/[ρρρρV M V h Kmol G B B B =?=?= 空气 标定情况:T 0=273+20 P 0=101325 测定情况:T 1=273+t1 P 1=101325+ΔP 因此可计算出L S 、G B 。又由全塔物料衡算:G a =Ls(X 1-X 2)=G B (Y 1-Y 2) 2 2 21 1111y y Y y y Y -= -= 且认为吸收剂自来水中不含CO 2,则X 2=0,则可计算出G a 和X 1 2、Δx m 的计算 根据测出的水温可插值求出亨利常数E[atm],本实验为P=1[atm] 则 m=E/P m y x m y x x x x x x x x x x x x e e e e m 1 1221 112221 2 1 2ln = = -=?-=????-?= ?

㈡、解吸实验 低浓、难溶等] Ga=K Y a ·V 则: K Y a=Ga/(V 式中:K Y a Ga V ΔY m 1、Ga 的计算 已知可测出:y 2 ]/[h Kmol G B 标定情况:T 0 测定情况:T 1因此可计算出L S 、G B 。又由全塔物料衡算:G a =Ls(X 1-X 2)=G B (Y 1-Y 2) 0112 2 21 11=-= -= y y Y y y Y 且认为空气中不含CO 2,则y 2=0;又因为进塔液体中X 1有两种情况,一是直接将吸收后的液体用于解吸,则其浓度即为前吸收计算出来的实际浓度X 1;二是只作解吸实验,可将CO 2用文丘里吸碳器充分溶解在液体中,可近似形成该温度下的饱和浓度,其X 1*可由亨利定律求算出: m m y x 1 *1== 则可计算出G a 和X 2 2、ΔY m 的计算 根据测出的水温可插值求出亨利常数E[atm],本实验为P=1[atm] 则 m=E/P 1 12 21112221 2 1 2ln x m y x m y Y Y Y Y Y Y Y Y Y Y Y e e e e m ?=?=-=?-=????-?= ? 根据 e e Y y y y Y 换算成将-= 1 三、实验装置

实验六 函数

实验六 函数 一、实验目的 1.掌握自定义函数的一般结构及定义函数的方法。 2.掌握形参、实参、函数原型等重要概念。 3.掌握函数声明、函数调用的一般方法。 4. 了解函数的嵌套调用以及函数的递归调用的格式。 二、实验预习 1 .理解为什么要在程序中引入函数?函数的引入对程序的整体结构有什么样的影响? 2. 函数的定义格式,理解函数的类型说明符根据什么来确定? 3. 充分理解函数实参和形参的联系和区别,掌握单向值传递的意义。 4. 了解针对不同返回类型的函数返回值的应用,尤其是有无return 语句的区别。 5. 掌握函数调用与函数声明的格式,了解什么情况下需要进行函数声明?什么情况下不需要? 6. 了解函数嵌套调用和递归调用的原理及使用原则。 三、实验内容 (一)阅读并调试下列程序,根据要求给出程序结果。 1.求三角形面积函数。 ⑴ 编程分析 ① 设三角形边长为a 、b 、c ,面积area 的算法是s=(a+b+c)/2, area=))()((c s b s a s s --- ,其中 显然,要计算三角形面积,需要用到三个参数,面积函数的返回值的数据类型应为实型。 ② 尽管main()函数可以出现在程序的任何位置,但为了方便程序阅读,通常将主函数放在程序的开始位置,并在它之前集中进行自定义函数的原型声明。 ⑵ 参考程序 /* 定义和使用求三角形面积函数的程序 */ #include "math.h" #include "stdio.h" float area(float,float,float); /*函数的声明*/ void main() { float a,b,c; printf("请输入三角形的三个边长值:\n") scanf("%f,%f,%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0) printf("Area=%-7.2f\n",area(a,b,c)); /* 以下是计算任意三角形面积的函数 */ float area(float a,float b,float c) { float s,area_s; s=(a+b+c)/2.0;

化工原理吸收实验报告

一、实验目的 1.了解填料塔的一般结构及吸收操作的流程。 2.观察填料塔流体力学状况,测定压降与气速的关系曲线。 3.掌握总传质系数K x a的测定方法并分析其影响因素。 4.学习气液连续接触式填料塔,利用传质速率方程处理传质问题的方法。 二、实验原理 本实验先用吸收柱将水吸收纯氧形成富氧水后(并流操作),送入解吸塔再用空气进行解吸,实验需测定不同液量和气量下的解吸总传质系数K x a,并进行关联,得K x a=AL a V b的关联式。同时对不同填料的传质效果及流体力学性能进行比较。 1.填料塔流体力学特性 气体通过干填料层时,流体流动引起的压降和湍流流动引起的压降规律相一致。在双对数坐标系中△P/Z对G'作图得到一条斜率为1.8~2的直线(图1中的aa线)。而有喷淋量时,在低气速时(c点以前)压降也比例于气速的1.8~2次幂,但大于同一气速下干填料的压降(图中bc段)。随气速增加,出现载点(图中c点),持液量开始增大。图中不难看出载点的位置不是十分明确,说明汽液两相流动的相互影响开始出现。压降~气速线向上弯曲,斜率变徒(图中cd段)。当气体增至液泛点(图中d点,实验中可以目测出)后在几乎不变的气速下,压降急剧上升。 图1 填料层压降-空塔气速关系

2.传质实验 填料塔与板式塔气液两相接触情况不同。在填料塔中,两相传质主要是在填料有效湿表面上进行。需要完成一定吸收任务所需填料高度,其计算方法有:传质系数法、传质单元法和等板高度法。 本实验对富氧水进行解吸。由于富氧水浓度很小,可认为气液两相平衡服从亨利定律,可用对数平均浓度差计算填料层传质平均推动力。得速率方程式: m p X A x V a K G ???= m p A x X /V G a K ?=? 2 211ln ) 22()11(e e e e m x x x x x x x x x --?---= )x -L (x G 21 A = Ω?=Z V p 相关的填料层高度的基本计算式为: OL OL x x e x N H x x dx a K L Z ?=-Ω=?12 OL OL N Z H = 其中, m x x e OL x x x x x dx N ?-=-=?2 11 2 Ω =a K L H x OL 由于氧气为难溶气体,在水中的溶解度很小,因此传质阻力几乎全部集中于液膜中,即Kx=kx 。由于属液膜控制过程,所以要提高总传质系数Kxa ,应增大液相的湍动程度。 在y-x 图中,解吸过程的操作线在平衡系下方,在实验是一条平行于横坐标的水平线(因氧在水中浓度很小)。 三、实验装置流程 1.基本数据 解吸塔径φ=0.1m,吸收塔径φ=0.032m ,填料层高度0.8m (陶瓷拉西环、陶瓷波纹板、金属波纹网填料)和0.83m (金属θ环)。

实验六 自定义函数

实验六自定义函数 实验目的:熟悉Matlab自定义函数的定义和调用方法 实验内容: 2. 编写程序,在主程序中提示用户输入一组数字,编写子程序文件 find_div2.m找出能被2整除的数字,find_max_min.m找出输入数字中的最大值和最小值之和,find_averag求出输入数字的平均值,sort_number对数字进行排序,在主程序中调用子程序并且把上述结果输出。例如输入的数字为1,2,3,4,5,要求输出格式为:输入数字中能被2整除的数为:2,4 输入数字中最大值与最小值之和为:5+1=6 输入数字的平均值为:3 输入数字从大到小排序为:5,4 3,2,1 主程序: clear,clc s=input('请输入一组数字:','s'); x=str2num(s); find_div2(x); find_max_min(x); find_averag(x); sort_number(x);

子程序: function find_div2(x) b=length(x); for i=1:b A(i)=x(i); end c=find(rem(A,2)==0); A=A(c); disp(['输入数字中能被2整除的数为:',num2str(A)]) 子程序: function find_max_min(x) a=max(x); b=min(x); c=a+b; disp(['输入数字中最大值与最小值之和为:',num2str(a),'+',num2str(b),'=',num2str(c) 子程序: function find_averag(x) a=mean(x); disp(['输入数字的平均值为: ',num2str(a)]) 子程序: f unction sort_number(x) a=sort(x); b=fliplr(a); disp(['输入数字从大到小排序为:',num2str(b)])

相关文档
最新文档