《应用数据结构》实验指导书2011

《应用数据结构》实验指导书2011
《应用数据结构》实验指导书2011

《应用数据结构》实验指导书

课程编号:

课程名称:应用数据结构/Applied Data Structure

实验学时:16

适应专业:工科类

承担实验室:管理学院实验中心

一、实验目的和任务

1.实验教学的目的

本课程的教学要求之一是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,其重要程度绝不亚于知识传授。实验的作用在于帮助学生深入理解教材内容,巩固基本概念,促使学生在动手过程中进一步体会C语言中数据结构的运用技巧,并锻炼学生在调试过程中分析和发现问题的能力。

2.实验教学的要求

学生应掌握C语言基本编程能力并运用数据结构的原理和方法解决具体问题。除按时上机外,学生应具备构造算法并用程序实现的能力;在程序调试过程中,学生应能正确解读程序的错误提示并找到有效的解决办法。此外,规范书写算法也是一个值得高度重视的问题,教师有责任在教学过程中提醒学生,避免形成一系列难以纠正且贻害无穷的程序设计坏习惯。此外,本门课程设计的算法比较多,要求教师熟练掌握C语言和数据结构各类算法,并能准确理解和回答学生提出的编程问题。

二、实验项目及学时分配

三、参考资料

李业丽、郑良斌编著,数据结构(C)实验教程,北京理工大学出版社,2005年12月出版

严蔚敏,吴伟民编著,数据结构习题集(C语言版),清华大学出版社,1999年2月出版。

四、单项实验的内容和要求(包括实验所用的主要仪器设备,实验所需主要耗材)实验一线性数据结构算法验证

1.实验目的与意义

1)熟悉C语言的上机环境,进一步掌握C语言的结构特点

2)掌握线性表的顺序存储结构的定义及C语言实现

3)掌握线性表的链式存储结构——单链表的定义及C语言实现

4)掌握线性表在顺序存储结构——即顺序表中的各种基本操作

5)掌握线性表在链式存储结构——单链表中的各种基本操作

6)掌握栈的顺序表示和实现

7)掌握栈的链式表示和实现

8)掌握队列顺序表示和实现

9)掌握队列链式表示和实现

2.基本原理和方法

本实验涉及各类线性数据结构——线性表、栈和队列等。

单链表的各种操作,包括单链表的建立,结点的查找、插入、删除等基本运算。链表中插入结点的指针变化和删除p所指结点的指针变化参见讲义。

栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。

对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为p->top==MAXNUM-1,栈满时,不能入栈;否则出现空间溢出,引起错误,这种现象称为上溢。

出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。

注意:

①顺序栈中元素用向量存放。

②栈底位置是固定不变的,可设置在向量两端的任意一个端点。

③栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈

顶指针)来指示当前栈顶位置。

队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表。

入队时,将新元素插入rear所指的位置,然后将rear加1,出队时,删去front 所指的元素,然后将front加1并返回被删除元素。

顺序队列中的溢出现象:

①“下溢”现象。当队列为空时,做出队运算产生的溢出现象。“下溢”是正常

现象,常用作程序控制转移的条件。

②“真上溢”现象。当队列满时,做进找运算产生空间溢出的现象。“真上溢”

是一种出错状态,应设法避免。

③“假上溢”现象。由于入队和出队操作中,头尾指针只增加不减小,致使被删

元素的空间永远无法重新利用。当队列中实际的元素个数远远小于向量空闻的规模时,也可能由于尾指针己超越向量空间的上界而不能做入队操作。该现象称为“假上溢”现象。

3.主要仪器设备及耗材

安装有Turbo C++ 3.0运行环境的电脑,无耗材要求。

4.实验方案或技术路线

本实验含有三部分内容——线性表、栈和队列。

A.线性表部分

采取建立学生成绩表的方法实现。即建立学生成绩单链表,链表中每个结点由4个域组成,分别为:学号、姓名、成绩、存放下一个结点地址的next域、要求完成的四项功能可写成四个函数,登记学生成绩对应建立学生单链表的功能,后三个功能分别对应单链表的查询、插入与删除三大基本操作。

该系统中的数据采用线性表中的链式存储结构即单链表来存储,用结构体类型定义每个学生记录,故该单链表中每个结点的结构可描述为:

#define MAXLEN 100

typedef struct node

{ int num;//学号

char name[MAXLEN];//姓名

float score;//成绩

struct node *next; }linklist;

B.栈部分

此部分的算法独立性较强,因此可直接采用教材或讲义上的算法实现,但教材或讲义上的算法并非可执行的算法,故学生须自行进行算法上的转换。

C.队列部分

本实验主要由教师课堂演示,以一个具体的实例——机场事件模拟来实现。5.实验内容及步骤

A.线性表部分——学生成绩管理是学校教务管理的重要组成部分,其处理信息量很大,本实验是对学生的成绩管理作一个简单的模拟,用菜单选择操作方式完成下列功能:

①登记学生成绩

②查询学生成绩

③插入学生成绩

④删除学生成绩

【参考程序】

/*头文件hh.h的内容*/

#include

#include

#include

#define MAXLEN 100

typedef struct node

{ int num;

char name[MAXLEN];

int score;

struct node *next; }list;

/*头文件creat.h的内容*/

#include"hh.h"

list *create()

{ list *head, *p, *r;

int i, n;

head=(list *)malloc(sizeof(list)); head->next=NULL;

r=head;

printf("请输入学生人数:\n");

scanf("%d",&n);

for(i=l; i<=n; i++)

{ p=(list *)malloc(sizeof(list)); printf("输入学生的学号:\n");

scanf("%d", &p->num);

printf("输入学生的姓名:\n");

scanf("%s", p->name);

printf("输人李生的成绩:\n");

scanf("%d", &p->score);

p->next=NULL;

r->next=p;

r=r->next; }

return(head);

}

/*以下是头文件insert.h的内容*/

list *insert(list *h)

{ list *p,*q,*r,*head;

head=r=h;

p=h->next;

q=(list *)malloc(sizeof(list));

printf("输入待插入学生的学号:\n"); scanf("%d",&q->num);

printf("输入姓名:\n);

scanf("%s", q->name);

printf("输入成绩:\n");

scanf("%d, &q->score);

q->next=NULL;

while(p)

{ r=p;

p=p->next; }

r->next=q;

r=r->next;

return(head);

}

/*以下是头文件find.h的内容*/

void find(list *h)

{ int k;

list *p;

p=h->next;

printf("输入要查找学生的学号:\n");

scanf("%d", &k);

while(p&&p->num!=k) p=p->next;

if(p) { printf("学号\t姓名\t成绩\n");

printf("%d\t%s\t%d\n",p->num,p->name,p->score); } else printf("没找到!\n");

}

/*以下是头文件del.h的内容*/

list *del(list *h)

{ int k;

list *p, *q;

q=h;

p=h->next;

printf("请输入待删除学生的学号:\n");

scanf("%d",&k);

while(p&&p->num!=k)

{ q=p;

p=p->next; }

if(p) { q->next=p->next;

free(p); }

else printf("没有这个学生成绩,无法删除!\n");

return(h);

}

/*以下是头文件output.h的内容*/

void output(list *h)

{ list *p;

p=h->next;

while(p!=NULL)

{ printf("学号\t姓名\t成绩\t\n");

printf("%d\t%s\t%d\n",p->num,p->name,p->score);

p=p->next; }

}

/*以下是主程序*/

#include"creat.h"

#include"find.h"

#include"insert.h"

#include"output.h"

#include"del.h"

main()

{ list *p;

int k; /*控制循环的标志*/

while(1)

{ printf(" ----------------------------------\n");

printf(" | 学生成绩管理 |\n");

printf(" |________________|\n");

printf(" | 1.登记成绩 |\n");

printf(" | 2.查询成绩 |\n");

printf(" | 3:插入成绩 |\n");

printf(" | 4.删除成绩 |\n");

printf(" | 5.输出所有学生成绩 |\n");

printf(" | 0.退出程序 |\n");

printf(" ----------------------------------\n");

printf(" 请输入你的选择\n");

scanf("%d",&k);

switch(k)

{ case 1: p=create(); break;

case 2: find(p); break;

case 3: p=insert(p); break;

case 4: p=del(p); break;

case 5: output(p); break;

case 0: exit(0);

default: printf("选择错误,重新开始!\n"); }

}

}

B.栈部分——编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:

①初始化顺序栈

②插入元素

③删除栈顶元素

④取栈顶元

⑤遍历顺序栈

⑥置空顺序栈

【参考程序】

#include

#include

#define MAXNUM 20

#define ElemType int

/*定义顺序栈的存储结构*/

typedef struct

{ ElemType stack[MAXNUM];

int top; }SqStack;

/*初始化顺序栈*/

void InitStack(SqStack *p)

{ if(!p) printf("Error");

p->top=-l;

}

/*入栈*/

void Push(SqStack *p, ElemType x)

{ if(p->topstack[++p->top]=x;

else printf("Overflow!\n");

}

/*出栈*/

ElemType Pop(SqStack *p)

{ ElemType x;

if(p->top!=O) { x=p->stack[p->top];

printf("栈顶元%d已经被删除!\n", p->stack[p->top]); p->top=--;

return(x); }

else { printf("Underflow!\n");

return(0); }

}

/*获取栈顶元素*/

ElemType GetTop(SqStack *p)

{ if(p->top!=0) return (p->stack[p->top]);

else { printf("Underflow!\n");

return(0); }

}

/*遍历顺序栈*/

void OutStack(SqStack *p)

{ int i;

printf("\n");

if(p->top<0) printf("这是一个空栈!\n");

for(i=p->top; i>=O; i--) printf("第%d个数据是:%6d\n", i, p->stack[i]); }

/*置空顺序栈*/

void setEmpty(SqStack *p)

{ p->top=-1;

}

/*主函数*/

main()

{ SqStack *q;

int y, cord;

ElemType a;

do { printf("\n第一次使用必须初始化!\n");

printf("\n");

printf("\n 主菜单\n");

printf("\n 1 初始化顺序栈\n");

printf("\n 2 插入一个元素\n");

printf("\n 3 删除栈顶元素\n");

printf("\n 4 取栈顶元素\n");

printf("\n 5 置空顺序栈\n");

printf("\n 6 结束程序运行\n");

printf("\n-------------------------\n");

printf("请输入您的选择( 1, 2, 3, 4, 5, 6): ");

scanf("%d", &cord);

printf("\n");

switch(cord)

{ case 1: { q=(SqStack*)malloc(sizeof(SqStack));

InitStack(q);

OutStack(q);

} break;

case 2: { printf("请输入要插入的数据元素:a=");

scanf("%d",&a);

Push(q, a);

OutStack(q);

} break;

case 3: { Pop(q);

OutStack(q);

} break;

case 4: { y=GetTop(q);

printf("\n栈顶元素为:%d\n", y);

OutStack(q);

} break;

case 5: { setEmpty(q);

printf("\n 顺序栈被置空!\n");

OutStack(q);

} break;

case 6: exit(0);

}

} while (cord<=6);

}

C.队列部分——熟悉讲义中队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能:

①模拟一个机场飞机起降的过程

②机场仅有一条跑道,要求起飞与降落不能同时进行

③进场飞机若暂时没有跑道可用须在空中盘旋等候

④离场飞机若暂时没有跑道可用须在地面排队等候

⑤仅当空中无飞机等待降落时地面飞机方可起飞

⑥飞机的申请进场、降落、申请离场和起飞分别视为独立事件

⑦每个事件的发生占用一个时间单位。除降落和起飞外,各事件可以同时发生

【参考程序】

#define MAXQUEUE 5 /* use a small value for testing */

#include

#include

#include

#include

#include

#include

#include

typedef enum boolean { False, True } Boolean;

typedef enum action { ARRIVE, DEPART } Action;

typedef struct plane

{ int id; /* identification number of airplane */

int tm; } Plane; /* time of arrival in queue */

typedef Plane QueueEntry;

typedef struct queue

{ int count; /* number of airplanes in the queue */

int front, rear; /* front and rear of the queue */

QueueEntry entry[MAXQUEUE]; } Queue;

/* CreateQueue: create the queue.

Pre: None.

Post: The queue q has been initialized to be empty. */

void CreateQueue(Queue *q)

{ q->count=q->front=0;

q->rear=-1;

}

/* Error: display an error message.

Pre: message is the error message to display.

Post: The error message has been printed to stderr and the program terminates. */

void Error(char *message)

{ fprintf(stderr, "Error: %s\n", message);

exit (1);

}

/* UserSaysYes: True if the user wants to continue execution.

Pre: None.

Post: Returns True if the user's answer begins with either y or Y, False if the user responds with any response beginning with either n or N.*/ Boolean UserSaysYes(void)

{ int c;

printf(" (y/n)? ");

do { while ((c=getchar())=='\n') ; /* Ignore new line character. */ if (c=='y' || c=='Y' || c=='n' || c=='N') return (c=='y' || c=='Y');

printf("Please respond by typing one of the letters y or n\n");

}

/* Randomize: set staring point for pseudorandom integers. */

void Randomize(void)

{ srand((unsigned int)(time(NULL)%10000));

}

/* Start: print messages and initialize the parameters.

Pre: None.

Post: Asks user for responses and initializes all variables specified as parameters.

Uses: UserSaysYes. */

void Start(int *endtime, double *expectarrive, double *expectdepart) { Boolean ok;

printf(" This program simulates an airport with only one runway.\n One plane can land or depart in each unit of time.\n Up to %d planes can be waiting to land or take off at any time.\n", MAXQUEUE);

printf(" How many units of time will the simulation run? ");

scanf("%d", endtime);

Randomize(); /* Initialize random number generation. */

do

{ printf(" Expected number of arrivals per unit time (real number)? ");

scanf("%lf", expectarrive);

printf(" Expected number of departures per unit time? ");

scanf("%lf", expectdepart);

if (*expectarrive<0.0 || *expectdepart<0.0)

{ printf(" These numbers must be nonnegative.\n");

ok=False; }

else if (*expectarrive+*expectdepart>1.0)

{ printf(" The airport will become saturated. Read new numbers?");

ok=!UserSaysYes( ); }

else ok=True;

} while (ok==False);

printf("\n");

}

/* PoissonRandom: generate a pseudorandom integer according to the Poisson distribution.

Pre: None.

Post: generate a random nonnegative integer according to a Poisson distribution with the expected value given as the parameter.

Uses: exp, rand. */

int PoissonRandom(double expectedvalue)

{ int n=0; /* counter of iterations */

double limit=exp(-expectedvalue); /* e-v, v is the expected value */ double x=rand()/(double) INT_MAX; /* pseudorandom number */

{ n++;

x*=rand()/(double) INT_MAX; }

return n;

}

/* NewPlane: make a new record for a plane, update nplanes.

Pre: None.

Post: Makes a new structure for a plane and updates nplanes. */

void NewPlane(Plane *p, int *nplanes, int curtime, Action kind)

{ ++*nplanes;

p->id=*nplanes;

p->tm=curtime;

switch(kind)

{ case ARRIVE: printf(" Plane %3d ready to land.\n", *nplanes);

break;

case DEPART: printf(" Plane %3d ready to take off.\n", *nplanes); break;

}

}

/* QueueEmpty: returns non-zero if the queue is empty.

Pre: The queue q has been created.

Post: It returns non-zero if the queue is empty, zero otherwise. */ Boolean QueueEmpty(Queue *q)

{ return q->count<=0;

}

/* QueueFull: returns non-zero if the queue is full.

Pre: The queue q has been created.

Post: It returns non-zero if the queue is full, zero otherwise. */ Boolean QueueFull(Queue *q)

{ return q->count>=MAXQUEUE;

}

/* Append: append an entry to the queue.

Pre: The queue q has been created and is not full.

Post: The entry x has been stored in the queue as its last entry.

Uses: QueueFull, Error. */

void Append(QueueEntry x, Queue *q)

{ if (QueueFull(q)) Error("Cannot append an entry to a full queue.");

else { q->count++;

q->rear=(q->rear+1)%MAXQUEUE;

q->entry[q->rear]=x; }

}

/* Serve: remove the first entry in the queue.

Pre: The queue q has been create and is not empty.

Post: The first entry in the queue has been removed and returned as the

value of x.

Uses: QueueEmpty, Error. */

void Serve(QueueEntry *x, Queue *q)

{ if (QueueEmpty(q)) Error("Cannot serve froman empty queue.");

else { q->count--;

*x=q->entry[q->front];

q->front=(q->front+1)%MAXQUEUE; }

}

/* QueueSize: return the number of entries in the queue.

Pre: The queue q has been created.

Post: The function returns the number of entries in the queue q. */ int QueueSize(Queue *q)

{ return q->count;

}

/* Land: process a plane that is actually landing.

Pre: None.

Post: Process a plane p that is actually landing. */

void Land(Plane p, int curtime, int *nland, int *landwait)

{ int wait=curtime-p.tm;

printf("%3d: Plane %3d landed; stayed in queue for %d units.\n", curtime, p.id, wait);

++*nland;

*landwait+=wait;

}

/* Refuse: processes a plane when the queue is full.

Pre: None.

Post: Processes a plane wanting to use runway, but the queue is full.*/ void Refuse(Plane p, int *nrefuse, Action kind)

{ switch(kind)

{ case ARRIVE:

printf(" Plane %3d directed to another airport.\n", p.id);

break;

case DEPART:

printf(" Plane %3d told to try later.\n", p.id);

break; }

++*nrefuse;

}

/* Fly: process a plane that is actually taking off.

Pre: None.

Post: Process a plane p that is actually taking off. */

void Fly(Plane p, int curtime, int *ntakeoff, int *takeoffwait)

{ int wait=curtime-p.tm;

printf("%3d: Plane %3d took off; stayed in queue for %d units.\n", curtime, p.id, wait);

++*ntakeoff;

*takeoffwait+=wait;

}

/* Idle: updates variables for idle runway.

Pre: None.

Post: Updates variables for a time unit when the runway is idle. */ void Idle(int curtime, int *idletime)

{ printf ("%3d: Runway is idle.\n", curtime);

++*idletime;

}

/* Conclude: write out statistics and concludes simulation.

Pre: None.

Post: Writes out all the statistics and cincludes the simulation. */ void Conclude(int nplanes, int nland, int ntakeoff, int nrefuse, int landwait, int takeoffwait, int idletime, int endtime, Queue *pl, Queue *pt) { printf("\nSimulation has concluded after %d time units.\n", endtime);

printf("Total number of planes processed: %3d\n", nplanes);

printf(" Number of planes landed: %3d\n", nland);

printf(" Number of planes taken off: %3d\n", ntakeoff);

printf(" Number of planes refused use: %3d\n", nrefuse);

printf(" Number left ready to land: %3d\n", QueueSize(pl));

printf(" Number left ready to take off: %3d\n", QueueSize(pt));

if (endtime>0) printf(" Percentage of time runway idle: %6.2f\n", ((double) idletime/endtime)*100.0);

if (nland>0) printf(" Average wait time to land: %6.2f\n", (double) landwait/nland);

if (ntakeoff>0) printf(" Average wait time to take off: %6.2f\n", (double) takeoffwait/ntakeoff);

}

void main( )

{ Queue landing, takeoff, *pl=&landing, *pt=&takeoff;

Plane plane;

int curtime; /* current time; one unit = time for take off or landing */ int endtime; /* total number of time units to run */

double expectarrive; /* number of planes arriving in one unit */

double expectdepart; /* number of planes newly ready to take off */ int i; /* loop control variable */

int idletime=0; /* number of units when runway is idle */

int landwait=0; /* total waiting time for planes landed */

int nland=0; /* number of planes landed */

int nplanes=0; /* number of planes processed so far */

int nrefuse=0; /* number of planes refused use of airport */

int ntakeoff=0; /* number of planes taken off */

int pri; /* pseudo-random integer */

int takeoffwait=0; /* total waiting time for take off */

clrscr(); /* clear the screen */

CreateQueue(pl);

CreateQueue(pt);

nplanes=nland=ntakeoff=nrefuse=landwait=0;

Start(&endtime, &expectarrive, &expectdepart);

for (curtime=1; curtime<=endtime; curtime++)

{ pri=PoissonRandom(expectarrive);

for (i=1; i<=pri; i++) /* Add to landing queue */

{ NewPlane(&plane, &nplanes, curtime, ARRIVE);

if (QueueFull(pl)) Refuse(plane, &nrefuse, ARRIVE);

else Append(plane, pl); }

pri=PoissonRandom(expectdepart);

for (i=1; i<=pri; i++) /* Add to takeoff queue */

{ NewPlane(&plane, &nplanes, curtime, DEPART);

if (QueueFull(pt)) Refuse(plane, &nrefuse, DEPART);

else Append(plane, pt); }

if (!QueueEmpty(pl)) /* Bring plane to land */

{ Serve(&plane, pl);

Land(plane, curtime, &nland, &landwait); }

else if (!QueueEmpty(pt)) /* Allow plane to take off */

{ Serve(&plane, pt);

Fly(plane, curtime, &ntakeoff, &takeoffwait); }

else Idle(curtime, &idletime); }

Conclude(nplanes, nland, ntakeoff, nrefuse, landwait, takeoffwait, idletime, endtime, pl, pt);

getchar(); /* used to pause the screen before program return */

getchar();

}

6.思考与提高

a)类似的通讯录管理系统、仓库管理系统等均可按上述思路来解决。请同学们试着建立一个仓库管理程序,可以按货物编号或贵物名称查询仓库存储情况,也可增加或删除货物。

b)读栈顶元素的算法与退栈顶元素的算法有何区别?如果一个程序中要用到两个栈,为了不发生上溢错误,就必须给每个栈预先分配一个足够大的空间。若每个栈都预分配过大的存储空间,势必会造成系统空间紧张。如何解决这个问题?

c)若修改条件为空中尚有飞机盘旋时亦允许飞机起飞,程序应如何修改?若跑道数目不止一条,程序又应如何改进?

实验二非线性数据结构算法验证

1.实验目的与意义

1)掌握二叉树链式存储结构的定义及实现方法

2)掌握二叉树的前序、中序和后序遍历方法

3)掌握二叉树中插入结点、输出结点的方法

4)掌握二叉树的结点个数、叶子结点个数和树的深度的计算方法

5)掌握图的含义

6)掌握用邻接矩阵和邻接表的方法描述图的存储结构

7)理解并掌握深度优先遍历和广度优先遍历的存储结构

2.基本原理和方法

本实验涉及两类非线性数据结构。

二叉排序树要求每个结点的数据要大于左子树结点的数据,而且要小于等于右子树结点的数据。

深度优先遍历图的算法:首先访问指定的起始顶点v

0,从v

出发,访问v

的一个未

被访问国的邻接顶点w

1,在从w

1

出发,访问w

1

的一个未被访问的顶点w

2

,然后从w

2

发,访问w

2的一个未被访问的邻接顶点w

3

,依此类推,直到所有邻接点都被访问过为止。

广度优先遍历图的算法:首先访问指定的起始顶点v

0,从v

出发,访问v

的所有未

被访问的邻接顶点w

1,w

2

,…,w

k

,然后再依次从w

1

,w

2

,…,w

k

出发,访问所有未被访

问过的邻接结点,依此类推,直到所有邻接点都被访问过为止。

根据广度优先遍历的规则,在其算法实现中,借助一个队列g-queue来存放已被访问过的顶点。从指定顶点开始,每访问一个顶点,就将它入队并排在队尾,然后从队首取出一个顶点,访问该顶点的所有未被访问的邻接点,依此类推,直至队列为空且图中结点均被访问过为止。

3.主要仪器设备及耗材

安装有Turbo C++ 3.0运行环境的电脑,无耗材要求。

4.实验方案或技术路线

本实验含有两部分内容——二叉排序树的构造与遍历和图的遍历算法。

A.二叉排序树的构造与遍历

将各个模块分别用单个的函数实现,插入、删除都作为独立模块,在生成排序树的时候使用中序遍历生成。

B.图的遍历

此部分的算法独立性较强,因此可直接采用教材或讲义上的算法实现,但教材或讲义上的算法并非可执行的算法,故学生须自行进行算法上的转换。

图采用邻接表作存储结构,图的结构如右所示:

深度优先遍历次序为:①->②->④->⑤->⑥->③广度优先遍历次序为:①->②->③->④->⑤->⑥

1 2

3 4

6 5

5.实验内容及步骤

A.二叉排序树的构造与遍历部分——以教材或讲义上给出的程序为蓝本,由学生自行输入并验证程序结果

【参考程序】

#define L sizeof(struct treenode)

#define NEW(s) (treeptr *)malloc(s)

#include

typedef struct treenode

{ int t;

struct treenode *left, *right, *parent; } treeptr;

treeptr *locatenode(int s, treeptr *root)

{ if (root->t>s) if (root->left) return(locatenode(s, root->left));

else return(root);

else if (root->right) return(locatenode(s, root->right));

else return(root);

}

treeptr *insertentry(int s, treeptr *root)

{ treeptr *t1, *t2;

t1=NEW(L);

t1->left=t1->right=t1->parent=NULL;

t1->t=s;

if (!root) return(t1);

else { t2=locatenode(s, root);

if (t2->t<=s) t2->right=t1;

else t2->left=t1;

t1->parent=t2;

return(root); }

}

treeptr *instree(treeptr *root)

{ int s;

printf("\nInput the entry value to be inserted:");

scanf("%d",&s);

return (insertentry(s, root));

}

void delnode(treeptr *a, treeptr *b, treeptr *c)

{ if (a->left==b) a->left=c;

else a->right=c;

c->parent=a; /* 此函数的作用是将*a的孩子*b用结点*c替代 */

}

treeptr *delentry(treeptr *s, treeptr *root)

{ treeptr *p,*r;

if (s->parent) /* 被删结点有双亲 */

{ p=s->parent;

if (s->left) /* 被删结点有左子树 */

{ r=s->left;

while (r->right) r=r->right; /* 找左子树中的最右结点 */

if (r==s->left) r->right=s->right; /* 最右结点恰为被删结点左孩子 */ else { delnode(r->parent,r,r->left);

r->left=s->left;

r->right=s->right; }

delnode(p,s,r); } /* 最右结点替代被删结点 */

else delnode(p,s,s->right); }/* 无左子树,取右孩子替代 */

else /* 被删结点无双亲 */

{ if (s->left) { r=s->left;

while (r->right) r=r->right;

if (r==s->left) r->right=s->right;

else { delnode(r->parent,r,r->left);

r->left=s->left;

r->right=s->right; }

r->parent=NULL;

root=r; }

else { root=s->right;

root->parent=NULL; }

}

free(s);

printf("Deletion succeeded!");

if (!root) printf(" The tree is empty now!");

return(root);

}

treeptr *searchtree(int s, treeptr *root)

{ while (root) if (root->t==s) return(root);

else if (root->tright);

else return (root->left);

}

treeptr *deltree(treeptr *root)

{ int s;

treeptr *p;

if (!root) { printf("\nThe tree is empty!");

return root; }

printf("\nInput the entry value to be deleted, or -9999 to cancel:"); scanf("%d",&s);

p=searchtree(s, root);

while (!p)

{ printf("\nThe number does not exist. Input again or -9999 to cancel:"); scanf("%d",&s);

if (s!=-9999) p=searchtree(s, root);

else { printf("\nDeletion canceled.\n");

return root; }

}

return (delentry(p, root));

}

void preorder(treeptr *root)

{ if (root) { printf("%3d",root->t);

preorder(root->left);

preorder(root->right); }

}

void inorder(treeptr *root)

{ if (root) { inorder(root->left);

printf("%3d",root->t);

inorder(root->right); }

}

void postorder(treeptr *root)

{ if (root) { postorder(root->left);

postorder(root->right);

printf("%3d",root->t); }

}

int menu()

{ int a;

printf("\nInput a number to do what you want: ");

printf("\n1. Create a Binary Search Tree/Add an entry into a Binary Search Tree");

printf("\n2. Delete an entry from the Binary Search Tree");

printf("\n3. Traverse the Binary Search Tree by Preorder");

printf("\n4. Traverse the Binary Search Tree by Inorder");

printf("\n5. Traverse the Binary Search Tree by Postorder");

printf("\n0. Exit the program");

printf("\nInput a number to do what you want: ");

scanf("%d", &a);

return a;

}

void cls()

{ getchar();

getchar();

clrscr();

}

main()

{ treeptr *root=NULL;

int a;

clrscr();

do { a=menu();

switch (a)

{ case 0: break;

case 1: { root=instree(root);

clrscr();

break; }

case 2: { root=deltree(root);

cls();

break; }

case 3: { if (root) preorder(root);

else printf("\nThe tree is NULL!\n");

cls();

break; }

case 4: { if (root) inorder(root);

else printf("\nThe tree is NULL!\n");

cls();

break; }

case 5: { if (root) postorder(root);

else printf("\nThe tree is NULL!\n");

cls();

break; }

default: clrscr(); }

} while(a!=0);

}

B.图的遍历部分——建立一个包含六个结点的图,并实现该图的深度优先和广度优先遍历

【参考程序】

#define maxnode 40

#include

typedef struct st_arc

{ int adivex;

int weight;

struct st_arc *nextarc; }arcnode;

typedef struct

{ int vertex;

struct st_arc *firstarc; }vernode;

typedef vernode adjlist[maxnode];

typedef struct

{ int front;

int rear; } qqtype;

void initiate(qqtype *q) /*初始化队列*/

{ q->front=q->rear=-1;

}

int enter(qqtype *q, int x) /*进队操作*/

{ if (q->rear==maxnode-1) return(-1);

else { q->rear++;

q->queue[q->rear]=x;

return(0); }

}

int delete(qqtype *q) /*出队操作*/

{ if (q->front==q->rear) return(NULL);

else return(q->queue[++q->front]);

}

int empty(qqtype *q) /*判断队空否*/

{ if (q->front==q->rear) return(-1);

return(0);

}

void dfs(adjlist g, int k, int visited[])

{ arcnode *p;

int w;

visited[k]=1;

printf("%d", g[k].vertex);

p=g[k].firstarc;

while(p!=NULL)

{ w=p->adjvex;

if(visited[w]==O)

dfs(g, w, visited);

p=p->nextarc; }

}

void bfs(adjlist g, int k, int visited[])

{ arcnode *p;

int w;

initiate(g);

visited[k]=1;

printf("%d", g[p->adjvex].vertex);

enter(g, k);

while (empty(g))

{ w=delete(g);

p=g[w].firstarc;

while(p)

{ if (visited[p->adjvex]==0)

{ printf("%d", g[p->adjvex].vertex);

visited[p->adjvex]=1;

enter(g.p->adjvex); }

p=p->nextarc; }

}

}

void trave(adjlist g, int n)

{ int i, visited[maxnode]; /*数组visited标志图中的定点是否已被访问*/ for(i=O; i

酶工程实验(2010)

酶工程实验(2010)

实验一植物体内过氧化物酶活性的测定 一、目的 过氧化物酶普遍存在于植物组织中,其活性与植物的代谢强度及抗寒、抗病能有一定关系,它在代谢中调控IAA水平,并可作为一种活性氧防御物质,消除机体内产生的H2O2的毒害作用。故在科研上常加以测定。 二、原理 在过氧化氢存在下,过氧化物酶能使愈创木酚氧化,生成茶竭色4-邻甲氧基苯酚,在470nm 波长处测定生成物的吸光度(A)值,即可求出该酶活性。 三、材料、仪器设备及试剂 1. 材料:植物叶片 2. 仪器设备:分光光度计;离心机;离心管;研钵;移液管;移液管架;试管;试管架;洗耳球。 3. 试剂及配制: 0.1mol·L-1磷酸缓冲液(pH7)。

反应液(100ml 0.1mol·L-1磷酸缓冲液(pH6)中加入0.5ml 愈创木酚、1ml 30﹪H2O2,充分摇匀)。 四、实验步骤 1. 酶液提取 称取植物叶片1g,剪碎置于已冷冻过的研钵中,加入少量石英砂,分两次加入总量为10ml pH7磷酸缓冲液,研磨成匀浆后,倒入离心管中,在8000 r / min离心15min,上清液即为粗酶提取液,倒入小试管低温下放置备用。 2. 酶活性测定 吸取反应液3ml 于试管中,加入酶提取液0.02ml(视酶活性可增减加入量),迅速摇匀后倒入光径1cm的比色杯中,以未加酶液之反应液为空白对照,在470nm波长处,以时间扫描方式,测定3min内吸光度值变化,取线性变化部分,计算每分钟吸光度变化值(△A470)。 五、酶活性计算 按下式计算酶的相对活性 △A470 ×酶提取液总量(ml)

酶活性(△A470·g-1Fw·min-1)= ------------------- 样品鲜重(g)×测定时酶液用量(ml) 实验二尿液淀粉酶活力测定(Winslow氏法) 原理】 临床上通常用Winslow氏法测定尿或血清中淀粉酶活力.该法对 淀粉酶活性单位的规定是:在37℃,30分钟,恰好能将0,1%淀粉 溶液1ml水解(指加入碘液后不再呈蓝色或红色)的酶量定为一个活 力单位. 试剂和器材】 1,0.9%氯化钠 2,0.1%淀粉 3,碘化钾-碘溶液(20克碘化钾和10克碘溶于100毫升水中,使 用前稀释10倍)

大地测量学实验指导书汇总

《大地测量学基础》实验指导书 XXX大学土木工程系测绘工程教研室 2010年7月

第一部分:实验与实习须知 控制测量学是测绘工程专业一门践性很强的专业主干课程,其实验与实习是教学中必不可少的重要环节。只有通过实验与实习,才能巩固课堂所学的基本理论,进而掌握仪器操作的基本技能和测量作业的基本方法,并为深入学习测绘专业理论和有关专业知识打下基础。在进行实验之前,必须明确实验的基本规定,了解仪器的借还手序及仪器的保护、保养等知识,做到爱护仪器,达到实习之目的,防患于未然。 实验与实习规定 1.在实验或实习之前,必须复习教材中的有关内容,认真仔细地预习本指导书,以明确目的、了解任务、熟悉实验步骤和过程、注意有关事项并准备好所需文具用品。 2.实验或实习分小组进行,组长负责组织协调工作,办理所用仪器工具和借领和归还手续。 3.实验或学习应在规定的时间进行,不得无故缺席或迟到早退;应在指定的场地进行,不得擅自改变地点或离开现场。 4.必须遵守“测量仪器工具的借领与使用规则”和“测量记录与计算规则”。 5.应该服从教师的指导,严格按照本指导书的要求认真、按时、独立地完成任务。每项实验或实习,都应取得合格的成果,提交书写工整规范的实验报告或实习记录,经指导教师审阅同意后,才可交还仪器工具,结束工作。 6.在实验或实习过程中,还应遵守纪律,爱护现场的花草、树木和农作物,爱护周围的各种公共设施,任意砍折、踩踏或损环者应予赔偿。 测量仪器工具的借领与使用规则 对测量仪器工具的正确使用、精心爱护和科学保养,是测量人员必须具备的素质和应该掌握的技能,也是保证测量成果质量、提高测量工作效率和延长仪器工具使用寿命的必要条件。在仪器工具的借领与使用中,必须严格遵守下列规定。 一、仪器工具的借领 1.在指定的地点凭学生证办理借领手续,以小组为单位领取仪器工具。 2.借领时应该当场清点检查。实物与清单是否相符,仪器工具及其附件是否齐全,背带及提手是否牢固,脚架是否完好等。如有缺损,可以补领或更换。 3.离开借领地点之前,必须锁好仪器箱并捆扎好各种工具;搬运仪器工具时,必须轻取轻放,避免剧烈震动。 4.借出仪器工具之后,不得与其他小组擅自调换或转借。

酶工程习题

第一章 习题: 1、根据分子中起催化作用得主要组分得不同,酶可以分为_______与_______两大类别。 2、核酸类酶分子中起催化作用得主要组分就是________,蛋白类酶分子中起催化作用得主要组分就是___________。 3、进行分子内催化得核酸类酶可以分为_______,_______。 4、酶活力就是_____得量度指标;酶得比活力就是__________得量度指标;酶转换数就是________得量度指标。 5、某酶得分类编号就是EC2、2、1、10,其中EC就是指_______。此酶属于_______类型。 6、醇脱氢酶参与得反应表明无氧气参与( ) 7、酶工程就是_____________得技术过程。 8、酶得转换数就是指 A、酶催化底物转化为产物得数量 B、每个酶分子催化底物转化为产物得分子数 C、每个酶分子每分钟催化底物转化为产物得分子数 D、每摩尔酶催化底物转化为产物得分子数 9、酶得改性就是指____________________________、 第二章 1、名词解释 转录、组成型酶、酶得反馈阻遏、分解代谢物阻遏、生长偶联型 2、微生物产酶模式可以分为同步合成型________、中期合成型、________。 3、可以通过添加( )使分解代谢物阻遏作用解除。 A、诱导物 B 激活剂C、cAMP D、ATP 4、在酶发酵过程中添加表面活性剂可以 A、诱导酶得生物合成 B、阻遏酶得生物合成 C、提高酶活力 D、提高细胞通透性 5、为什么滞后合成型得酶要在细胞生长一段时间甚至进入平衡期以后才开始合成? 6、操纵子就是由_________、_______与启动基因组成得。 7______________与______就是影响酶生物合成模式得主要因素。 8、RNA前体得加工就是指____________ ?6、从如下实验方法与结果分析酶生物合成得调节作用。 实验方法:将大肠杆菌细胞接种于营养肉汤培养基中,于37°C振荡培养,当OD550为0、3时,经培养液分装到4个小三角瓶中,每瓶17ml培养液。于4个三角瓶分别添加 (A)3ml无菌水 (B)1ml乳糖溶液(0、1mol/L)与2ml无菌水 (C)1ml乳糖溶液(0、1mol/L)、1ml葡萄糖溶液(0、1mol/L)与1ml无菌水 (D) 1ml乳糖溶液(0、1mol/L)、1ml葡萄糖溶液(0、1mol/L)与1mlcAMP钠盐溶液 ?然后在相同得条件下于37°C振荡培养2h,分别取样测定β半乳糖苷酶得活力。 ?实验结果(A)与(C)瓶得β半乳糖苷酶得活力为0,(B)瓶与(D)瓶β半乳糖苷

酶工程实验大纲

湖北大学 酶工程实验 (0818800193)实验教学大纲 (第2版) 生命科学学院 生化教研室 2014年7月

前言 课程名称:酶工程实验实验学时:16学时 适用专业:生物工程课程性质:必修 一、实验课程简介 酶工程是生物工程的主要内容之一,是现代酶学和生物工程学相互结合而发展起来的一门新的技术学科。它将酶学、微生物学的基本原理与化工、发酵等工程技术有机结合起来,并随着酶学研究的迅速发展,特别是酶的广泛应用而在国民生产生活中日益发挥着越来越重要的作用。酶工程实验课是生物工程等本科实验教学的一个重要组成部分,通过实验教学可以加强学生对酶工程基本知识和基本理论的理解,掌握现代酶学与相关技术的有关的基本的实验原理与技能。在实验过程中要求学生自己动手,分析思考并完成实验报告。酶工程实验性质有基础性、综合性、设计(创新)性三层次。 二、课程目的 本实验课程主要根据酶工程的三大块内容即酶的生产、酶的改性与酶的应用来设计安排实验,通过这些实验内容,使学生深入理解酶工程课程的基本知识;巩固和加深所学的基本理论;掌握酶工程中基本的操作技能。同时,通过实验培养学生独立观察、思考和分析问题、解决问题和提出问题的能力,养成实事求是、严肃认真的科学态度,以及敢于创新的开拓精神;并在实验中进一步提高学生的科学素养。 三、考核方式及成绩评定标准 考核内容包括实验过程中的操作情况,实验记录及结果的准确性,实验报告的书写及结果分析,思考题的回答情况,仪器设备的使用情况及遵守实验室规章制度的情况等,根据这些方面进行成绩评判和记录,综合给出实验总成绩。 四、实验指导书及主要参考书 1.魏群:生物工程技术实验指导,高等教育出版社,2002年8月。 2.禹邦超:酶工程(附实验),华中师范大学出版社,2007年8月 五、实验项目

电工学实验指导书汇总Word版

电工学实验指导书 武汉纺织大学 实验一直流电路实验 (1)

实验二正弦交流电路的串联谐振 (4) 实验三功率因数的提高 (6) 实验四三相电路实验 (9) 实验五微分积分电路实验 (12) 实验六三相异步电动机单向旋转控制 (14) 实验七三相异步电动机正、反转控制 (16) 实验八单相桥式整流和稳压电路 (18) 实验九单管交流放大电路 (19) 实验十一集成运算放大器的应用 (24) 实验十二组合逻辑电路 (26) 实验十三移位寄存器 (29) 实验十四十进制计数器 (33)

实验一直流电路实验 一、实验目的: 1.验证基尔霍夫定律 2.研究线性电路的叠加原理 3.等效电源参数的测定 二、实验原理: 1.基尔霍夫定律是电路理论中最重要的定律之一,它阐明了电路整体结构必须遵守的定律,基尔霍夫定律有两条即电流定律和电压定律。 电流定律:在任一时刻,流入电路中任一节点的电流之和等于流出该节点的电流之和,换句话来说就是在任一时刻,流入到电路中任一节点的电流的代数和为零,即∑I=0。 电压定律:在任一时刻,沿任一闭合回路的循行方向,回路中各段电压降的代数和等于零,即 ∑U=0。 2.叠加原理:n个电源在某线性电路共同作用时,它们在电路中任一支路中产生的电流或在任意两点间所产生的电压降等于这些电源单独作用时,在该部分所产生的电流或电压降的代数和。三、仪器设备及选用组件箱: 1.直流稳压电源 GDS----02 GDS----03 2.常规负载 GDS----06 3.直流电压表和直流电流表 GDS----10 四、实验步骤: 1.验证基尔霍夫定律 按图1—1接线,(U S1、U S2分别由GDS---02,GDS---03提供)调节U SI=3V,U S2=10V,然后分别用电流表测取表1—1中各待测参数,并填入表格中。 2.研究线性电路的叠加原理 ⑴将U S2从上述电路中退出,并用导线将c、d间短接,接入U S1,仍保持3V,测得各项电流,电压,把所测数据填入表1—2中;

动物繁殖问题数学建模实验m精编b程序修订稿

动物繁殖问题数学建模实验m精编b程序 内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)

问题: 谋农场饲养的某种动物所能达到的最大年龄为15岁,将其分为三个年龄组:第一组0~5岁;第二组6~10岁;第三组11~15岁。动物从第二个年龄组开始繁殖后代,第二个年龄组的动物在其年龄段平均繁殖4个后代,第三个年龄组的动物在其年龄段平均繁殖3个后代。第一年龄组和第二年龄组的动物能顺利进入下一个年龄组的存活率分别为0.5和0.25。假设农场现有三个年龄段的动物各有1000头。 (1)编程,计算5年后、10年后、15年后、20年后各年龄段动物数量,50年后农场三个年龄段的动物的情况会怎样? x0=[1000; 1000; 1000]; L=[0 4 3; 1/2 0 0; 0 1/4 0]; x1=L*x0 %计算5年后农场中三个年龄段动物的数量 x2=L*x1 %计算10年后农场中三个年龄段动物的数量 x3=L*x2 %计算15年后农场中三个年龄段动物的数量 x4=L*x3 %计算20年后农场中三个年龄段动物的数量 x1 = 7000 500 250 x2 = 2750 3500

125 x3 = 14375 1375 875 x4 = 1.0e+003 * (2)根据有关生物学研究结果,对于足够大的时间值k ,有)1(+k X ≈1λ)(k X (1λ是莱斯利矩阵L 的唯一正特征值)。请检验这一结果是否正确,如果正确给出适当的k 的值。 >> eig(L) %计算Leslie 矩阵的特征值 ans = 1.5000 -1.3090 -0.1910 即矩阵L 的唯一正特征值 1.5λ= %exam01_17.m x=[1000; 1000; 1000]; d1=1.5; L=[0 4 3; 1/2 0 0; 0 1/4 0]; y=L*x; y1=d1*x; k=1; while max(abs(y-y1))>0.1 x=y; y=L*x;

酶工程实验一

实验目的:①、了解掌握双酶法制备淀粉糖。 ②、掌握用3,5-二硝基水杨酸法测定葡萄糖含量的方法。 目前国内外淀粉糖的生产大都采用双酶法。双酶法生产淀粉糖是以淀粉为原料,先经α-淀粉酶液化成糊精,再用糖化酶催化生成淀粉糖浆。α-淀粉酶又称为液化型淀粉酶,它作用于淀粉时,随机地从淀粉分子内部切开α-1,4葡萄糖苷键,使淀粉水解成糊精和一些还原糖。糖化酶又称为葡萄糖淀粉酶,它作用于淀粉时,从淀粉分子的非还原端开始逐个地水解α-1,4葡萄糖苷键,生成葡萄糖和一些低聚糖。且糖化酶还有一定的水解α-1,6葡萄糖苷键和α-1,3葡萄糖苷键的能力。 1.仪器:恒温水浴器、烧杯、玻璃棒、天平、量筒及其他常规仪器用具。 2.试剂:生粉、α-淀粉酶、糖化酶、0。1mol/L HCI、无水CaCl2、。碘液、活性炭。1.液化: 取12g生粉,加150mL水配制成淀粉浆,加入0.1gCaCl2,2gα-淀粉酶,在75℃温度下保温45min,使淀粉液化成糊精。液化中可每隔3分钟搅拌一下, 每隔15分钟用碘反应检测,观察颜色变为褐色或棕色的情况,记录观察结果。45min后升温至100℃并保温10min。 2.糖化: 将液化淀粉液冷却至55℃~60℃,用0.1m1/LHCl调pH至4.5~5.0,加入0.5g糖化酶,将水浴槽温度升至60℃,保温糖化过夜,使糊精转变为葡萄糖和低聚糖(淀粉糖浆)。 3.脱色: 淀粉糖浆中加入1g活性炭,在80℃下搅拌15min后,抽滤,得浅黄色透明糖液。 4. 所得糖液中葡萄糖含量的测定。取1 m1滤液,加水稀释到10ml,用3,5-二硝基水杨酸法测定葡萄糖含量。

a=(0.406-0.0648)/0.5341=0.64 b=(0.395-0.0648)/0.5341=0.62 实验现象观察 1 6 7 思考题: 1液化时加入0.1gCaCl2的目的是什么? 答:钙离子有提高热稳定性的作用。 2液化后冷却和调pH的目的是什么? 答:盐酸容易挥发,所以要冷却。 调ph是为了提供酶催化的环境。

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

操作系统实验指导书汇总

操作系统实验指导书 东北大学软件学院 2008年10月

实验要求 (1)预习实验指导书有关部分,认真做好实验的准备工作。 (2)实验中及时分析记录。 (3)按指导书要求书写实验报告,提交打印版(A4)。 实验的验收将分为两个部分。第一部分是上机操作,包括检查程序运行和即时提问。第二部分是提交的实验报告。

实验一进程调度(4学时) 一、实验目的 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理机数时,就必须依照某种策略来决定哪些进程优先占用处理机。本实验模拟在单处理机情况下的处理机调度,帮助学生加深了解处理机调度的工作。 二、实验类型 设计型。 三、预习内容 预习课本处理机调度有关内容,包括进程占用处理机的策略方法。 四、实验内容与提示 本实验中共有两个实验题。 第一题:编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。 <一>最高优先级优先调度算法 1)优先级简介 动态优先数是指在进程创建时先确定一个初始优先数,以后在进程运行中随着进程特性的改变不断修改优先数,这样,由于开始优先数很低而得不到CPU 的进程,就能因为等待时间的增长而优先数变为最高而得到CPU运行。 例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。 2)详细设计 优先权调度算法: 1、设定系统中有五个进程,每一个进程用一个进程控制块( PCB)表示,

进程队列采用链表数据结构。 2、进程控制块包含如下信息:进程名、优先数、需要运行时间、已用 CPU时间、进程状态等等。 3、在每次运行设计的处理调度程序之前,由终端输入五个进程的“优 先数”和“要求运行时间”。 4、进程的优先数及需要的运行时间人为地指定。进程的运行时间以时 间片为单位进行计算。 5、采用优先权调度算法,将五个进程按给定的优先数从大到小连成就 绪队列。用头指针指出队列首进程,队列采用链表结构。 6、处理机调度总是选队列首进程运行。采用动态优先数办法,进程每 运行一次优先数减“1”,同时将已运行时间加“1”。 7、进程运行一次后,若要求运行时间不等于已运行时间,则再将它加 入就绪队列;否则将其状态置为“结束”,且退出就绪队列。 8、“就绪”状态的进程队列不为空,则重复上面6,7步骤,直到所 有进程都成为“结束”状态。 9、在设计的程序中有输入语句,输入5个进程的“优先数”和“要求 运行时间”,也有显示或打印语句,能显示或打印每次被选中进程 的进程名、运行一次后队列的变化,以及结束进程的进程名。10、最后,为五个进程任意确定一组“优先数”和“要求运行时间”,运行并调试所设计的程序,显示或打印出逐次被选中进程的进程名及其进程控制块的动态变化过程。

酶工程的知识点总结.pdf

酶工程的知识点总结 课题3 探讨加酶洗衣粉的洗剂效果 一、实验原理 1.加酶洗衣粉是指含有酶制剂的洗衣粉,目前常用的酶制剂有四类:蛋白酶、脂肪酶、淀粉酶和纤维素酶,其中,应用最广泛、效果最明显的是碱性蛋白酶和碱性脂肪酶。b5E2RGbCAP 2.碱性蛋白酶能将血渍、奶渍等含有的大分子蛋白质水解成可溶性的氨基酸或小分子的肽, 使污迹从衣物上脱落。脂肪酶、淀粉酶和纤维素酶也能分别将大分子的脂肪、淀粉和纤维素水解为小分子物质,使洗衣粉具有更好的去污能力。p1EanqFDPw 3.在本课题中,我们主要探究有关加酶洗衣粉的三个问题:一是普通洗衣粉和加酶洗衣粉 对衣物污渍的洗涤效果有什么不同;二是在什么温度下使用加酶洗衣粉效果最好,三是添加不同种类的酶的的洗衣粉,其洗剂效果有哪些区别。DXDiTa9E3d 二、实验步骤 1探究用加酶洗衣粉与普通洗衣粉洗涤的效果的不同 ①在2个编号的烧杯里,分别注入500mL清水。②取2块大小相等的白棉布,用滴管在每 块白布上分别滴上等量的墨水,分别放入烧杯里,用玻璃棒搅拌。③将2个烧杯分别放入同等温度的温水中,保温5分钟。④称取5克加酶洗衣粉和5克普通洗衣粉2份,分别放入2个烧杯中,用玻璃棒均匀搅拌。保温10分钟。⑤观察并记录2个烧杯中的洗涤效果RTCrpUDGiT 2探究用加酶洗衣粉洗涤的最佳温度条件 ①在3个编号的烧杯里,分别注入500mL清水。②取3块大小相等的白棉布,用滴管在每 块白布上分别滴上一滴食用油、鸡血、牛奶,分别放入烧杯里,用玻璃棒搅拌。③将3个烧杯分别放入50摄氏度的热水、沸水和冰块中,保温5分钟。④称取5克加酶洗衣粉3份,分别放入3个烧杯中,用玻璃棒均匀搅拌。保温10分钟。⑤观察并记录3个烧杯中的洗涤效果。3探究不同种类的加酶洗衣粉洗涤的效果5PCzVD7HxA 污染物蛋白酶洗衣粉脂肪酶洗衣粉复合酶洗衣粉普通洗衣粉 油渍 汗渍 血渍 观察并记录四种洗衣粉分别洗涤三种污染的洗涤效果。三、注意事项 1.变量的分析和控制 影响加酶洗衣粉洗涤效果的因素有水温、水量、水质、洗衣粉的用量,衣物的质料、大 小及浸泡时间和洗涤的时间等。在这些因素中,水温是我们要研究的对象,而其他因素应在实验中保持不变。选择什么样的水温进行实验需要实验者根据当地一年中的实际气温变化来 确定水温,通常情况下,冬季、春季、秋季和夏季可分别选取 5 ℃、15 ℃、25 ℃和35 ℃的水温,因为这4个水温是比较符合实际情况的,对现实也有指导意义。jLBHrnAILg 2.洗涤方式和材料的选择。 在洗涤方式中有机洗和手洗两种方式,应考虑其中哪一种比较科学?哪一种更有利于控 制变量?再有,洗衣机又可以分为半自动和全自动两种,相比之下,采用全自动洗衣机比较好,并且应该尽量使用同一型号小容量的洗衣机,其机械搅拌作用相同。关于洗涤材料的选择也有一些讲究。用衣物作实验材料并不理想,这是因为作为实验材料的衣物,其大小、颜 色、洁净程度等应该完全一致,而这并不容易做到;此外,人为地在衣物上增加污物,如血 渍、油渍等,也令人难以接受。因此,选用布料作为实验材料比较可行。在作对照实验时,

动物繁殖学知识点整理

1.繁殖(生殖):是指有生命的个体以某种方式繁衍与自己性状相似的后代来延续生命的过程。 2.动物繁殖学:是研究动物生殖活动及其调控规律和调控技术的科学,是加强畜禽品种改良、保证畜牧业快速发展的重要手段,是现代动物科学或畜枚科学中研究最活跃的学科之一。研究内容涵盖了繁殖生理、繁殖技术、繁殖管理、繁殖障碍等多个方面的内容,既包括发情鉴定、人工授精、胚胎移植、妊娘诊断等用技术,也包括动物克隆、胚胎干细胞转基因等当今生命科学领域研究的热点和前沿技术,具有内容丰富、知识更新快实践性强等特点。动物繁殖学的研究意义:提高生产效率;提高畜种质量; 减少生产资料的占有量; 3.雄性生殖器官分化:①生殖腺发育形成睾丸,生殖腺内上皮细胞排列形成精细管索一睾丸网②中肾管、附争管和输精管一精囊腺、前列腺和尿道球腺③生殖结一阴茎④缪勒斯管退化,形成未发育的子宫台 雌性生殖器管的分化:①生殖腺发育形成卵巢,生殖腺表面部分形成皮质索,中央部分形成髓质索②皮质索一原始卵泡③缪勒斯管一子宫、输卵管、阴道。 4.雄性的生殖器官及机能:组成,睾丸、附睾、输精管、副性腺、尿生殖道、阴茎、阴囊。 睾丸:是雄性动物的生殖腺。卵圆形或长卵圆形,分为游离缘和附着缘(附睾附着侧) 隐睾: 动物出生或成年后睾丸未能进入阴囊,仍留在腹腔内,该动物不做种用。 睾丸的组织结构:睾丸表面被以浆膜,即固有鞘膜,其内 为致密结缔组织构成的睾丸白膜,睾丸白膜从睾丸头向 睾丸实质部伸入结缔组织索,构成睾丸纵隔,向四周伸 出的放射状结缔组织小梁,为中隔,将睾丸分成许多睾 丸小叶,每个小叶内由2-3条精细管组成,精细管在 小叶顶端汇合成直细管,形成睾丸网,盘曲成附睾头。 精细管:是精子产生的场所,其内充满液体,精细管的管 壁由外向内为结缔组织纤维、基膜和复层的生殖上皮 (生精细胞和支持细胞)。 睾丸的功能:①合成并分泌雄激素:精细管之间的间质细 胞分泌雄激素,精细管管壁的支持细胞分泌抑制素、激活素等;②精子生成:由精细管生殖上皮的生殖细胞生成; 睾丸支持细胞的主要作用:①参与形成血睾屏障,创造了相对稳定的生精环境。②支持生精细胞,促进生精细胞转位及精子释放;③分泌蛋白质及细胞因子;④营养生精细胞 附睾:附着于睾丸的附着缘,分为头、体和尾;附睾头由13-20条睾丸输出管组成。机能:①促进精子成熟②吸收作用③运输作用④贮存作用(微酸环境(pH=6.2-6.8)、高渗透压(400)、低温) 阴囊:具有温度调节能力,保护精子正常生成。 输精管:参与形成精液;射精时其强有力的收缩作用使精子射出。 副性腺:由精囊腺、前列腺和尿道球腺组成。精囊腺和输精管共同开口于尿生殖道骨盆部精阜。前列腺由体部和扩散部组成。犬无尿道球腺。副性腺的机能:①冲洗尿生殖道(尿道球腺的分泌物先排出,冲洗残留的尿液)②稀释、营养、活化和保护精子③运送精子④形成阴道栓,防止精液倒流(尿道球腺分泌物的凝固作用,形成阴道栓,防止精液倒流。) 尿生殖道:尿生殖道是精液和尿液的共同通道。由骨盆部和阴茎部组成。其中的精阜是输精管、精囊腺、前列腺的共同开口。 阴茎和包皮:阴茎为粗细不等的长圆锥形,主要由海绵体组成,内有纤维组织和毛细血管,勃起时可增大数倍。包皮是双层鞘囊,分为内包皮和外包皮,猪有包皮憩室. 5.雌性动物的生殖器官及机能:卵巢、输卵管、子宫、阴道、外阴部

酶工程实验试题及答案

1、酶的固定化方法:吸附法、包埋法、共价结合法、热处理法 2、提取酶的有机溶剂有:甲醇、乙醇、丙醇、丙酮、异丙醇、 3、酶生产的主要方式:固体发酵、液体深层通气发酵、固定化细胞或固定化原生质体发酵 4、酶的抽提剂有:稀酸、稀碱、稀盐、稀有机溶剂等 5、测定酶蛋白含量的方法: 凯氏定氮法、双缩尿法、Folin 酚法、紫外法、色素结合法、BCA法、胶体金测定法 6、影响酶活力的主要因素:温度、PH、底物浓度、酶浓度、抑制剂、激活剂 7、包埋固定化酶的凝胶有:聚丙烯酰胺、聚丙烯醇、光敏树脂、琼脂、明胶、海藻酸钙 8、酶的回收率:是指直接测定的固定化酶的活力占固定化之前的活力的百分比。 9、纯化倍数:就是经过纯化后得到的比活力与纯化前比活力之间的比值。 10、盐析的原理:蛋白质溶液在一定浓度范围内,加入无机盐,随着盐浓度增大,蛋白质的溶解度增大,但当盐浓度增到一定限度后,蛋白质将从溶液中析出。 11、在酶的反应过程中如何确保酶的最适反应温度和最适pH值。 保证最适温度的方法:通过发酵罐的热交换设施,控制冷源或热源流量;通过曲室的通风和加热设备控制。保证最适pH的方法:加酸或加碱,加碳源或氮源物质。 12、在发酵产酶过程中的准备工作: 收集筛选菌种,菌种保藏,细胞活化,扩大培养,培养基的配置,对发酵条件的控制。 13、为什么在测酶活实验中要连续不断的测酶活和酶蛋白含量 因为酶的活性会受温度和PH值的影响 14、终止酶反应的方法: 1、迅速升高温度; 2、加入强酸、强碱、尿素、乙醇等变性剂; 3、加入酶抑制剂; 4、调节反应液pH值。 15、固定化的优点: 1、可反复使用,稳定性高; 2、易与底物和产物分开,便于分离纯化; 3、可实现连续生产,提高效率。 16、培养基的成分:碳源、氮源、无机盐、生长因素、水。 17、菌种保藏方法: 1、斜面低温保藏法 2、液体石蜡油保藏法 3、砂土管保藏法 4、真空冷冻干燥法 5、液氮超低温保藏法。 18、发酵产酶的操作过程:配置培养基、分装、灭菌(112℃—115℃,20min)、孢子悬液(将无菌水加入斜面培养基)、接种、培养(32℃,180r/min,培养72h) 19、测定酶活的方法: 1、在一定时间内,让适量的底物与酶在最适合条件下; 2、加入酶抑制剂或升高温度等方法快速终止酶反应; 3、加一定量的显色剂与底物反应,测定液体的吸光度; 4、根据吸光度值计算出酶活 20、壳聚糖酶如何筛选:采用透明圈法,透明圈法直观、方便、根据壳聚糖不溶于水,以壳聚糖为唯一碳源,培养基浑浊。如果有该酶存在,即可降解壳聚糖为壳寡糖,壳寡糖容易被分解吸收,所以形成透明圈,从而可筛选出产生壳聚糖酶的菌株21、产壳聚糖酶初筛平板有什么现象,为什么 会出现透明圈,其原因是根据壳聚糖不溶于水,以壳聚糖为唯一碳源,培养基浑浊。如果有该酶存在,即可降解壳聚糖为壳寡糖,壳寡糖容易被分解吸收,所以形成透明圈 22、酶反应器: 分批式搅拌罐反应器、连续流搅拌罐反应器、填充床反应器、流化床反应器、模型反应器、鼓泡塔反应器 23、对产酶的菌种的要求是: 1、产酶量高;2、繁殖快,发酵周期短;3、产酶稳定性好,不易退化,不易被感染;4、能够利用廉价的原料,容易培养和管理;5、安全可靠,非致病菌。 24、在使用离心机时应注意事项 25、尿酶提取过程中为什么要在冰浴中进行 在冰浴中进行可以使尿酶处于低温条件下,低温能降低酶的活性,但不破坏酶的活性,在适合的温度下可恢复酶的活力 26、填充床的制备及应用的要点 装柱——平衡——应用——检测 装柱:均匀、无裂缝、无气泡、平整;平衡:1—2倍柱床体积缓冲液;应用:3%尿素溶液; 检测:定性:纳氏试剂(黄色或棕红色沉淀)——定量:取20ml流出液,用0.05mol/L标准HCL滴定(加2—3滴混合指示剂)

C语言实验指导书(刘联海20131106)

《C语言程序设计》实验指导书

目录 实验1 C语言编程环境和运行C程序的方法 (1) 实验2 简单的顺序结构程序设计 (3) 实验3 数据类型和表达式 (5) 实验4 选择结构程序设计 (7) 实验5 循环结构程序设计(1) (10) 实验6 循环结构程序设计(2) (13) 实验7 数组 (16) 实验8 函数 (18)

实验1 C语言编程环境和运行C程序的方法 一、实验目的 1、熟悉Visual C6.0集成开发环境的使用方法; 2、熟悉C语言程序从编辑、编译、连接到最后运行得到结果的过程及各过程的作用; 3、了解C语言程序的结构特征与书写规则,能够编写简单的C程序; 4、初步理解程序调试的思想,能找出并改正C程序中的语法错误。 二、实验内容 1、熟悉上机环境 ⑴熟悉VC++6.0集成环境,重点是其中常用菜单、工具按钮的功能; ⑵在D盘建立一个自己的工作文件夹,文件夹以班名+学号后两位+姓名来命名(如:应用1105张三);分别创建、编辑并运行下列程序,初步熟悉C源程序的结构特点和运行方式。 #include main() { printf(“This is my first program!\n") ; } 2、编写一个程序实现分两行输出自己的姓名及联系电话。 3、程序改错调试 以下给定程序的功能是在屏幕上显示“Welcome to You!”,其中存在3处错误,请指出错误所在,并调试程序使其能运行得到正确结果。 #include mian() //1 { printf(Welcome to You!\n") //2 } 4、选做题 ⑴自学教材P47内容以及附录B中的字符与ASCII码对照表,编程输出以下图形: ? ? ⑵编程输出如下通讯录功能菜单界面

酶工程复习题及答案(1)

《酶工程》复习 一、名词解释…………………………………………… 1 酶工程:又称酶技术,是酶制剂的大规模生产和应用的技术,包括化学酶工程和生物酶工程。 2酶的诱导:由于加进某种物质,使酶的生物合成开始或者加速进行,称为酶的生物合成的诱导作用。 3 微滤:以压力差为推动力,截留水中粒径在0.02~ 10m之间的颗粒物的膜分离技术。 4固定化酶:通过物理的或化学的方法,将酶固定在载体上,能使酶发挥催化作用的酶。 5酶的非水相催化:通过改变反应介质,影响酶的表面结构和活性中心,从而改变酶的催化特性。 6 原生质体:脱去细胞壁的植物、真菌或细菌细胞。 7超滤:超滤是采用中空纤维过滤新技术,配合三级预处理过滤清除自来水中杂质;超滤微孔小于0.01微米,能彻底滤除水中的细菌、铁锈、胶体等有害物质,保留水中原有的微量元素和矿物质。 8 固体发酵:固态发酵是指没有或几乎没有自由水存在下,在有一定湿度的水下溶性固态基质中,用一种或多种微生物的一个生物反应过程。 二、填空题………………………………………………. 1酶的分类(氧化还原酶)、(转移酶)、(水解酶)、(裂合酶)、(异构酶)、(合成酶)。 2酶活力是(酶催化速度)的量度指标,酶的比活力是(酶纯度)的量度指标,酶转换数是(酶催化效率)的量度指标。 3微生物产酶模式可以分为同步合成型,(延续合成型),中期合成型,(滞后合成型)四种。 4动物细胞培养主要用于生产疫苗、激素、单克隆抗体、多肽因子、酶等(功能性蛋白质)。 5细胞破碎的主要方法有机械破碎法、物理破碎法、(化学破碎法)、(酶促破碎法)。 6有机溶剂的极性系数lgP越小,表明其极性(越强),对酶活性的影响(越大)。 7通常酶的固定化方法有:吸附法、包埋法、结合法、交联法、热处理法。

动物繁殖学复习资料

一、名词解释(6个) 1、红体 成熟卵泡破裂、排卵后,由于卵泡液排出,卵泡壁塌陷皱缩,从破裂的卵泡壁血管流出血液和淋巴液,聚积于卵泡腔内形成血凝块,称为红体。 2、黄体 卵泡内膜分生出血管,布满于发育中的黄体,卵泡内膜细胞也移入黄体细胞之间,由于吸取脂类而使颗粒细胞变成黄色,称为黄体。 3、睾丸下降 睾丸在胎儿期存在于腹腔内,在动物出生前或出生后,睾丸才由腹腔沿腹股沟管进入阴囊内。 4、隐睾 动物出生或成年后,一侧或双侧睾丸未能进入阴囊,仍留于腹腔或腹股沟内的现象。 5、卵泡发育波 雌性动物在一个发情周期中,卵巢上有群体卵泡发育到三级卵泡及少数卵泡发育到成熟卵泡大小时,发生闭琐退化或排卵的现象。 6、皮质反应 卵子激活后,胞质内皮质颗粒向卵质膜下移动,并且与卵质膜融合,释放内容物的过程。 7、透明带反应 透明带在皮质酶作用下,糖蛋白分子结构发生变化,导致精子无法识别和穿过透明带的现象。 8、卵黄膜反应 精子进入卵黄膜时,精子质膜与卵黄膜融合,卵黄膜立即发生变化,表现为卵黄紧缩,卵黄膜增厚,并排出部分液体进入卵黄周隙。 9、顶体反应 获能后的精子,在受精部位与卵子相遇,顶体结构的囊泡形成和顶体内酶的激活与释放的过程。

10、情期受胎率 即妊娠母畜头数占配种情期数的百分率。 11、卵丘 随着卵泡液增多,卵泡腔扩大,初级卵母细胞、透明带、放射冠及部分卵泡细胞突入卵泡腔内形成卵丘。 12、精子获能 哺乳动物精子离开雄性生殖道时,还不能立即与卵子受精,必须在雌性生殖道内经历一段时间,在形态和生理上发生某些变化,机能进一步成熟,才具备获得受精的能力。 13、适配年龄 根据品种、个体发育及繁殖能力等,确定适用于配种的公畜年龄。 14、胚胎附植 胎在子宫中定位后结束游离状态,开始同母体建立紧密的联系,这个过程称为附植 15、胚胎分割 是指利用特制的玻璃针或显微刀片,采用机械方法将早期胚胎显微分割成2、4、8或更多等分,人工制造同卵双生或同卵多生的技术。 16、妊娠识别 在妊娠初期,孕体发出信号(类固醇激素或蛋白质)传递给母体作用于母体,母体随即产生反应,以识别孕体的存在。由此,母体和孕体建立密切联系,促进孕体进一步发育,这一生理过程叫妊娠识别。 17、同期发情 采用外源生殖激素等方法使一群母畜在同一时期发情并排卵的技术。 18、超数排卵 是应用外源性促性腺激素诱发卵巢多个卵泡发育,并排出具有受精能力的卵子的方法,称为超数排卵,简称“超排”。 19、繁殖力 家畜维持正常繁殖机能、生育后代的能力

酶工程实验doc

酶工程实验指导 实验一从植物材料中提取制备过氧化物酶 一.实验目的 学习从植物材料中制备过氧化物酶的方法,了解纯化酶的一些基本步骤。比较不同植物材料过氧化物酶的含量与活性,掌握酶纯化的相关计算方法。 二.实验原理 过氧化物酶(EC 1. 11. 1. 7)是一类以铁卟啉为辅基的氧化酶,在细胞代谢的氧化还原过程中起重要作用,在工业上也广泛被应用。过氧化物酶可溶于水,溶解度约为5%(W/V),溶液呈棕红色,透明。此酶可溶于0.58饱和度以下的硫酸铵溶液,而在0.62饱和度以上则不溶。该酶能催化愈创木酚反应产生有色物质: 以此可进行酶活性的测定。 许多植物如辣根、柑桔叶子、白萝卜等含有较多的过氧化物酶,在这些植物材料的溶出物中,加入不同浓度的硫酸铵进行分段盐析,对过氧化物酶进行粗提,然后用有机溶剂沉淀、结晶等方法可对该酶进行纯化,得出较纯的制品。

三.主要仪器与试剂 仪器:组织捣碎机,冰箱,真空冷冻干燥机,离心机,紫外-可见分光光度计等。 试剂:愈创木酚,丙酮,过氧化氢,硫酸铵等。 四.实验步骤 (尽量在冰浴中进行)鲜植物样品约70克,剪碎或捣烂,加少许水研磨成浆(可用捣碎机),转移到500ml的烧杯中,加水至约200ml,于冰箱中浸提约2小时(中间多次搅动)。多层纱布挤压过滤后离心(4000rpm),10ml上清液用来测酶活力,其余上清液按226克/升加硫酸铵盐析,冰箱中静置1小时以上,离心(4000rpm)去沉淀。上清液再按258克/升加硫酸铵盐析,冰箱中静置4小时以上。离心收集沉淀,用水溶解至约10ml,用水透析去盐,离心去沉淀,取部分酶液稀释后测酶活。其余酶液用作精制样品。 在搅动下沿着杯壁加入一倍体积预冷(-15℃)的丙酮于酶液中,混匀,静置10分钟,低温离心(8000rpm, 4℃) 去沉淀。按上清液与丙酮之比为1比0.8再次加入预冷丙酮,静置10分钟后离心(8000rpm, 4℃) 收集沉淀,溶于少量水中,透析去丙酮。测酶液的酶活,冷冻干燥酶液得较纯的酶制品。 五.过氧化物酶活力测定 按下表于试管中加入试剂(ml) 管号0.2M磷 酸缓冲液 pH6.0 0.05% 愈创木酚 酶液0.04% 过氧化氢 水 1 2 3 1 1 1 1 1 1 1 1 在37℃保温10分钟。管1 作为对照在时间扫描470nm调好零点,混合管2

DDSZ1实验指导书

Tianhuang Teaching Apparatuses 天煌教仪 电机系列实验 DDSZ-1型 电机及电气技术实验装置Motor And Electric Technique Experimental Equipment 实验指导书 天煌教仪 浙江天煌科技实业有限公司

DDSZ-1型电机及电气技术实验装置受试电机铭牌数据一览表

DDSZ-1型电机及电气技术实验装置交流及直流电源操作说明 实验中开启及关闭电源都在控制屏上操作。开启三相交流电源的步骤为: 1)开启电源前。要检查控制屏下面“直流电机电源”的“电枢电源”开关(右下角)及“励磁电源”开关(左下角)都须在“关”断的位置。控制屏左侧端面上安装的调压器旋钮必须在零位,即必须将它向逆时针方向旋转到底。 2)检查无误后开启“电源总开关”,“关”按钮指示灯亮,表示实验装置的进线接到电源,但还不能输出电压。此时在电源输出端进行实验电路接线操作是安全的。 3)按下“开”按钮,“开”按钮指示灯亮,表示三相交流调压电源输出插孔U、V、W及N上已接电。实验电路所需的不同大小的交流电压,都可适当旋转调压器旋钮用导线从这三相四线制插孔中取得。输出线电压为0-450V(可调)并可由控制屏上方的三只交流电压表指示。当电压表下面左边的“指示切换”开关拨向“三相电网电压”时,它指示三相电网进线的线电压;当“指示切换”开关拨向“三相调压电压”时,它指示三相四线制插孔U、V、W和N输出端的线电压。 4)实验中如果需要改接线路,必须按下“关”按钮以切断交流电源,保证实验操作安全。实验完毕,还需关断“电源总开关”,并将控制屏左侧端面上安装的调压器旋钮调回到零位。将“直流电机电源”的“电枢电源”开关及“励磁电源”开关拨回到“关”断位置。 开启直流电机电源的操作: 1)直流电源是由交流电源变换而来,开启“直流电机电源”,必须先完成开启交流电源,即开启“电源总开关”并按下“开”按钮。 2)在此之后,接通“励磁电源”开关,可获得约为220V、0.5A不可调的直流电压输出。接通“电枢电源”开关,可获得40~230V、3A可调节的直流电压输出。励磁电源电压及电枢电源电压都可由控制屏下方的1只直流电压表指示。当将该电压表下方的“指示切换”开关拨向“电枢电压”时,指示电枢电源电压,当将它拨向“励磁电压”时,指示励磁电源电压。但在电路上“励磁电源”与“电枢电源”,“直流电机电源”与“交流三相调压电源”都是经过三相多绕组变压器隔离的,可独立使用。 3)“电枢电源”是采用脉宽调制型开关式稳压电源,输入端接有滤波用的大电容,为了不使过大的充电电流损坏电源电路,采用了限流延时的保护电路。所以本电源在开机时,从电枢电源开合闸到直流电压输出约有3~4秒钟的延时,这是正常的。 4)电枢电源设有过压和过流指示告警保护电路。当输出电压出现过压时,会自动切断输出,并告警指示。此时需要恢复电压,必须先将“电压调节”旋钮逆时针旋转调低电压到正常值(约240V以下),再按“过压复位”按钮,即能输出电压。当负载电流过大(即负载电阻过

相关文档
最新文档