东北大学汇编实验

东北大学汇编实验
东北大学汇编实验

(附录二)

汇编语言程序设计

实验报告

实验1 数据传送指令

1、实验目的:了解和掌握 MOV、PUSH、POP、XCHG四条指令的作用和在编程中的用法。

2、实验要求:

(Ⅰ)采用立即数寻址方式将19E0H,3F56H,0AF37H,9A81H 分别送给EAX、EBX、ECX、EDX四个寄存器。

记录:操作前 EAX= 750A3388 、 EBX= 7EFDE000 、 ECX= 00000000 、 EDX= 01361005

操作后 EAX= 000019E0 、 EBX= 00003F56 、 ECX= 0000AF37 、 EDX= 00009A81

操作过程中所用到的指令:

INCLUDE Irvine32.inc

.code

main PROC

call DumpRegs

mov eax,19E0H

mov ebx,eax

mov ecx,ebx

mov edx,ecx

call DumpRegs

exit

main ENDP

END main

(Ⅱ)采用采用寄存器寻址方式将19E0H送给EBX、ECX、EDX 三个寄存器。

记录:操作前 EAX= 750A3388 、 EBX= 7EFDE000 、 ECX= 000000000 、 EDX= 013C1005

操作后 EAX= 000019E0 、 EBX= 000019E0 、 ECX= 000019E0 、 EDX= 000019E0

操作过程中所用到的指令:

INCLUDE Irvine32.inc

.code

main PROC

call DumpRegs

mov eax,19E0H

mov ebx,eax

mov ecx,ebx

mov edx,ecx

call DumpRegs

exit

main ENDP

END main

(2)对EAX、EBX、ECX、EDX四个寄存器进行出入堆栈的操作。

(Ⅰ)将EAX、EBX、ECX、EDX四个寄存器的内容依次压入堆栈中,注意观察栈指针寄存器和堆栈内容的变化。

记录:压入EAX前 ESP= 003AF8E8 ,(ESP)= 750A339A

压入EAX后 ESP= 003AF8E4 ,(ESP)= 750A3388

压入EBX前 ESP= 003AF8E4 ,(ESP)= 750A3388

压入EBX后 ESP= 003AF8E0 ,(ESP)= 7EFDE000

压入ECX前 ESP= 003AF8E0 ,(ESP)= 7EFDE000

压入ECX后 ESP= 003AF8DC ,(ESP)= 00000000

压入EDX前 ESP= 003AF8DC ,(ESP)= 00000000

压入EDX后 ESP= 003AF8D8 ,(ESP)= 00241005

操作过程中所用到的指令:INCLUDE Irvine32.inc

.code

main PROC

call DumpRegs

mov eax,[esp]

call DumpRegs

push eax

call DumpRegs

push ebx

call DumpRegs

push ecx

call DumpRegs

push edx

call DumpRegs

exit

main ENDP

END main

(Ⅱ)将堆栈中的内容依次弹出到EAX、EBX、ECX、EDX四个寄存器,注意观察栈指针寄存器和堆栈内容的变化。

记录:弹出到EAX前 ESP= 003AF8D8 ,(ESP)= 00241005

弹出到EAX后 ESP= 003AF8DC ,(ESP)= 00000000

弹出到EBX前 ESP= 003AF8DC ,(ESP)= 00000000

弹出到EBX后 ESP= 003AF8E0 ,(ESP)= 7EFDE000

弹出到ECX前 ESP= 003AF8E0 ,(ESP)= 7EFDE000

弹出到ECX后 ESP= 003AF8E4 ,(ESP)= 750A3388

弹出到EDX前 ESP= 003AF8E4 ,(ESP)= 750A3388

弹出到EDX后 ESP= 003AF8E8 ,(ESP)= 750A339A

操作过程中所用到的指令:pop eax

call DumpRegs

pop ebx

call DumpRegs

pop ecx

call DumpRegs

pop edx

call DumpRegs

exit

main ENDP

END main

(3)已知EAX=3F56H,分别利用存储器直接寻址方式和存储器间接寻址方式,将EAX寄存器的内容送到内存单元中。

(Ⅰ)存储器直接寻址方式

记录:送出到EAX前 EAX= 00003F56,[var]=00000000

送出到EAX后 EAX= 00003F56 ,[var]=00003F56

操作过程中所用到的指令:

include Irvine32.inc

.data

var dword ?

.code

main proc

mov eax,var

call dumpregs

mov eax,3f56h

call dumpregs

mov var,eax

call dumpregs

call writehex

exit

main endp

end main

(Ⅱ)存储器间接寻址方式

记录:送出到EAX前 EAX= 00003F56 ,[var]=00000000

用于存放地址码的寄存器( esi )= 00000000

送出到EAX后 EAX=00003F56,[var]=00003F56

操作过程中所用到的指令:

include Irvine32.inc

.data

var dword ?

.code

main proc

mov eax,3F56H

call dumpregs

mov esi,offset var

mov [esi],eax

call dumpregs

mov edx,var

exit

main endp

end main

(4)已知EAX =3F56H,ECX =4690H,利用交换指令交换这两个寄存器的内容。

记录:交换前EAX= 00003F56H,ECX= 00004690H

交换后 EAX= 00004690H, ECX=00003F56H

操作过程中所用到的指令:

Include Irvine32.inc

.code

main PROC

mov eax,3F56H

mov ecx,4690H

call DumpRegs

xchg eax,ecx

call DumpRegs

exit

main ENDP

END main

实验二逻辑指令、跳转指令与分支程序设计

1、实验目的:了解和掌握逻辑指令、比较指令、无条件/有条件转移类指令的功能和作用,以及此类指令的使用方法。

2、实验要求:具体了解和掌握逻辑指令、比较指令、无条件/有条件转移类指令的使用和在使用时应注意的问题,学习分支型程序设计的一般方法。

(1)在DEBUG系统状态下,分别编制、调试并记录以下逻辑指令程序段的每一条指令的运行情况:

(Ⅰ)

mov al,41 ┃EAX = 750A3329H AL=29H or al,20 ┃EAX = 750A333DH AL=3DH (Ⅱ)

mov al,66 ┃EAX = 750A3342H AL=42H and al,0df ┃EAX = 750A3342H AL=42H (Ⅲ)

mov EAX,5678 ┃EAX = 0000162EH

xor EAX,EAX ┃EAX = 00000000H

(Ⅳ)

mov EAX,0ff00 ┃EAX=0000FF00H

not EAX ┃FFFF00FFH

(Ⅴ)

mov EAX,1234 ┃EAX = 000004D2H SF=0 ZF=1 OF=0

test EAX,1 ┃EAX = 000004D2H SF=0 ZF=1 OF=0

test EAX,2 ┃EAX = 000004D2H SF=0 ZF=0 OF=0

test EAX,4 ┃EAX = 000004D2H SF=0 ZF=1 OF=0

test EAX,8 ┃EAX = 000004D2H SF=0 ZF=1 OF=0

test EAX,10 ┃EAX = 000004D2H SF=0 ZF=0 OF=0

test EAX,20 ┃EAX = 000004D2H SF=0 ZF=0 OF=0

test EAX,40 ┃EAX = 000004D2H SF=0 ZF=1 OF=0

test EAX,80 ┃EAX = 000004D2H SF=0 ZF=0 OF=0

test指令的作用是在源操作数和目的操作数之间进行布尔“与”运算,但不改变目的操作数,只是设置相应的CPU标志。

(2) 已知DATA单元开始存放三个带符号数,编制程序,检查三个数据是否同号,若同时为正,则在显示器上显示“+”;同时为负,则显示“-”;否则显示空格“”。

要求:分别用三组数据(同时为正,同时为负,异号)调试程序,验证程序的正确性。

INCLUDE Irvine32.inc

.data

var1 sword 2

var2 sword -1

var3 sword 3

.code

main PROC

;三个数全部为正

RCL var1,1 ;把最高位送到进位位

jc A ;进位位为1,即CF为1,符号位为1负数,跳转

RCL var2,1

jc B

RCL var3,1

jc B

mov al,'+'

call writechar

jnc D ;全部为正,跳到结束

A: ;三个数全部为负 ,此时已有var1为负

RCL var2,1

jnc B ;无进位位,符号为正,跳转RCL var3,1

jnc B ;如果为正则跳转

mov al,'-'

call writechar

jc D ;全部为负,跳到结束

B: ;另外一种情况

mov al,' '

call writechar

D:

exit

main ENDP

END main

实验三算术运算类指令、移位指令及循环程序设计

1、实验目的:了解和掌握加、减、乘、除指令的在程序设计中的用法和应注意的问题,了解和掌握移位指令的功能、作用和方法。了解和掌握循环控制类指令的功能、作用和方法。学会循环程序设计的方法。学习汇编语言输出输入语句的设计。

2、实验要求:具体了解和掌握算术类指令、移位指令和循环控制类指令的使用,以及在使用时应注意的问题,学习循环程序设计的一般方法。

(1)在DEBUG系统状态下,分别编制、调试并记录以下加、减程序段的每一条指令的运行情况,查看寄存器的结果:

(Ⅰ)

MOV EAX,2389 ┃EAX = 00000955H EBX = 7EFDE000H

MOV EBX,0CEDFH ┃EAX = 00000955H EBX = 0000CEDFH

ADD EAX,EBX ┃EAX = 0000D834H EBX = 0000CEDFH

(Ⅱ)

MOV EAX,2389 ┃EAX = 00000955H EBX = 7EFDE000H

MOV EBX,0CEDFH ┃EAX = 00000955H EBX = 0000CEDFH

SUB EAX,EBX ┃EAX = FFFF3A76H EBX = 0000CEDFH

(Ⅲ)

MOV EAX,2389 ┃EAX = 00000955H EBX = 7EFDE000H

MOV EBX,0CEDFH ┃EAX = 00000955H EBX = 0000CEDFH

ADD AH,BH ┃EAX = 0000D755H EBX = 0000CEDFH AH=D7H BH=CEH

ADD AL,BL ┃EAX = 0000D734H EBX = 0000CEDFH AL=34H BL=DFH

(Ⅳ)

MOV EAX,2389 ┃EAX = 00000955H EBX = 7EFDE000H

MOV EBX,0CEDFH ┃EAX = 00000955H EBX = 0000CEDFH

ADD AH,BH ┃EAX = 0000D755H EBX = 0000CEDFH AH=D7H BH=CEH

ADC AL,BL ┃EAX = 0000D734H EBX = 0000CEDFH AL=34H BL=DFH

(2)在DEBUG系统状态下,分别编制、调试并记录以下乘、除程序段的每一条指令的运行情况:

(Ⅰ)

MOV AL,23 ┃EAX = 750A3317H EBX =

7EFDE000H AL=17H

MOV BL,0CEH ┃EAX = 750A3317H EBX =

7EFDE0CEH BL=CEH

MUL BL ┃EAX = 750A1282H EBX =

7EFDE0CEH

(Ⅱ)

MOV AX,2389 ┃EAX = 750A0955H EBX =

7EFDE000H

MOV BX,0CEDFH ┃EAX = 750A0955H EBX =

7EFDCEDFH

MUL BX ┃EAX = 750A870BH EBX =

7EFDCEDFH

(Ⅲ)

MOV AX,2389 ┃EAX = 750A0955H EBX =

7EFDE000H

MOV BL,0CEH ┃EAX = 750A0955H EBX =

7EFDE0CEH

DIV BL ┃EAX = 750A7B0BH EBX =

7EFDE0CEH

(Ⅳ)

MOV AX,2389 ┃EAX = 750A0955H EBX = 7EFDE000H EDX = 00C41005H

MOV DX,0856 ┃EAX = 750A0955H EBX = 7EFDE000H EDX = 00C40358H

MOV BX,0CEDFH ┃EAX = 750A0955H EBX = 7EFDCEDFH EDX = 00C40358H

DIV BX ┃EAX = 750A0423H EBX = 7EFDCEDFH EDX = 00C544D8H

(3)在DEBUG系统状态下,分别编制、调试并记录以下移位指令程序段的每一条指令的运行情况:

(Ⅰ)

mov EAX,420 ┃EAX = 000001A4H

shl EAX,1 ┃EAX = 00000348H

(Ⅱ)

mov EAX,240 ┃EAX = 000000F0H EBX = 7EFDE000H ECX = 00000000H

mov cl,4 ┃EAX = 000000F0H EBX = 7EFDE000H ECX = 00000004H

shl EAX,cl ┃EAX = 00000F00H EBX = 7EFDE000H ECX = 00000004H

(Ⅲ)

mov EAX,8000 ┃EAX = 00001F40H EBX = 7EFDE000H ECX = 00000000H

mov cl,4 ┃EAX = 00001F40H EBX = 7EFDE000H ECX = 00000004H

shr EAX,cl ┃EAX = 000001F4H EBX = 7EFDE000H ECX = 00000004H

(Ⅳ)

mov EAX,8000 ┃EAX = 00001F40H EBX = 7EFDE000H ECX = 00000000H

mov cl,4 ┃EAX = 00001F40H EBX = 7EFDE000H ECX = 00000004H

sar EAX,cl ┃EAX = 000001F4H EBX = 7EFDE000H ECX = 00000004H

(Ⅴ)

mov EAX,8086 ┃EAX = 00001F96H EBX = 7EFDE000H ECX = 00000000H

mov cl,4 ┃EAX = 00001F96H EBX = 7EFDE000H ECX = 00000004H

rol EAX,cl ┃EAX = 0001F960H EBX =

(Ⅵ)

mov EAX,8086 ┃EAX = 00001F96H EBX = 7EFDE000H ECX = 00000000H

mov cl,4 ┃EAX = 00001F96H EBX = 7EFDE000H ECX = 00000004H

ror EAX,cl ┃EAX = 600001F9H EBX = 7EFDE000H ECX = 00000004H

(Ⅶ)

mov EAX,8086 ┃EAX = 00001F96H EBX = 7EFDE000H ECX = 00000000H

mov cl,4 ┃EAX = 00001F96H EBX =

7EFDE000H ECX = 00000004H

rcl EAX,cl ┃EAX = 0001F960H EBX = 7EFDE000H ECX = 00000004H

(Ⅷ)

mov EAX,8086 ┃EAX = 00001F96H EBX = 7EFDE000H ECX = 00000000H

mov cl,4 ┃EAX = 00001F96H EBX = 7EFDE000H ECX = 00000004H

rcr EAX,cl ┃EAX = C00001F9H EBX =

东北大学操作系统第一次实验报告

实验1:熟悉Linux系统 一、题目:熟悉Linux系统 二、目的: 熟悉与掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。 1、启动、退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)… 2、C语言编辑、编译 三、内容及要求: 1、熟练掌握Linux基本文件命令; 2、掌握Linux编辑程序、对源代码进行编译、连接、运行及调试的过程; 3、认真做好预习,书写预习报告; 4、实验完成后要认真总结、完成实验报告。 四、内容及要求: 在Linux环境下编制、调试源程序的实际过程(每一步的具体说明)。 实验2:进程状态 一、题目:进程状态 二、目的: 自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容、组织的变化,理解进程与其PCB间的一一对应关系。 三、内容及要求 1、设计并实现一个模拟进程状态转换及其相应PCB组织结构变化的程序; 2、独立设计、编写、调试程序; 3、程序界面应能反映出在模拟条件下,进程之间状态转换及其对应的PCB组织的变化。 4、进程的状态模型(三状态、五状态、七状态或其它)可自行选择, 5、代码书写要规范,要适当地加入注释; 6、鼓励在实验中加入新的观点或想法,并加以实现;

7、认真进行预习,完成预习报告; 8、实验完成后,要认真总结,完成实验报告。 四、程序流程图 图4、1 进程转换流程五、使用的数据结构及其说明 struct PCB //进程控制块PCB { char name; //名字标识 string state; //状态 int time; //执行时间 }; typedef struct PCB ElemType; struct QNode { ElemType data; struct QNode *next; }; //链式队列结点 typedef struct QNode QNode; //结点 typedef struct QNode *PNode;

东北大学DIP实验一

实验一 一、插值和采样 1 (a)读入图像head.jpg并显示。 >> A=imread('C:\Documents and Settings\Administrator\桌面\head.jpg'); imshow(A) (b)计算图像维度。 >> size(A) ans = 256 256 (c)此图像大小为40cm*40cm,计算图像的采样距离。 x=40cm/256=0.15625cm=1.5625mm 同理,y=1.5625mm (d)逻辑坐标(图像坐标)为(22, 54)、(126, 241)的点,其空间坐标是多少? 逻辑坐标(图像坐标)为(22, 54)的点,空间坐标为

(22*1.5625mm,54*1.5625mm)=(34.375mm,84.375mm); 同理,逻辑坐标(图像坐标)为(126, 241)的点,空间坐标为(196.875mm,376.05625mm)。 (e)求空间坐标为(14.2188, 5.3125)、(21.4063,34.5313)处的像素值。>>b=40/256; b = 0.1563 >> x3=(14.2188/b)-1 x3 = 90.0003 >> y3=(5.3125/b)-1 y3 = 33 >> x4=floor(x3) x4 = 90 >> x5=ceil(x3) x5 = 91 >> C1=A([x4],[y3]) C1 = 115 >> C2=A([x5],[y3]) C2 = 108 >> C3=0.9997*C1+0.0003*C2 C3 = 115 >> x6=(21.4063/b)-1

[东北大学]18年6月考试《数据库技术及应用Ⅱ》考核作业

东北大学继续教育学院 数据库技术及应用II 试卷(作业考核线上) B 卷学习中心:院校学号:姓名 (共 7 页) 一、单选题(每小题2分,共10小题,20分) [ ] 1.网状数据库中记录与记录之间的联系是通过 A.指针 B.索引 C.公共属性 D.数据项 [ ] 2.在数据库的三级模式结构中,模式有 A.0个 B.1个 C.2个 D.任意多个 [ ] 3.关系数据库中,实现主码标识元组的作用是通过 A.实体完整性规则 B.参照完整性规则 C.用户自定义的完整性 D.属性的值域 [ ] 4.设计ER图,属于数据库设计中的 A.需求分析 B.逻辑设计 C.概念设计 D.物理设计· [ ] 5. 为了使索引键的值在基本表中唯一,在建立索引的语句中应使用保留字 A. UNIQUE B. COUNT C. DISTINCT D. UNION [ ] 6.在数据库的三级模式结构中,外模式可能有 A.1个 B.2个 C.0个 D.任意多个 [ ] 7. 在某个数据库中建立了表person(no,name,sex,birthday),其中No为表的主码,表中已有的记录如下图所示:

以下四个语句中能够正确执行的插入操作是 A. INSERT INTO person VALUES(6,′王中′,′男′,′1964/03/08′) B. INSERT INTO person (name,sex) VALUES(′王中′,′男′) C. INSERT INTO person VALUES(2,′男′,′王中′,′1964/03/08′) D. INSERT INTO person(no,sex) VALUES(2,′男′) [ ] 8.下面的说法不确切的是 A. 索引用来加速数据的访问速度和保证表的实体完整性的。 B. 索引有聚簇和非聚簇索引两种。 C. 聚簇索引使表的物理顺序与索引顺序一致,一个表只能有一个群聚索引。 D. 非聚簇索引与表的物理顺序无关,一个表应该建立多个非聚簇索引。 [ ] 9. 在并发操作中,加锁不能解决的问题是 A. 数据更新丢失 B. 事务故障 C. 读未提交数据 D. 不一致性检索 [ ] 10. 用来记录对数据库中数据进行的每一次更新操作的是 A. 数据字典 B. 后援副本 C. 日志文件 D. 数据库 二、填空题(每小题1分,共10小题,10分) 11.数据模型通常由数据结构、数据操作和()三部分组成。 12.数据操作描述了系统的()特性。 13. 对数据库的操作主要有数据检索和()两大类。 14.将关系模式R分解为3NF,一定可以满足既具有无损连接性,又保持()。15.行列子集视图是指,从单个()导出,只是去掉了其中的某些行和某些列。16.嵌入式SQL引入了()机制,用来协调两种不同的处理方式. 17.系统函数为三类:标量函数、聚合函数和()函数。 18.在SQL Server的建立索引的原则之一,在经常()的字段上最好建立索引。19.一级封锁协议是指任一事务在修改某数据之前,必须先对其加上()锁,直至事务结束才能释放之。 20.触发器能够对数据库中的相关表实现()更改。 三、简答题(每小题5分,共6小题,30分) 21.数据库的三级模式描述。

40875][东北大学]20年7月考试《数据结构Ⅱ》考核作业(答案)

东北大学继续教育学院 数据结构II 试卷(作业考核线上1) A 卷 学习中心:奥鹏远程教育沈阳学习中心(直属)[32]院校学号:C09024011930344 姓名何家强 (共 6 页) [ A]1.抽象数据类型的三个组成部分分别为 A.数据对象、数据关系和基本操作 B.数据元素、逻辑结构和存储结构 C.数据项、数据元素和数据类型 D.数据元素、数据结构和数据类型 [ B]2.要求相同逻辑结构的数据元素具有相同的特性,其含义为 A. 数据元素具有同一的特点 B. 不仅数据元素包含的数据项的个数相同,而且其对应数据项的类型要一致 C. 每个数据元素都一样 D. 仅需要数据元素包含的数据项的个数相同 [ D]3.下列各式中,按增长率由小至大的顺序正确排列的是 A.n,n!,2n ,n3/2 B.n3/2,2n,n logn,2100 C.2n,log n,n logn,n3/2 D.2100,logn, 2n, n n [B ]4. 在下列哪种情况下,线性表应当采用链表表示为宜 A.经常需要随机地存取元素 B.经常需要进行插入和删除操作 C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变 [ C]5.设指针p指向双链表的某一结点,则双链表结构的对称性是 A. p->prior->next=p->next->next; B. p->prior->prior=p->next->prior; C. p->prior->next=p-> next->prior; D. p->next->next= p->prior->prior;

[D ]6. 已知指针p和q分别指向某带头结点的单链表中第一个结点和最后一个结点。假设指 针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为 A. s->next=q;p->next=s->next; B. s->next=p;q->next=s->next; C. p->next=s->next;s->next=q; D. q->next=s->next;s->next=p; [A ]7. 栈和队列的共同特点是 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 [D ]8. 对于链队列,在进行插入运算时. A. 仅修改头指针 B. 头、尾指针都要修改 C. 仅修改尾指针 D.头、尾指针可能都要修改 [B ]9.设有一个顺序栈的入栈序列是1、2、3,则3个元素都出栈的不同排列个数为 A.4 B.5 C. 6 D. 7 [D ]10.设一个栈的输入序列为A,B,C,D,则借助一个栈所得到的输出序列不可能是 A.A,B,C,D B.D,C,B,A C. A,C,D,B D. D,A,B,C [ C]11.表达式a*(b+c)-d的后缀表达式是 A.abcd*+- B.abc*+d- C.abc+*d- D.-+*abcd [B ]12.某二叉树的先序序列和后序序列正好相反,则该二叉树的特点一定是 A. 空或只有一个结点 B.高度等于其结点数 C. 任一结点无左孩子 D.任一结点无右孩子 [ B]13.下面的说法中正确的是 (1)任何一棵二叉树的叶子结点在种遍历中的相对次序不变。 (2)按二叉树定义,具有三个结点的二叉树共有6种。 A.(1),(2) B.(1) C.(2) D.(1),(2)都错 [ B]14.树有先序遍历和后序遍历,树可以转化为对应的二叉树。下面的 说法正确的是 A.树的后序遍历与其对应的二叉树的先序遍历相同 B.树的后序遍历与其对应的二叉树的中序遍历相同 C.树的先序序遍历与其对应的二叉树的中序遍历相同 D.以上都不对 [D ]15.下列说法正确的是 (1)二又树按某种方式线索化后,任一结点均有前趋和后继的线索 (2)二叉树的先序遍历序列中,任意一个结点均处于其子孙结点前 (3)二叉排序树中任一结点的值大于其左孩子的值,小于右孩子的值 A.(1)(2)(3) B.(1)(2) C.(1)(3) D.都不对 [D ]16. 二叉树的第k层的结点数最多为 A.2k-1 B.2K+1

东北大学C++实验报告6

东北大学C++实验报告6 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

实验六 1.实验要求 (1)定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――”(自减)运算符,实现对坐标值的改变。 (2)定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。 2. 实验内容及实验步骤 (1) 编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point&operator--();Point operator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:1ab8_1.cpp。 (2) 编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2.cpp。 3. 源程序 Lab8_1 #include using namespace std; class Point{ public: Point(int X,int Y): _x(X),_y(Y){} Point operator++(); Point operator++(int); Point operator--(); Point operator--(int); void Putout() const; private:

东北大学软件学院数据库系统概论期末复习题

这是数据库期末复习题1 1.用SQL的有关语句定义 1)学生关系Student,包括学号Sno、姓名SN、年龄SA; 2)课程关系Course,包括课程号Cno、课程名CN、任课教师CT; 3)学生选课关系,包括Sno、Cno和成绩G。 注意:说明主键码和外键码(如果有的话),并在键码属性上建立索引。(12分) 1.参考答案 1) CREATE TABLE Student( Sno INT PRIMARY KEY, SN CHAR(30), SA INT ); 2) CREATE TABEL Course( Cno INT PRIMARY KEY, CN CHAR(30), CT CHAR(30) ); 3) CREATE TABEL SC( Sno INT, Cno INT, G INT, PRIMAYR KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) ); 1.按题1的学生关系模式,用SQL的有关语句 1)授予赵华对学生关系Student的插入和修改权限; 2)插入任意3个学生的完整信息; 3)修改所有学生的年龄(加1)。(12分) 2.参考答案 1) GRANT INSERT, UPDATE, ON Student TO 赵华; 2) INSERT INTO Student (TABLE (01001,’赵华’,19),

(01002,’李芳’,18), (01003,’刘红’,20), ); 3)UPDATE Student SET SA=SA+1; 2.结合题1定义的学生选课数据库,用SQL语句查询计算机系学生数据库课的成绩,输出学生姓名和成绩,按成绩排序(降序),若成绩相同,再按 学号排序(升序)。(6分) 3.参考答案 SELECT SN,G FROM Student,Course,SC WHERE = AND = AND =’数据库’ ORDER BY G DESC,Sno; 4.已知关系R、S如下所示,求域演算表达式的结果。 R A B C S D E F a c 5 4 d 8 b d 3 5 a 1 m e 4 3 e 2 (4分) 4参考答案 4. R1 X Y Z a c 5 b d 3 m e 4 4 d 8 5.按嵌入式SQL的格式插入任意一个学生的学号、姓名、系别和年龄。(6分)5.参考答案 1)说明: EXEC SQL BEGIN DECLARE SECTION; int sno; char sname[30]; int sage; char SQLSTATE[6]; EXEC SQL END DECLARE SECTION; 赋值: sno:=01001; sname:=’赵华’; sage:=19; 4)插入: EXEC SQL INSERT INTO Student

数据结构实验-互联网域名查询实验报告

实验报告 实验课程:数据结构 实验项目:实验三互联网域名查询 专业:计算机科学与技术 班级: 姓名: 学号: 指导教师:

目录一、问题定义及需求分析 (1)问题描述 (2)实验任务 (3)需求分析 二、概要设计: (1)抽象数据类型定义 (2)主程序流程 (3) 模块关系 三、详细设计 (1)数据类型及存储结构 (2)模块设计 四、调试分析 (1)调试分析 (2)算法时空分析 (3)经验体会 五、使用说明 (1)程序使用说明 六、测试结果 (1)运行测试结果截图 七、附录 (1)源代码

一、问题定义及需求分析 (1)实验目的 互联网域名查询 互联网域名系统是一个典型的树形层次结构。从根节点往下的第一层是顶层域,如cn、com等,最底层(第四层)是叶子结点,如www等。因此,域名搜索可以看成是树的遍历问题。 (2)实验任务 设计搜索互联网域名的程序。 (3)需求分析: 1)采用树的孩子兄弟链表等存储结构。 2)创建树形结构。 3)通过深度优先遍历搜索。 4)通过层次优先遍历搜索。 二、概要设计: 采用孩子兄弟链表存储结构完成二叉树的创建; 主程序流程: 创建根节点域名输入域名拆分根据孩子兄弟链表表示的树进行插入调用层次优先遍历输出遍历结果调用深度优先遍历输出遍历结果结束程序 模块关系: 输入域名 创建孩子兄弟树 层次优先遍历输出结果 深度优先遍历输出结果 结束 三、详细设计 孩子兄弟链表结构: typedef struct CSNode{ ElemType data[10]; struct CSNode *firstchild, *nextsibling; }*CSTree;

2016年东北大学实验室安全考试 96分

1、[判断题]火灾对实验室构成的威胁最为严重,最为直接。应加强对火灾三要素(易燃物、助燃物、点火源)的控制。(分值1.0) 你的答案:正确 2、[判断题]同位素试剂是非密封型放射源。(分值1.0) 你的答案:正确 3、[判断题]内照射指放射性物质呼吸道吸入、消化道进入、皮肤伤口渗入等途径进入体内,造成 放出的射线及化学毒性对人体器官的双重损伤。(分值1.0) 你的答案:正确 4、[判断题]Ⅴ类放射源为极低危险源。不会对人造成永久性损伤。(分值1.0) 你的答案:正确 5、[判断题]辐射事故分为特别重大辐射事故、重大辐射事故、较大辐射事故和一般辐射事故四个 等级。(分值1.0) 你的答案:正确 6、[判断题]离开放射性实验室前必须洗手。(分值1.0) 你的答案:正确 7、[判断题]万用表电阻档可测量绝缘电阻。(分值1.0) 你的答案:错误 8、[判断题]50毫安的工频电流就可以使人遭到致命电击。(分值1.0) 你的答案:正确 9、[判断题]在进行电子线路板焊接后的剪脚工序时,剪脚面应背离身体特别是脸部,防止被剪下 引脚弹伤。(分值1.0) 你的答案:正确 10、[判断题]漏电保护器对两相触电(人体双手触及两相电源),不起保护作用。(分值1.0)你的答案:正确 11、[判断题]打开含有高压变压器或电容器的电子仪器的盖子是危险的。(分值1.0) 你的答案:正确 12、[判断题]声级计可放置在高温、潮湿、有污染的地方。(分值1.0) 你的答案:错误 13、[判断题]大型设备运行不需要两名以上工作人员在场。(分值1.0) 你的答案:错误 14、[判断题]高速设备和精密设备应在管理人员指导下使用。(分值1.0) 你的答案:正确 15、[判断题]消防队在扑救火灾时,有权根据灭火的需要,拆除或者破损临近火灾现场的建筑。(分值1.0)

东北大学操作系统第一次实验报告

实验1:熟悉Linux系统 一、题目:熟悉Linux系统 二、目的: 熟悉和掌握Linux系统基本命令,熟悉Linux编程环境,为以后的实验打下基础。 1、启动、退出、ls(显示目录内容)、cp(文件或目录的复制)、mv(文件、目录更名或移动)、rm(删除文件或目录)、mkdir(创建目录)、rmdir(删除空目录)、cd(改变工作目录)… 2、C语言编辑、编译 三、内容及要求: 1、熟练掌握Linux基本文件命令; 2、掌握Linux编辑程序、对源代码进行编译、连接、运行及调试的过程; 3、认真做好预习,书写预习报告; 4、实验完成后要认真总结、完成实验报告。 四、内容及要求: 在Linux环境下编制、调试源程序的实际过程(每一步的具体说明)。 实验2:进程状态 一、题目:进程状态

二、目的: 自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容、组织的变化,理解进程与其PCB间的一一对应关系。 三、内容及要求 1、设计并实现一个模拟进程状态转换及其相应PCB组织结构变化的程序; 2、独立设计、编写、调试程序; 3、程序界面应能反映出在模拟条件下,进程之间状态转换及其对应的PCB 组织的变化。 4、进程的状态模型(三状态、五状态、七状态或其它)可自行选择, 5、代码书写要规范,要适当地加入注释; 6、鼓励在实验中加入新的观点或想法,并加以实现; 7、认真进行预习,完成预习报告; 8、实验完成后,要认真总结,完成实验报告。 四、程序流程图

图4.1 进程转换流程五、使用的数据结构及其说明 struct PCB //进程控制块PCB { char name; //名字标识 string state; //状态 int time; //执行时间 }; typedefstruct PCB ElemType; structQNode { ElemType data; structQNode *next; }; //链式队列结点 typedefstructQNodeQNode; //结点 typedefstructQNode *PNode; typedefstruct { PNodefrnt; PNode rear;

东北大学数据库应用程序设计实践报告

课程编号:B080109004 数据库应用程序设计实践 报告 东北大学软件学院

1.问题定义 银行代收费系统给电力公司开发的一套缴费系统,方便用户通过网银支付电费。 主要的用例图: 图1 银行代收费系统用例图 根据用例图得出主要的业务需求: (1)抄表 系统管理员把抄表记录录入系统,抄表记录包括当前电表数、抄表日期、抄表人等信息,根据抄表记录,系统自动计算每个计费设备当月的应收电费。每个计费设备有唯一编号。 (2)查询 用户随时查询欠费金额。一个用户名下可能多个计费设备,查询欠费时,将所有计费设备欠费总和输出。需要考虑设备的余额问题。如果余额大于欠费,则欠费为0,更新余额,修改receivable中flag标志。 (3)缴费 在当月电费清单生成完毕后,用户可进行电费缴纳,缴纳金额可是任意金额。系统将缴费金额存入设备余额中,再次查询则欠费应该减少。 (4)冲正 用户在缴费过程中如果给其他用户缴费了,在当日0点前可以冲正,即把钱收回,放入余额,向payfee表中添加一个负数金额、相同银行流水号的记录。并且修改设备余额,此时查询欠费应该有改变。 (5)对帐 每个银行每日凌晨给电力公司的代缴费系统发送对账信息,代缴费系统记录对账结果,对账明细,对账异常信息进行存储。错误信息为100银行没有此记录。101企业没有此流水号.102银行企业金额不等。 2.数据库设计

(1)ER图设计: 自己设计的ER图: 经过老师修正统一的ER图: (2)建表语句 -- Create table create table Bank ( id number(4), name varchar2(20), code char(2) )

东北大学数据结构上机实验报告3

实验三树和图应用 一、实验目的 光纤管道铺设施工问题 问题描述 设计校园内有N个教学楼及办公楼,要铺设校园光纤网,如何设计施工方案使得工程总的造价为最省。 二、实验要求 设计校园光纤网铺设的最小生成树模拟程序。 1)采用邻接表或邻接矩阵存储结构。 2)分别采用普利姆算法和克鲁斯卡尔算法实现。 输入形式 对应的教学楼、办公楼数目n,各边权值即每栋楼之间的距离 输出形式 最小生成树,即总路程最小的路 程序功能 设计校园光纤网铺设的最小生成树模拟程序 三、设计概要 流程图 抽象数据类型的定义 class prims { private:

int n; //节点的个数 int graph_edge[99][4]; //图的边 int g; //图中边的个数 int tree_edge[99][4]; //树的边 int t; //树的边的个数 int s; //源节点 int T1[50],t1; // 第一部分 int T2[50],t2; //第二部分 public: void input(); int findset(int); void algorithm(); void output(); }; 各程序模块之间的调用关系 四、详细设计 定义prims类 private中进行对图的创建 public: void input(); int findset(int); void algorithm();

void output(); 开始界面 实现prims类中图的初始化 分别输入图中的顶点个数、图的边及其权值 算法构造 t=0;//初始化边的个数为0 t1=1; T1[1]=1; //资源节点 t2=n-1; int i; for(i=1;i<=n-1;i++) T2[i]=i+1; cout<<"\n\n*****运算开始*****\n\n\n"; while(g!=0 && t!=n-1) { int min=99; int p; int u,v,w; for(i=1;i<=g;i++) { if(findset(graph_edge[i][1])!=findset(graph_edge[i][2])) //如果u和v在不同的部分{ if(min>graph_edge[i][3]) { min=graph_edge[i][3]; u=graph_edge[i][1]; v=graph_edge[i][2]; w=graph_edge[i][3]; p=i; } } } for(int l=p;l

东北大学汇编实验

(附录二) 汇编语言程序设计 实验报告

实验1 数据传送指令 1、实验目的:了解和掌握 MOV、PUSH、POP、XCHG四条指令的作用和在编程中的用法。 2、实验要求: (Ⅰ)采用立即数寻址方式将19E0H,3F56H,0AF37H,9A81H 分别送给EAX、EBX、ECX、EDX四个寄存器。 记录:操作前 EAX= 750A3388 、 EBX= 7EFDE000 、 ECX= 00000000 、 EDX= 01361005 操作后 EAX= 000019E0 、 EBX= 00003F56 、 ECX= 0000AF37 、 EDX= 00009A81 操作过程中所用到的指令: INCLUDE Irvine32.inc .code main PROC call DumpRegs mov eax,19E0H mov ebx,eax mov ecx,ebx mov edx,ecx call DumpRegs

exit main ENDP END main (Ⅱ)采用采用寄存器寻址方式将19E0H送给EBX、ECX、EDX 三个寄存器。 记录:操作前 EAX= 750A3388 、 EBX= 7EFDE000 、 ECX= 000000000 、 EDX= 013C1005 操作后 EAX= 000019E0 、 EBX= 000019E0 、 ECX= 000019E0 、 EDX= 000019E0 操作过程中所用到的指令: INCLUDE Irvine32.inc .code main PROC call DumpRegs mov eax,19E0H mov ebx,eax mov ecx,ebx

东北大学c++实验报告

实验六 1?实验要求 (1)定义Point类,有坐标_x, _y两个成员变量;对Point类重载牛+ ”(自增)、“一-(自减)运算符,实现对坐标值的改变。 (2)定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。 2.实验容及实验步骤 (1)编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operato叶+() ; Point operato叶+(int);以实现对Point 类重载++ ”(自增)运算符,定义成员函数Point& operator ------------------------------ ();Point operator -------- (int);以实现对Point类重载(自减)运算符,实现对坐标值的改变。程序名:1ab8_1. cpp。 ⑵编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派 生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle 的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2. cpp。 3.源程序 Lab8 1 #in clude using n amespace std;

东北大学数据库期末试卷样例

东北大学数据库期末试 卷样例 -CAL-FENGHAI.-(YICAI)-Company One1

2)R2 =σB > 2(R) 3)R3 = R S 4)R4 = Aɡsum(B)

4) Create a view BusyFaculty that records the ids and names of faculties who teach more than 3 classes. 5) Find the names of all students that enroll in a class where students meet in room R128 (i.e., Class.room = R128) or a class in which five or more than five students enroll. 6) Find the names of all students who are enrolled in two classes that meet at the same time

E→F}holds on R. 1) Give all candidate keys of this relation, motivate. (3 points) 2) Indicate all extraneous attributes in F, motivate. (3 points) 3) Is this relation in 3NF?If it is not, decompose it into relations in 3NF. (6 points)

数据结构实验二-

实 验 报 告 一、实验目的 1) 加深对图的表示法和图的基本操作的理解,并可初步使用及操作; 2) 掌握用图对实际问题进行抽象的方法,可以解决基本的问题; 3) 掌握利用邻接表求解非负权值、单源最短路径的方法,即利用Dijkstra 算法求最短 路径,同时掌握邻接表的建立以及使用方法,能够解决相关的问题; 4) 学会使用STL 中的map 抽象实际问题,掌握map ,List,,priority_queue 等的应 用。 二、实验内容与实验步骤 (1) 实验内容: 使用图这种抽象的数据结构存储模拟的欧洲铁路路线图,通过Dijkstra 算法求出欧洲旅行最少花费的路线。该实验应用Dijkstra 算法求得任意两个城市之间的最少路费,并给出路费最少的路径的长度和所经过的城市名。 (2) 抽象数据类型及设计函数描述 1) 抽象数据类型 class City : 维护一个城市的信息,包括城市名name ,是否被访问过的标记visted ,从某个城市到达该城市所需的总费用total_fee 和总路径长度total_distance ,求得最短路径后路径中到达该城市的城市名from_city 。 class RailSystem : 用邻接表模拟欧洲铁路系统,该邻接表使用数据结构map 实现,map 的key-value 课程名称:数据结构 班级: 实验成绩: 实验名称:欧洲旅行 学号: 批阅教师签字: 实验编号:实验二 姓名: 实验日期:2013 年6 月 18 日 指导教师: 组号: 实验时间:

值对的数据类型分别为string和list<*Service>,对应出发城市名和该城市与它能 够到达的城市之间的Service链表。 class Service: 为铁路系统模拟了两个城市之间的直接路线,包括两个城市之间直接到达的费用 fee,两城市之间的直接距离distance。 部分设计函数描述 ●RailSystem(const string& filename) 构造函数,调用load_services(string const &filename)函数读取数据 ●load_services(string const &filename) 读取传入的文件中的数据并建立上述两个map以模拟欧洲铁路路线图 ●reset(void) 遍历cities图,初始化所有城市的信息:visted未访问,total_distance最大 值,total_fee费用最大值,from_city为空 ●~RailSystem(void) 析构函数,用delete将两个map中所有使用new操作符开辟的空间删除 ●void output_cheapest_route(const string& from, const string& to, ostream& out); 输出两城市间的最少费用的路径,调用calc_route(string from, string to)函 数计算最少费用 ●calc_route(string from, string to) 使用Dijkstra算法计算from和to两个城市间的最少费用的路径 (3)采用的存储结构 1)map > outgoing_services 用来保存由一个城市出发可以直接到达的城市名及这两个城市之间的路径信息。 2)list 以service为指针的list表,保存两城市间的路径。 3)map cities 用来保存所有城市信息,通过城市名查找该城市有关信息。 4)priority_queue, Cheapest> candidates 存储候选的遍历城市,City*是优先队列存储的对象类型,vector是该对象的向量集合,Cheapest是比较规则。 三、实验环境 操作系统:Windows 8 调试软件:Microsoft visual studio 2012 上机地点:综合楼311 机器台号:笔记本

东北大学 操作系统实验四报告

操作系统实验报告 班级物联网1302班 学号 姓名

实验4 进程的管道通信 1. 实验目的 1)加深对进程概念的理解,明确进程和程序的区别。 2)进一步认识并发执行的实质。 3)分析进程争用资源的现象,学习解决进程互斥的方法。 4)学习解决进程同步的方法。 5)了解Linux系统中进程通信的基本原理。 进程是操作系统中最重要的概念,贯穿始终,也是学习现代操作系统的关键。通过本次实验,要求理解进程的实质和进程管理的机制。在Linux系统下实现进程从创建到终止的全过程,从中体会进程的创建过程、父进程和子进程之间的关系、进程状态的变化、进程之间的互斥、同步机制、进程调度的原理和以管道为代表的进程间的通信方式的实现。 2. 内容及要求: 这是一个设计型实验,要求自行编制程序。 使用系统调用pipe()建立一条管道,两个子进程分别向管道写一句话: Child process1 is sending a message! Child process2 is sending a message! 父进程从管道读出来自两个子进程的信息,显示在屏幕上。 要求: 1)父进程先接收子进程1发来的消息,然后再接收子进程2发来的消息。 2)实现管道的互斥使用,当一个子进程正在对管道进行写操作时,另一子进程必须等待。使用系统调用lockf(fd[1],1,0)实现对管道的加锁操作,用lockf(fd[1],0,0)解除对管道的锁定。 3)实现父子进程的同步,当子进程把数据写入管道后,便去睡眠等待;当父进程试图从一空管道中读取数据时,也应等待,直到子进程将数据写入管道后,才将其唤醒。 3.相关的系统调用 1) fork() 用于创一个子进程。 格式:int fork(); 返回值:在子进程中返回0;在父进程中返回所创建的子进程的ID值;当返回-1时,创建失败。 2) wait() 常用来控制父进程与子进程的同步。 在父进程中调用wait(),则父进程被阻塞,进入等待队列,等待子进程结束。当子进程结束时,父进程从wait()返回继续执行原来的程序。 返回值:大于0时,为子进程的ID值;等于-1时,调用失败。 3) exit() 是进程结束时最常调用的。 格式:void exit( int status); 其中,status为进程结束状态。

东北大学数据结构实验报告

. / 实验报告 课程名称:数据结构班级:实验成绩: 实验名称:顺序表和链表的应用学号:批阅教师签字: 实验编号:实验一:实验日期:2017-11-25 指导教师:组号:实验时间:18:30~22:30 一、实验目的 (1)掌握线性表的基本操作(插入、删除、查找)以及线性表合并等运算在顺序存储结构、链式存储结构上的实现。重点掌握链式存储结构实现的各种操作。 (2)掌握线性表的链式存储结构的应用。 二、实验内容与实验步骤 (1)实验内容: 实现约瑟夫环,约瑟夫环(Joseph)问题的一种描述是:编号为1、2、3……n的n个人按照顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按照顺时针的方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。设计一个程序求出出列顺序。 (2)抽象数据类型和设计的函数描述,说明解决设想。 首先定义一个链表,用其中的data项存储每个人的编号,用password项存储每个人所持有的密码,并且声明一个指针。之后使用CreatList_CL函数来创建一个循环链表,在其中的data和password中存入编号和密码,最后使最后一个节点的next指向L,使其能够形成循环队列。定义了函数Display来显示链表当中的内容,以确定存储的数据没有错误。定义了函数Delete_L来实现约瑟夫环中依次删除的功能,依次比较,如果某个人所持的密码和m值相等,则删除这个结点,并且输出此时该结点的编号和密码,实现出列的功能。 (3)简短明确地写出实验所采用的存储结构,并加以说明。 该实验我主要采用的是线性表的链式存储结构,首先定义了链表的结构,其中包括data 项和password项,分别存储每个人的编号和所持密码,还声明了指向下一个结点的指针,该指针可以连接各个结点,并且将最后一个结点的指针指向第一个结点使之成为一个循环链表。 三、实验环境 操作系统:Windows 7 调试软件名称:Visio Studio2017 上机地点:信息楼B405 四、实验过程与分析 (1)主要的函数或操作内部的主要算法,分析这个算法的时、空复杂度,并说明设计的巧妙之处。

东北大学图像处理实验报告

计算机图像处理实验报告 哈哈哈哈哈哈实验台31 1.应用MATLAB语言编写显示一幅灰度图像、二值图像、索引图像及 彩色图像的程序,并进行相互之间的转换 1)彩色图像转换为灰度图像、索引图像、二值图像 A=imread('F:\colorful.jpg'); subplot(221);imshow(A);title('彩色图像'); I1=rgb2gray(A); subplot(222);imshow(I1);title('灰度图像'); [X1,map]=rgb2ind(A,256); subplot(223);imshow(X1);title('索引图像'); BW=im2bw(A); subplot(224);imshow(BW);title('二值图像'); 彩色图像灰度图像 索引图像二值图像

2)灰度图像转换为索引图像、二值图像 clear A=imread('F:\colorful.jpg'); B=rgb2gray(A); subplot(131);imshow(B);title('灰度图像'); [X2,map]=gray2ind(B,128); subplot(132);imshow(X2);title('索引图像'); BW2=im2bw(B); subplot(133);imshow(BW2);title('二值图像'); 灰度图像索引图像二值图像 3)索引图像转为灰度图像、二值图像、彩色图像 clear A=imread('F:\colorful.jpg'); [X,map]=rgb2ind(A,256); subplot(221);imshow(X);title('索引图像'); I3=ind2gray(X,map); subplot(222);imshow(I3);title('灰度图像'); BW3=im2bw(X,map,0.5); subplot(223);imshow(BW3);title('二值图像'); RGB=ind2rgb(X,map); subplot(24);imshow(RGB);title('还原彩色图像'); 索引图像灰度图像 二值图像还原彩色图像

相关文档
最新文档