当前位置:文档之家› 实验三队列实验报告材料

实验三队列实验报告材料

实验三队列实验报告材料
实验三队列实验报告材料

计算机科学与技术系

实验报告

专业名称计算机科学与技术

课程名称数据结构与算法

项目名称实验三队列实验

班级

学号 1

姓名

同组人员无

实验日期

实验三队列实验

实验题目:建立含有若干个元素的循环队列和链队列,并分别实现循环队列和

链队列的入队和出对操作。

(1)先实现循环队列的入队和出队操作

1.问题分析

本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作。

完成该实验需要以下4个子任务:

○1定义一个循环队列的存储结构,定义队列的基本算法。

○2定义一个display()函数实现队列元素的输出看入队是否成功

○3通过队列的基本算法实现队列的出队操作

○4在主函数中完成操作

测试数据设计如下:

1 2 3 4 5

6

2.概要设计

为了实现上述程序功能,需要:○1声明一个循环队列○2定义出队列的基本算法,○3通过键盘输入5个整数,入队,出队○4在主函数中先往队列里输入5

个元素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。

1)本程序包含7个函数:

1主函数main()

2.置空队:InitQueue()

3.判对空: QueueEmpty()

4.判队满:QueueFull()

5.入队:Add()

6.出队:Delete()

7.display()

各函数关系如下:

InitQueue()

QueueEmpty()

Main () QueueFull()

Add()Main

Delete()

display()

3、详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。

(1)循环队列

#define maxlen 10

typedef struct{

int data [maxlen];

int front;

int rear;

}SeqQueue;

(2)队列基本算法

SeqQueue *InitQueue(SeqQueue *q) //建立一个空循环队列{

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

q->front=0;

q->rear=0;

return q;

}

int QueueFull (SeqQueue *q){ //判断队列是否为满

if (q->front==(q->rear+1)%maxlen)

return 1;

else return 0;

}

int QueueEmpty(SeqQueue *q){ //判断队列是否为空

if (q->rear==q->front)

return 1;

else return 0;

}

void Add (SeqQueue *q,int x) //入队

{

if(!QueueFull(q)){

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

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

}else printf ("queue full");

}

void Delete(SeqQueue *q){ //出队

if (!QueueEmpty(q))

q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

(3)用display()函数输出循环队列元素

void display(SeqQueue *q) //输出循环队列q的元素

{

int i;

if(q->front!=q->rear) //循环队列非空,输出队列元素

{

printf("输出循环队列元素:");

i=q->front;

do

{

i=(i+1)%maxlen;

printf("%d",q->data[i]);

}while(i!=q->rear);

}

else

printf("队列为空!");

}

(4)在主函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。

int main()

{

SeqQueue *q;

int i,y;

q=InitQueue(q); //建立空循环队列

printf("请输入5个元素");

for(i=0;i<5;i++) //入队5个元素

{

scanf("%d",&y);

Add(q,y);

}

display(q); //输出循环队列元素

for(i=0;i<5;i++) //把5个元素出队

{

Delete(q);

}

printf("\n请输入1个元素");

scanf("%d",&y); //再入队一个元素

Add(q,y);

display(q); //再输出循环队列元素

return 0;

}

4、调试分析

编译无错误

5、用户使用说明

程序名为class1.exe,在DEBUG文件夹里面。运行环境Visual c++ 6.0。

6、测试结果

7、附录

#include

#include

#define maxlen 10

typedef struct{

int data [maxlen];

int front;

}SeqQueue;

SeqQueue *InitQueue(SeqQueue *q) //建立一个空循环队列{

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

q->front=0;

q->rear=0;

return q;

}

int QueueFull (SeqQueue *q){ //判断队列是否为满if (q->front==(q->rear+1)%maxlen)

return 1;

else return 0;

}

int QueueEmpty(SeqQueue *q){ //判断队列是否为空if (q->rear==q->front)

return 1;

else return 0;

}

void Add (SeqQueue *q,int x) //入队

{

if(!QueueFull(q)){

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

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

}else printf ("queue full");

}

void Delete(SeqQueue *q){ //出队

if (!QueueEmpty(q))

q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

void display(SeqQueue *q) //输出循环队列q的元素

{

int i;

if(q->front!=q->rear) //循环队列非空,输出队列元素{

printf("输出循环队列元素:");

i=q->front;

{

i=(i+1)%maxlen;

printf("%d",q->data[i]);

}while(i!=q->rear);

}

else

printf("队列为空!");

}

int main()

{

SeqQueue *q;

int i,y;

q=InitQueue(q); //建立空循环队列

printf("请输入5个元素");

for(i=0;i<5;i++) //入队5个元素

{

scanf("%d",&y);

Add(q,y);

}

display(q); //输出循环队列元素

for(i=0;i<5;i++) //把5个元素出队

{

Delete(q);

}

printf("\n请输入1个元素");

scanf("%d",&y); //再入队一个元素

Add(q,y);

display(q); //再输出循环队列元素return 0;

}

(2)实现链队列的入队和出队操作

1.问题分析

本程序要求实现建立含有若干个元素的链队列,并实现链队列入队和出队操作。

完成该实验需要以下4个子任务:

○1定义一个链队列的存储结构,定义链队列的基本算法。

○2定义一个display()函数实现队列元素的输出看入队是否成功

○3通过队列的基本算法实现队列的出队操作

○4在主函数中完成操作

测试数据设计如下:

1 2 3 4 5

6

2.概要设计

为了实现上述程序功能,需要:○1声明一个链队列○2定义出链队列的基本算法,○3通过键盘输入5个整数,入队,出队○4在主函数中先往队列里输入5

个元素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。

2)本程序包含6个函数:

1主函数main()

2.置空队:InitQueue()

3.判对空: QueueEmpty()

4.入队:Add()

5.出队:Delete()

6.display()

各函数关系如下:

SetQueue()

QueueEmpty()

Main () Add()

Delete()

display()

4、详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。

(1)链队列

#define maxlen 10

typedef struct node{

int data;

struct node *next;

}LinkList;

typedef struct{

LinkList *front,*rear;

}LinkQueue;

LinkQueue *q;

(2)队列基本算法

LinkQueue *SetQueue() //建立一个空链队列

{

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

q->front=(LinkList *)malloc(sizeof(LinkList));

q->front->next=NULL;

q->rear=q->front;

return q;

}

int QueueEmpty(LinkQueue *q){ //判断队列是否为空

if (q->rear==q->front)

return 1;

else return 0;

}

LinkQueue *Add (LinkQueue *q,int x) //入队

{

LinkList *p;

p=(LinkList *)malloc(sizeof (LinkList));

p->data=x;p->next=NULL;

q->rear->next=p;

q->rear=p;

return q;

}

LinkQueue *Delete(LinkQueue *q){ //出队

LinkList *p;

if (!QueueEmpty(q)){

p=q->front->next;

q->front->next=p->next;

if(p->next=NULL)q->rear=q->front;

free(p);return q;

}

else printf ("queue Empty");

}

(3)用display()函数输出链队列元素

void display(LinkQueue *q) //输出链队列的元素

{

LinkList *p;

p=q->front->next;

if(p!=NULL)

{

printf("输出链队元素");

while(p!=NULL)

{

printf("%2d",p->data);

p=p->next;

}

}

else printf("\n链队为空");

}

(4)在主函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。

int main()

{

int i,y=0;

SetQueue(); //建立空链队列

display(q) ;

printf("\n请输入5个元素");

for(i=0;i<5;i++) //入队5个元素

{

scanf("%d",&y);

Add(q,y);

}

display(q);

for(i=0;i<5;i++) //把5个元素出队

{

Delete(q);

}

display(q); //看是否出队成功

return 0;

}

4、调试分析

编译无错误

5、用户使用说明

程序名为class12exe,在DEBUG文件夹里面。运行环境Visual c++ 6.0。

6、测试结果

7、附录

#include

#include

#define maxlen 10

typedef struct node{

int data;

struct node *next;

}LinkList;

typedef struct{

LinkList *front,*rear;

}LinkQueue;

LinkQueue *q;

LinkQueue *SetQueue() //建立一个空链队列

{

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

q->front=(LinkList *)malloc(sizeof(LinkList));

q->front->next=NULL;

q->rear=q->front;

return q;

}

int QueueEmpty(LinkQueue *q){ //判断队列是否为空if (q->rear==q->front)

return 1;

else return 0;

}

LinkQueue *Add (LinkQueue *q,int x) //入队

{

LinkList *p;

p=(LinkList *)malloc(sizeof (LinkList));

p->data=x;p->next=NULL;

q->rear->next=p;

q->rear=p;

return q;

}

LinkQueue *Delete(LinkQueue *q){ //出队LinkList *p;

if (!QueueEmpty(q)){

p=q->front->next;

q->front->next=p->next;

if(p->next=NULL)q->rear=q->front;

free(p);return q;

}

else printf ("queue Empty");

}

void display(LinkQueue *q) //输出链队列的元素

{

LinkList *p;

p=q->front->next;

if(p!=NULL)

{

printf("输出链队元素");

while(p!=NULL)

{

printf("%2d",p->data);

p=p->next;

}

}

else printf("\n链队为空");

}

int main()

{

int i,y=0;

SetQueue(); //建立链队列display(q) ;

printf("\n请输入5个元素");

for(i=0;i<5;i++) //入队5个元素

{

scanf("%d",&y);

Add(q,y);

}

display(q);

for(i=0;i<5;i++) //把5个元素出队{

Delete(q);

}

display(q); //看是否出队成功return 0;

}

实验题目2:写出下列程序段的输出结果,并通过程序运行来验证

1.问题分析

完成该实验需要以下4个子任务:

○1定义一个循环队列的存储结构,定义队列的基本算法。

○2定义一个print()函数实现程序

○3通过队列的基本算法实现队列的出队操作

○4在主函数中完成操作

测试数据设计如下:

2.概要设计

为了实现上述程序功能,需要:○1声明一个循环队列○2定义出队列的基本算

法,○3在主函数调用print()函数看是否出队。

3)本程序包含8个函数:

1主函数main()

2.置空队:InitQueue()

3.判对空: QueueEmpty()

4.判队满:QueueFull()

5.入队:Add()

6.出队:Delete()

7.display()

8.GetHead()

各函数关系如下:

GetHead()

InitQueue()

QueueEmpty()

Main () QueueFull()

Add()Main

Delete()

print()

5、详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。

(1)循环队列

#define maxlen 10

typedef struct{

char data [maxlen];

int front;

int rear;

}SeqQueue;

(2)队列基本算法

SeqQueue *InitQueue(SeqQueue *q) //建立一个空循环队列{

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

q->front=0;

q->rear=0;

return q;

}

int QueueFull (SeqQueue *q){ //判断队列是否为满

if (q->front==(q->rear+1)%maxlen)

return 1;

else return 0;

}

int QueueEmpty(SeqQueue *q){ //判断队列是否为空

if (q->rear==q->front)

return 1;

else return 0;

}

char GetHead(SeqQueue *q){ //取栈顶元素

if(!QueueEmpty(q))

return q->data[(q->front+1)%maxlen];

else printf("queue Empty");

}

void Add (SeqQueue *q,char x) //入队

{

if(!QueueFull(q)){

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

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

}else printf ("queue full");

}

void Delete(SeqQueue *q){ //出队if (!QueueEmpty(q))

q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

(3)用print()函数验证程序

void print(SeqQueue *q)

{

char x,y,t;

x='e';y='c';

Add(q,'h');

Add(q,'r');

Add(q,y);

x=GetHead(q);

Delete(q);

Add(q,x);

x=GetHead(q);

Delete(q);

Add(q,'a');

while (QueueEmpty(q)==0){

y=GetHead(q);

Delete(q);

printf("%c",y);

}

printf("%c",x);

}

(4)在主函数中调用print()函数验证程序

int main()

{

SeqQueue *q;

q=InitQueue(q);

print(q);

return 0;

}

4、调试分析

编译无错误

5、用户使用说明

程序名为class2.exe,在DEBUG文件夹里面。运行环境Visual c++ 6.0。

6、测试结果

7、附录

#include

#include

#define maxlen 10

typedef struct{

char data [maxlen];

int front;

int rear;

}SeqQueue;

SeqQueue *InitQueue(SeqQueue *q) //建立一个空循环队列

{

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

q->front=0;

q->rear=0;

return q;

}

int QueueFull (SeqQueue *q){ //判断队列是否为满if (q->front==(q->rear+1)%maxlen)

return 1;

else return 0;

}

int QueueEmpty(SeqQueue *q){ //判断队列是否为空if (q->rear==q->front)

return 1;

else return 0;

}

char GetHead(SeqQueue *q){ //取栈顶元素if(!QueueEmpty(q))

return q->data[(q->front+1)%maxlen];

else printf("queue Empty");

}

void Add (SeqQueue *q,char x) //入队

{

if(!QueueFull(q)){

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

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

}else printf ("queue full");

}

void Delete(SeqQueue *q){ //出队

if (!QueueEmpty(q))

q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

void print(SeqQueue *q)

{

char x,y,t;

x='e';y='c';

Add(q,'h');

Add(q,'r');

Add(q,y);

x=GetHead(q);

Delete(q);

Add(q,x);

x=GetHead(q);

Delete(q);

Add(q,'a');

while (QueueEmpty(q)==0){

y=GetHead(q);

Delete(q);

printf("%c",y);

}

printf("%c",x);

}

int main()

{

SeqQueue *q;

q=InitQueue(q);

print(q);

return 0;

}

数据结构_实验三_栈和队列及其应用

实验编号:3四川师大《数据结构》实验报告2016年10月29日 实验三栈和队列及其应用_ 一.实验目的及要求 (1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们; (2)本实验训练的要点是“栈”的观点及其典型用法; (3)掌握问题求解的状态表示及其递归算法,以及由递归程序到非递归程序的转化方法。 二.实验内容 (1)编程实现栈在两种存储结构中的基本操作(栈的初始化、判栈空、入栈、出栈等); (2)应用栈的基本操作,实现数制转换(任意进制); (3)编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列); (4)利用栈实现任一个表达式中的语法检查(括号的匹配)。 (5)利用栈实现表达式的求值。 注:(1)~(3)必做,(4)~(5)选做。 三.主要仪器设备及软件 (1)PC机 (2)Dev C++ ,Visual C++, VS2010等 四.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)(1)编程实现栈在两种存储结构中的基本操作(栈的初始化、判栈空、入栈、出栈等); A.顺序储存: 代码部分: 栈" << endl; cout << " 2.出栈" << endl; cout << " 3.判栈空" << endl; cout << " 4.返回栈顶部数据" << endl; cout << " 5.栈长" << endl; cout << " 0.退出系统" << endl;

cout << "你的选择是:" ; } 链式储存: 代码部分: 栈"<>select; switch (select){ case 0:break; case 1: cout<<"push data:"; cin>>e; if(push(L,e)){

材料分析报告测试技术复习题二

材料分析测试技术 一、名词解释(共有20分,每小题2分。) 1. 辐射的发射:指物质吸收能量后产生电磁辐射的现象。 2. 俄歇电子:X射线或电子束激发固体中原子内层电子使原子电离,此时原子(实际是离子)处于激发 态,将发生较外层电子向空位跃迁以降低原子能量的过程,此过程发射的电子。 3. 背散射电子:入射电子与固体作用后又离开固体的电子。 4. 溅射:入射离子轰击固体时,当表面原子获得足够的动量和能量背离表面运动时,就引起表面粒 子(原子、离子、原子团等)的发射,这种现象称为溅射。 5. 物相鉴定:指确定材料(样品)由哪些相组成。 6. 电子透镜:能使电子束聚焦的装置。 7. 质厚衬度:样品上的不同微区无论是质量还是厚度的差别,均可引起相应区域透射电子强度的改 变,从而在图像上形成亮暗不同的区域,这一现象称为质厚衬度。 8. 蓝移:当有机化合物的结构发生变化时,其吸收带的最大吸收峰波长或位置(?最大)向短波方 向移动,这种现象称为蓝移(或紫移,或“向蓝”)。 9. 伸缩振动:键长变化而键角不变的振动,可分为对称伸缩振动和反对称伸缩振动。

10. 差热分析:指在程序控制温度条件下,测量样品与参比物的温度差随温度或时间变化的函数关系 的技术。 二、填空题(共20分,每小题2分。) 1. 电磁波谱可分为三个部分,即长波部分、中间部分和短波部分,其中中间部分包括(红外线)、 (可见光)和(紫外线),统称为光学光谱。 2. 光谱分析方法是基于电磁辐射与材料相互作用产生的特征光谱波长与强度进行材料分析的方法。 光谱按强度对波长的分布(曲线)特点(或按胶片记录的光谱表观形态)可分为(连续)光谱、(带状)光谱和(线状)光谱3类。 3. 分子散射是入射线与线度即尺寸大小远小于其波长的分子或分子聚集体相互作用而产生的散射。 分子散射包括(瑞利散射)与(拉曼散射)两种。 4. X射线照射固体物质(样品),可能发生的相互作用主要有二次电子、背散射电子、特征X射线、俄 歇电子、吸收电子、透射电子 5. 多晶体(粉晶)X射线衍射分析的基本方法为(照相法)和(X射线衍射仪法)。 6. 依据入射电子的能量大小,电子衍射可分为(高能)电子衍射和(低能)电子衍射。依据 电子束是否穿透样品,电子衍射可分为(投射式)电子衍射与(反射式)电子衍射。

材料分析测试技术A卷

一、选择题(每题1分,共15分) 1、X射线衍射方法中,最常用的是() A.劳厄法 B.粉末多晶法 C.转晶法 2、已知X射线定性分析中有三种索引,已知物质名称可以采用() A.哈式无机相数值索引 B.无机相字母索引 C.芬克无机数值索引 3、电子束与固体样品相互作用产生的物理信号中能用于测试1nm厚度表层成分分 析的信号是() A. 背散射电子 B.俄歇电子 C.特征X射线 4、测定钢中的奥氏体含量,若采用定量X射线物相分析,常用的方法是() A.外标法 B.内标法 C.直接比较法 D.K值法 5、下列分析方法中分辨率最高的是() A.SEM B.TEM C. 特征X射线 6、表面形貌分析的手段包括() A.SEM B.TEM C.WDS D. DSC 7、当X射线将某物质原子的K层电子打出去后,L层电子回迁K层,多余能量将 另一个L层电子打出核外,这整个过程将产生() A.光电子 B.二次电子 C.俄歇电子 D.背散射电子 8、透射电镜的两种主要功能() A.表面形貌和晶体结构 B.内部组织和晶体结构 C.表面形貌和成分价键 D.内部组织和成分价键 9、已知X射线光管是铜靶,应选择的滤波片材料是() A.Co B.Ni C.Fe D.Zn 10、采用复型技术测得材料表面组织结构的式样为() A.非晶体样品 B.金属样品 C.粉末样品 D.陶瓷样品 11、在电子探针分析方法中,把X射线谱仪固定在某一波长,使电子束在样品表面 扫描得到样品的形貌相和元素的成分分布像,这种分析方法是()

A.点分析 B.线分析 C.面分析 12、下列分析测试方法中,能够进行结构分析的测试方法是() A.XRD B.TEM C.SEM D.A+B 13、在X射线定量分析中,不需要做标准曲线的分析方法是() A.外标法 B. 内标法 C. K值法 14、热分析技术不能测试的样品是() A.固体 B.液体 C.气体 15、下列热分析技术中,()是对样品池及参比池分别加热的测试方法 A.DTA B.DSC C.TGA 二、填空题(每空1分,共20分) 1、由X射线管发射出来的X射线可以分为两种类型,即和。 2、常见的几种电子衍射谱为单晶衍射谱、、、高级劳厄带斑 点、。 3、透射电镜的电子光学系统由、、和四部分组成 4、今天复型技术主要应用方法来截取第二相微小颗粒进行分析。 5、扫描电子显微镜经常用的电子信息是、和 6、德拜照相法中的底片安装方法有、和 7、产生衍射的必要条件是 8、倒易点阵的两个基本特征是和 9、透射电镜成像遵循原理 三、名词解释(每题5分,共20分) 1、X射线强度 2、结构因子 3、差热分析

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

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

《材料分析测试技术》试卷答案

《材料分析测试技术》试卷(答案) 一、填空题:(20分,每空一分) 1.X射线管主要由阳极、阴极、和窗口构成。 2.X射线透过物质时产生的物理效应有:散射、光电效应、透射X 射线、和热。 3.德拜照相法中的底片安装方法有: 正装、反装和偏装三种。 4. X射线物相分析方法分: 定性分析和定量分析两种;测钢中残余奥氏体的直接比较法就属于其中的定量分析方法。 5.透射电子显微镜的分辨率主要受衍射效应和像差两因素影响。 6.今天复型技术主要应用于萃取复型来揭取第二相微小颗粒进行分析。 7. 电子探针包括波谱仪和能谱仪成分分析仪器。 8.扫描电子显微镜常用的信号是二次电子和背散射电子。 二、选择题:(8分,每题一分) 1.X射线衍射方法中最常用的方法是( b )。 a.劳厄法;b.粉末多晶法;c.周转晶体法。 2. 已知X光管是铜靶,应选择的滤波片材料是(b)。 a.Co;b. Ni;c.Fe。 3.X射线物相定性分析方法中有三种索引,如果已知物质名时可以采用( c )。 a.哈氏无机数值索引;b. 芬克无机数值索引;c. 戴维无机字母索引。 4.能提高透射电镜成像衬度的可动光阑是(b)。 a.第二聚光镜光阑;b.物镜光阑;c. 选区光阑。 5. 透射电子显微镜中可以消除的像差是( b )。 a.球差; b. 像散; c. 色差。 6.可以帮助我们估计样品厚度的复杂衍射花样是( a)。 a.高阶劳厄斑点;b.超结构斑点;c. 二次衍射斑点。 7. 电子束与固体样品相互作用产生的物理信号中可用于分析1nm厚表层成分的信号是(b)。 a.背散射电子; b.俄歇电子;c. 特征X射线。 8. 中心暗场像的成像操作方法是(c)。 a.以物镜光栏套住透射斑;b.以物镜光栏套住衍射斑;c.将衍射斑移至中心并以物镜光栏套住透射斑。 三、问答题:(24分,每题8分) 1.X射线衍射仪法中对粉末多晶样品的要求是什么? 答: X射线衍射仪法中样品是块状粉末样品,首先要求粉末粒度要大小适 中,在1um-5um之间;其次粉末不能有应力和织构;最后是样品有一个 最佳厚度(t =

队列实验报告

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

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

材料分析测试技术-习题

第一章 1.什么是连续X射线谱?为什么存在短波限λ0? 答:对X射线管施加不同的电压,再用适当的方法去测量由X射线管发出的X射线的波长和强度,便会得到X射线强度与波长的关系曲线,称之为X射线谱。在管电压很低,小于20kv时的曲线是连续的,称之为连续谱。大量能量为eV的自由电子与靶的原子整体碰撞时,由于到达靶的时间和条件不同,绝大多数电子要经过多次碰撞,于是产生一系列能量为hv的光子序列,形成连续的X射线谱,按照量子理论观点,当能量为eV的电子与靶的原子整体碰撞时,电子失去自己的能量,其中一部分以光子的形式辐射出去,在极限情况下,极少数的电子在一次碰撞中将全部的能量一次性转化为一个光量子,这个光量子具有最高的能量和最短的波长,即λ0。 2.什么是特征X射线?它产生的机理是什么?为什么存在激发电压Vk? 答:当X射线管电压超过某个临界值时,在连续谱的某个波长处出现强度峰,峰窄而尖锐,这些谱线之改变强度,而峰位置所对应的波长不便,即波长只与靶的原子序数有关,与电压无关,因为这种强度峰的波长反映了物质的原子序数特征,故称为特征X射线,由特征X射线构成的X射线谱叫做特征X射线谱。 它的产生是与阳极靶物质的原子结构紧密相关当外来的高速粒子(电子或光子)的动能足够大时,可以将壳层中的某个电子击出,或击到原子系统之外,击出原子内部的电子形成逸出电子,或使这个电子填补到未满的高能级上。于是在原来位置出现空位,原子系统处于激发态,高能级的电子越迁到该空位处,同时将多余的能量e=hv=hc/λ释放出来,变成光电子而成为德特征X射线。 由于阴极射来的电子欲击出靶材的原子内层电子,比如k层电子,必须使其动能大于k 层电子与原子核的结合能Ek或k层的逸出功Wk。即有eV k=1/2mv2〉-Ek=Wk,故存在阴极电子击出靶材原子k电子所需要的临界激发电压Vk。 3、X射线与物质有哪些互相作用? 答;X射线的散射:相干散射,非相干散射 X射线的吸收:二次特征辐射(当入射X射线的能量足够大时,会产生二次荧光辐射); 光电效应:这种以光子激发原子所产生的激发和辐射过程;俄歇效应:当内层电子被击出成为光电子,高能级电子越迁进入低能级空位,同时产生能量激发高层点成为光电子。 4、线吸收系数μl和质量吸收系数μm的含义 答:线吸收系数μl:在X射线的传播方向上,单位长度的X射线强度衰减程度[cm-1](强度为I的入射X射线在均匀物质内部通过时,强度的衰减率与在物质内通过的距离x成正步-dI/I=μdx,强度的衰减与物质内通过的距离x成正比)。与物质种类、密度、波长有关。质量吸收系数μm:他的物理意义是单位重量物质对X射线的衰减量,μ/P=μm[cm2/g]与物质密度和物质状态无关,而与物质原子序数Z和μm=kλ3Z3,X射线波长有关。 5、什么是吸收限?为什么存在吸收限? 答:1)当入射光子能量hv刚好击出吸收体的k层电子,其对应的λk为击出电子所需要的入射光的最长波长,在光电效应产生的条件时,λk称为k系激发限,若讨论X射线的被物质吸收时,λk又称为吸收限。 当入射X射线,刚好λ=λk时,入射X射线被强烈的吸收。当能量增加,即入射λ〉λk时,吸收程度小。

《材料分析测试技术》试卷(答案)

《材料分析测试技术》试卷(答案) 一、填空题:(20分,每空一分) 1. X射线管主要由阳极、阴极、和窗口构成。 2. X射线透过物质时产生的物理效应有:散射、光电效应、透射X射线、和热。 3. 德拜照相法中的底片安装方法有:正装、反装和偏装三种。 4. X射线物相分析方法分:定性分析和定量分析两种;测钢中残余奥氏体的直接比较法就属于其中的定量分析方法。 5. 透射电子显微镜的分辨率主要受衍射效应和像差两因素影响。 6. 今天复型技术主要应用于萃取复型来揭取第二相微小颗粒进行分析。 7. 电子探针包括波谱仪和能谱仪成分分析仪器。 8. 扫描电子显微镜常用的信号是二次电子和背散射电子。 二、选择题:(8分,每题一分) 1. X射线衍射方法中最常用的方法是( b )。 a.劳厄法;b.粉末多晶法;c.周转晶体法。 2. 已知X光管是铜靶,应选择的滤波片材料是(b)。 a.Co ;b. Ni ;c. Fe。 3. X射线物相定性分析方法中有三种索引,如果已知物质名时可以采用(c )。 a.哈氏无机数值索引;b. 芬克无机数值索引;c. 戴维无机字母索引。 4. 能提高透射电镜成像衬度的可动光阑是(b)。 a.第二聚光镜光阑;b. 物镜光阑;c. 选区光阑。 5. 透射电子显微镜中可以消除的像差是( b )。 a.球差;b. 像散;c. 色差。 6. 可以帮助我们估计样品厚度的复杂衍射花样是(a)。 a.高阶劳厄斑点;b. 超结构斑点;c. 二次衍射斑点。 7. 电子束与固体样品相互作用产生的物理信号中可用于分析1nm厚表层成分的信号是(b)。 a.背散射电子;b.俄歇电子;c. 特征X射线。 8. 中心暗场像的成像操作方法是(c)。 a.以物镜光栏套住透射斑;b.以物镜光栏套住衍射斑;c.将衍射斑移至中心并以物镜光栏套住透射斑。 三、问答题:(24分,每题8分) 1.X射线衍射仪法中对粉末多晶样品的要求是什么? 答:X射线衍射仪法中样品是块状粉末样品,首先要求粉末粒度要大小 适中,在1um-5um之间;其次粉末不能有应力和织构;最后是样品有一 个最佳厚度(t =

栈的操作(实验报告)

实验三栈和队列 3.1实验目的: (1)熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现; (2)熟悉队列的特点(先进先出)及队列的基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构和链式存储结构上的实现。 3.2实验要求: (1)复习课本中有关栈和队列的知识; (2)用C语言完成算法和程序设计并上机调试通过; (3)撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。 3.3基础实验 [实验1] 栈的顺序表示和实现 实验内容与要求: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍历顺序栈 (6)置空顺序栈 分析: 栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。 对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top= =MAXNUM-1,栈满时,不能入栈; 否则出现空间溢出,引起错误,这种现象称为上溢。 出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。 注意: (1)顺序栈中元素用向量存放 (2)栈底位置是固定不变的,可设置在向量两端的任意一个端点 (3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置 参考程序: #include #include #define MAXNUM 20

机械工程测试技术基础(第三版)试卷及答案集

机械工程测试技术基础(第三版)试卷集. 一、填空题 1、周期信号的频谱是离散的,而非周期信号的频谱是连续的。 2、均方值Ψx2表示的是信号的强度,它与均值μx、方差ζx2的关系是¢x2=H x2+óx2。 3、测试信号调理电路主要有电桥、放大、调制解调电路。 4、测试系统的静态特性指标有非线性度、灵敏度、回程误差。5、灵敏度表示系统输出与输入之间的比值,是定度曲线的斜率。 6、传感器按信号变换特性可分为组合型、一体型。 7、当Δó〈〈ó0时,可变磁阻式电感传感器的输出和输入成近似线性关系,其灵敏度S 趋于定值。 8、和差特性的主要内容是相临、相反两臂间阻值的变化量符合相邻相反、相对相同的变化,才能使输出有最大值。 10、系统动态特性在时域可用传递函数来描述,在复数域可用频率函数来描述,在频域可用脉冲响应来描述。 11、高输入阻抗测量放大电路具有高的共模抑制比,即对共模信号有抑制作用,对差模信号有放大作用。 12、动态应变仪上同时设有电阻和电容平衡旋钮,原因是导线间存在分布电容。 13、压控振荡器的输出电压是方波信号,其频率与输入的控制电压成线性关系。 14、调频波的解调又称鉴频,其解调电路称为鉴频器。 15、滤波器的通频带宽和响应时间成反比关系。 16、滤波器的频率分辨力主要由其带宽决定。 17、对于理想滤波器,滤波器因数λ=1。 18、带通滤波器可由低通滤波器(f c2)和高通滤波器(f c1)串联而成(f c2> f c1)。 19、测试系统的线性度和滞后度是由系统误差引起的;而重复性误差是

由 随机 误差引起的。 7、信号分析的过程主要包括: 信号加工 、 信号变换 。 9、在数据采集系统中,常采用 程序控制 放大器。 10、根据载波受调制的参数的不同,调制可分为 调频 、 调幅 、 调相 。 16、用滤波的方法从信号提取的频率成分越窄,即带宽越小,需要的时间就越 长 。 17、如信号的自相关函数为Acos ωη,则其均方值Ψx 2= A 。 18、低通滤波器对阶跃响应的建立时间T e 带宽B 成 反比 、,或者说它们之间的乘机是 常数 。 8、信号程选择性 决定着滤波器对带宽外频率成分衰阻的能力 1、周期信号的频谱是 离散 的,而非周期信号的频谱是连续的。 2、周期信号可按三角函数分解成下列形式: ) cos cos ()(001 0t n b t n a a t x n n n ωω++ =∑∞ = , ; sin )(;cos )(; )(2 /2 /022 /2/022 /2/1 0? ?? ---= = =T T T n T T T n T T T tdt n t x b tdt n t x a dt t x a ωω 8.周期信号()x t 的傅氏三角级数展开式中:n a 表示 余弦分量的幅值 ,n b 表示 正弦分量的幅值 ,0a 表示直流分量。 3、使信号中特定的频率成分通过,而衰减其他频率成分的电路称 滤波器 。 4、信号可分为确定性信号和 随机信号 ,也可分为模拟信号和 数字信号 。 5、滤波器的品质因素Q 与带宽B 的关系是 f Q B = 。 6、金属应变片是根据 应变效应 原理工作的。 7、当把石英等晶体置于电场中,其几何尺寸将发生变化,这种由于外电场作用 导致物质机械变形的现象称为 逆电压效应 。 8、矩形窗函数的频谱是 sin c 或sinx/x 函数。 9、两个时域函数1()x t 、2()x t 的卷积定义为 12()()x t x t d ττ-? 。

数据结构-队列实验报告

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

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

队列的表示及实现实验报告

陕西科技大学实验报告 班级信工082 学号200806030202 姓名李霄实验组别 实验日期2010-12-20 室温报告日期2010-12-20 成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 实验名称:实验三队列的表示及实现 实验目的: 1、通过实验进一步理解队列的“先进先出”特性。 2、掌握队列的逻辑结构及顺序存储结构和链式存储结构。 3、熟练运用C语言实现队列的基本操作。 4、灵活运用队列解决实际问题。 实验内容: 1、实现链队列,并编写主函数进行测试。测试方法为:依次10、20、 30、40,然后,出对3个元素。再次入队50、60,然后出队3个元 素。查看屏幕上显示的结果是否与你分析的结果一致。 2、在1的基础上,再出队1个元素。查看屏幕上显示的结果是否与你 分析的结果一致。 3、编写主函数比较取队头元素操作和出队操作。 实验学时:2学时 实验程序 #include "stdio.h" #include "conio.h" typedef int DataType; typedef struct { DataType data; struct QNode* next; }LQNode,*PQNode; typedef struct { PQNode front,rear; }LinkQueue; int InitQueue(LinkQueue *Q) { Q->front=Q->rear=(PQNode)malloc(sizeof(LQNode));

if (!Q->front){printf("errors\n");return 0;} Q->front->next=NULL; return 1; } int QueueEmpty(LinkQueue Q) { if(Q.front==Q.rear) return 1; else return 0; } int EnQueue(LinkQueue *Q,DataType e) { PQNode p; p=(PQNode)malloc(sizeof(LQNode)); if(!p) { printf("\n\nerrors\n\n"); return 0; } p->data=e; p->next=NULL; Q->rear->next=p; Q->rear=p; return 1; } int DeQueue(LinkQueue *Q,DataType *e) { PQNode p; if( Q->front==Q->rear) { printf("\nerrors\n");

最新材料分析测试技术-部分课后答案

材料分析测试技术部分课后答案 太原理工大学材料物理0901 除夕月 1-1 计算0.071nm(MoKα)和0.154nm(CuKα)的X-射线的振动频率和能量。 ν=c/λ=3*108/(0.071*10-9)=4.23*1018S-1 E=hν=6.63*10-34*4.23*1018=2.8*10-15 J ν=c/λ=3*108/(0. 154*10-9)=1.95*1018S-1 E=hν=6.63*10-34*2.8*1018=1.29*10-15 J 1-2 计算当管电压为50kV时,电子在与靶碰撞时的速度与动能以及所发射的连续谱的短波限和光子的最大动能. E=eV=1.602*10-19*50*103=8.01*10-15 J λ=1.24/50=0.0248 nm E=8.01*10-15 J(全部转化为光子的能量) V=(2eV/m)1/2=(2*8.01*10-15/9.1*10-31)1/2=1.32*108m/s 1-3分析下列荧光辐射产生的可能性,为什么? (1)用CuKαX射线激发CuKα荧光辐射; (2)用CuKβX射线激发CuKα荧光辐射;

(3)用CuKαX射线激发CuLα荧光辐射。 答:根据经典原子模型,原子内的电子分布在一系列量子化的壳层上,在稳定状态下,每个壳层有一定数量的电子,他们有一定的能量。最内层能量最低,向外能量依次增加。 根据能量关系,M、K层之间的能量差大于L、K成之间的能量差,K、L层之间的能量差大于M、L层能量差。由于释放的特征谱线的能量等于壳层间的能量差,所以K?的能量大于Ka 的能量,Ka能量大于La的能量。 因此在不考虑能量损失的情况下: CuKa能激发CuKa荧光辐射;(能量相同) CuK?能激发CuKa荧光辐射;(K?>Ka) CuKa能激发CuLa荧光辐射;(Ka>la) 1-4 以铅为吸收体,利用MoKα、RhKα、AgKαX射线画图,用图解法证明式(1-16)的正确性。(铅对于上述Ⅹ射线的质量吸收系数分别为122.8,84.13,66.14 cm2/g)。再由曲线求出铅对应于管电压为30 kv条件下所发出的最短波长时质量吸收系数。 解:查表得 以铅为吸收体即Z=82 Kαλ 3 λ3Z3 μm Mo 0.714 0.364 200698 122.8 Rh 0.615 0.233 128469 84.13 Ag 0.567 0.182 100349 66.14 画以μm为纵坐标,以λ3Z3为横坐标曲线得K≈8.49×10-4,可见下图 铅发射最短波长λ0=1.24×103/V=0.0413nm λ3Z3=38.844×103 μm = 33 cm3/g 1-5. 计算空气对CrKα的质量吸收系数和线吸收系数(假设空气中只有质量分数80%的氮和质量分数20%的氧,空气的密度为1.29×10-3g/cm3)。 解:μm=0.8×27.7+0.2×40.1=22.16+8.02=30.18(cm2/g) μ=μm×ρ=30.18×1.29×10-3=3.89×10-2 cm-1 1-6. 为使CuKα线的强度衰减1/2,需要多厚的Ni滤波片?(Ni的密度为8.90g/cm3)。1-7. CuKα1和CuKα2的强度比在入射时为2:1,利用算得的Ni滤波片之后其比值会有什么变化? 解:设滤波片的厚度为t 根据公式I/ I0=e-Umρt;查表得铁对CuKα的μm=49.3(cm2/g),有:1/2=exp(-μmρt) 即t=-(ln0.5)/ μmρ=0.00158cm 根据公式:μm=Kλ3Z3,CuKα1和CuKα2的波长分别为:0.154051和0.154433nm ,所以μm=K

材料分析测试技术试卷A-答案

山东科技大学2010—2011学年第二学期 《材料分析测试技术》考试试卷(A卷)答案及评分标准 一、选择题(每空1分,共15分) 1-5、BBBCB 6-10、ACBCA 11-15、CDCCB 二、填空题(每空1分,共20分) 1、连续X射线和特征X射线。 2、多晶电子衍射谱、多次衍射谱、菊池线。 3、光学系统、样品室、放大系统、供电和真空系统 4、萃取复型 5、二次电子和背散射电子、吸收电子、特征X射线(任填3个) 6、正装法、反装法(倒装法)、45℃法(不规则法) 7、满足布拉格定律 8、H(hkl)垂直于正点阵(hkl)面;H(hkl)=1/d(hkl) 9、阿贝成像原理 三、名词解释(每题5分,共20分) 1、X射线的强度 X射线的强度是指行垂直X射线传播方向的单位面积上在单位时间内所通过的光子数目的能量总和。常用的单位是J/cm2.s。 2、结构因子 结构因子是指一个单胞对X射线的散射强度,由于衍射强度正比于结构因子模的平方,消光即相当于衍射线没有强度,因此可通过结构因子是否为0来研究消光规律 3、差热分析 在程序控制温度条件下,测量样品与参比的基准物质之间的温度差与温度关系的一种热分析方法。 4、衍射衬度 衍射衬度是指试样中由于各处晶体取向不同和(或)晶体结构不同,满足布拉格条件的程度不同,使得对应式样下表面处有不同的衍射效果,从而在下表面形成一个随位置而异的衍射振幅分布而形成的衬度,它是由于晶体取向差异和(或)晶体结构造成的。 四、简答题(每题5分,共20分) 1、阐述特征X射线产生的物理机制 答当外来电子动能足够大时,可将原子内层(K壳层)中某个电子击出去,于是在原来的位置出现空位,原子系统的能量因此而升高,处于激发态,为使系统能量趋于稳定,由外层电子向内层跃迁。由于外层电子能量高于内层电子能量,在跃迁过程中,其剩余能量就要释放出来,形成特征X 射线。 2、简述扫描电镜的结构。 扫描电镜包括以下几个部分: (1)电子光学系统由电子抢、电磁透镜、光阑、样品室等部件组成。 (2)信号收集和显示系统 二次电子和背反射电子收集器是扫描电镜中最主要的信号检测器。

实验三实验报告

实验三实验报告 1、简易计算器 (1)问题描述 由键盘输入一算术表达式,以中缀形式输入,试编写程序将中缀表达式转换成一棵二叉表达式树,通过对该的后序遍历求出计算表达式的值。 (2)基本要求 a.要求对输入的表达式能判断出是否合法。不合法要有错误提示信息。 b.将中缀表达式转换成二叉表达式树。 c.后序遍历求出表达式的值 (3)数据结构与算法分析 一棵表达式树,它的树叶是操作数,如常量或变量名字,而其他的结点为操作符。 a.建立表达式树。二叉树的存储可以用顺序存储也可用链式存储。当要创建二叉树时,先从表达式尾部向前搜索,找到第一个优先级最低的运算符,建立以这个运算符为数据元素的根结点。注意到表达式中此运算符的左边部分对应的二叉绔为根结点的左子树,右边部分对应的是二叉绔为根结点的右子树,根据地这一点,可用递归调用自己来完成对左右子树的构造。 b.求表达式的值。求值时同样可以采用递归的思想,对表达式进行后序遍历。先递归调用自己计算左子树所代表的表达式的值,再递归调用自己计算右子树代表的表达式的值,最后读取根结点中的运算符,以刚才得到的左右子树的结果作为操作数加以计算,得到最终结果。 (4)需求分析 程序运行后显示提示信息,输入任意四则运算表达式,倘若所输入的表达式不合法程序将报错。 输入四则运算表达式完毕,程序将输出运算结果。 测试用的表达式须是由+、-、*、/运算符,括号“(”、“)”与相应的运算数组成。运算数可以是无符号浮点型或整型,范围在0~65535。 (5)概要设计 二叉树的抽象数据类型定义 ADT BinaryTree{ 数据对象:表达式运算数{ num | 0< num < 65535 } 表达式运算符{ opr | + , - , * , / } 数据关系:由一个根结点和两棵互不相交的左右子树构成,且树中结点具有层次关系。根结点必须为运算符,叶子结点必须为运算数。 基本操作: InitBiTree(&T , &S) 初始条件:存在一四则运算前缀表达式S。 操作结果:根据前缀表达式S构造相应的二叉树T。 DestroyBiTree(&T) 初始条件:二叉树T已经存在。 操作结果:销毁T。 Value(&T) 初始条件:二叉树T已经存在。 操作结果:计算出T所表示的四则运算表达式的值并返回。

机械工程测试技术基础试题及答案

《机械工程测试技术基础》课后答案 章节测试题 第一章 信号及其描述 (一)填空题 1、 测试的基本任务是获取有用的信息,而信息总是蕴涵在某些物理量之中,并依靠它们来 传输的。这些物理量就是 ,其中目前应用最广泛的是电信号。 2、 信号的时域描述,以 为独立变量;而信号的频域描述,以 为独立变量。 3、 周期信号的频谱具有三个特 点: , , 。 4、 非周期信号包括 信号和 信号。 5、 描述随机信号的时域特征参数有 、 、 。 6、 对信号的双边谱而言,实频谱(幅频谱)总是 对称,虚频谱(相频谱)总是 对 称。 (二)判断对错题(用√或×表示) 1、 各态历经随机过程一定是平稳随机过程。( ) 2、 信号的时域描述与频域描述包含相同的信息量。( ) 3、 非周期信号的频谱一定是连续的。( ) 4、 非周期信号幅频谱与周期信号幅值谱的量纲一样。( ) 5、 随机信号的频域描述为功率谱。( ) (三)简答和计算题 1、 求正弦信号t x t x ωsin )(0=的绝对均值μ|x|和均方根值x rms 。 2、 求正弦信号)sin()(0?ω+=t x t x 的均值x μ,均方值2x ψ,和概率密度函数p(x)。 3、 求指数函数)0,0()(≥>=-t a Ae t x at 的频谱。 4、 求被截断的余弦函数???≥<=T t T t t t x ||0 ||cos )(0ω的傅立叶变换。 5、 求指数衰减振荡信号)0,0(sin )(0≥>=-t a t e t x at ω的频谱。 第二章 测试装置的基本特性 (一)填空题 1、 某一阶系统的频率响应函数为121 )(+=ωωj j H ,输入信号2 sin )(t t x =,则输出信号)(t y 的频率为=ω ,幅值=y ,相位=φ 。 2、 试求传递函数分别为5.05.35.1+s 和222 4.141n n n s s ωωω++的两个环节串联后组成的系统的 总灵敏度。 3、 为了获得测试信号的频谱,常用的信号分析方法有 、 和 。 4、 当测试系统的输出)(t y 与输入)(t x 之间的关系为)()(00t t x A t y -=时,该系统能实现 测试。此时,系统的频率特性为=)(ωj H 。 5、 传感器的灵敏度越高,就意味着传感器所感知的 越小。 6、 一个理想的测试装置,其输入和输出之间应该具有 关系为最佳。 (二)选择题 1、 不属于测试系统的静特性。 (1)灵敏度 (2)线性度 (3)回程误差 (4)阻尼系数 2、 从时域上看,系统的输出是输入与该系统 响应的卷积。 (1)正弦 (2)阶跃 (3)脉冲 (4)斜坡

试验 --循环队列的基本操作及应用

数据结构实验报告 ----试验三循环队列的基本操作及应用 一、问题描述: 熟悉并掌握循环队列的相关操作,自己设计程序,实现循环队列的构造、清空、销毁及队列元素的插入和删除等相关操作。 二、数据结构设计: #define MAXQSIZE 10 //最大队列长度 struct SqQueue { QElemType *base; //初始化动态分配存储空间 Int front; // 头指针,若队列不空,只想对列头元素 int rear; //尾指针,若队列不空,指向队列尾元素的 //下一个位置 }; 三、功能设计: 程序中所涉及到的函数如下: Status InitQueue(SqQueue &Q) //构造一个空队列Q Status DestroyQueue(SqQueue &Q) //销毁队列Q,Q不再存在 Status ClearQueue(SqQueue &Q) //将Q清为空队列 Status QueueEmpty(SqQueue Q) //若队列Q为空队列,则 //返回TRUE,否则返回FALSE int QueueLength(SqQueue Q) //返回Q的元素个数,即队列长度Status GetHead(SqQueue Q,QElemType &e)//若队列不空,则用e返回Q的对 //头元素,并返回OK,否则返回ERROR Status EnQueue(SqQueue &Q,QElemType e)//插入元素e为Q的新的队尾元素Status DeQueue(SqQueue &Q,QElemType &e)//若队列不空,则删除Q的队头 //元素,用e返回其值,并返回 //OK,否则返回ERROR Status QueueTraverse(SqQueue Q,void(*vi)(QElemType))//从队头到队尾依次 //对队列Q中每个元素调用函数 //vi()。一旦vi失败,则操作失败四、源程序: // c1.h (程序名) #include #include #include // malloc()等 #include // INT_MAX等 #include // EOF(=^Z或F6),NULL

相关主题
文本预览
相关文档 最新文档