文档库 最新最全的文档下载
当前位置:文档库 › 实验四循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计实验报告
实验四循环结构汇编语言程序设计实验报告

循环结构汇编语言程序设

计实验报告

实验四循环结构汇编语言程序设计

一、实验目的

1、学习循环结构的汇编语言程序的设计和调试。

2、学习通过直接对8086计算机的寄存器和内存的直接访问,编写更高效简洁的汇编程序。

3、加深掌握计算机整体的工作过程。

3、加深对排序算法的理解。

二、实验任务

编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。

要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……)

三、实验内容

为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实验。

1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如下所示:

2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境

PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机

汇编工具:Masm.exe+Link.exe。

五、实验步骤

1)建立和生成的文件

(1)编写的源程序,源程序名为abc、扩展名为.asm

(2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe

2)汇编环境

最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根目录C :\>下

3)上机步骤

进入DOS窗口中执行。

4)调试程序

进入DEBUG后,调试程序

5)调试成功后重新汇编、连接并生成可执行代码

6)执行程序,并对运行结果截图。

利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48)

利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

六、实验心得

通过本次循环结构汇编语言程序设计的实验,我初步了解了汇编语言的基本语法,利用汇编语言的循环结构实现了对于数组A中元素的排序以及求得元素中的最大值最小值。另外,在实验过程中,我也了解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。

七、汇编语言代码

1、利用冒泡排序实现求最大值最小值的代码

data segment

mes1 db 'the max:$'

mes2 db 'the min:$'

a dw 13,0,59,900,587,1,657,234,34,48

data ends

code segment

main proc far

assume cs:code,ds:data start:

push ds

sub ax,ax

push ax

mov ax,data

mov ds,ax

;以下是起泡排序核心代码mov cx,10

dec cx

loop1:

mov di,cx

mov bx,0

loop2:

cmp a[bx+2],ax

jge cotinue

xchg ax,a[bx+2]

mov a[bx],ax

cotinue:

add bx,2

loop loop2

mov cx,di

loop loop1

mov dx,offset mes1

mov ah,09h

int 21h

mov bx,a[18]

call bini ;转换为十进制的子程序mov dx,offset mes2

int 21h

mov bx,a[0] call bini

ret

main endp

bini proc near mov cx,10000d call bin

mov cx,1000d call bin

mov cx,100d call bin

mov cx,10d

call bin

mov cx,1d

ret

bini endp

bin proc near mov ax,bx

mov dx,0

div cx

mov bx,dx

mov dl,al

add dl,30h mov ah,02h

int 21h

ret

bin endp

crlf proc near mov dl,0ah

int 21h

mov dl,0dh

mov ah,02h

int 21

ret

crlf endp

code ends

end start

2、利用选择排序实现排序的代码SAVEREG macro

push ax

push bx

push cx

push dx

push si

push di

endm

RESAVEREG macro

pop di

pop si

pop dx

pop cx

pop bx

pop ax

endm

;************************

data segment

arr dw 13,20,59,900,587,1,657,234,34,48 n dw 18

m dw 10

data ends

;************************ code segment

;------------------------ main proc far

assume cs:code, ds:data start:

push ds

sub ax, ax

push ax

mov ax, data

mov ds, ax

;------------

;sort

;------------

;si,di index

;ax temp

mov si, 0

mov di, 0

loop1:

cmp si, n

jge OUTER1

;init loop2

mov ax, si

add ax, 2

mov di, ax

loop2:

cmp di, n

jg OUTER2

mov ax, arr[si] cmp ax, arr[di] jle DO_NOTHING xchg ax, arr[di]

mov arr[si], ax DO_NOTHING:

add di, 2

jmp loop2

OUTER2:

add si, 2

jmp loop1

OUTER1:

mov cx, m

mov di, 0

PRINT_LOOP:

mov ax, arr[di]

mov dx, 0

call print_dec

add di, 2

loop PRINT_LOOP

;read key from the keyboard mov ah, 0

int 16h

ret

;---------------------

;get_oct function

;must pass ax, dx

print_dec proc near

SAVEREG

mov cx, 0

mov bx, 10

GET_NUM_LOOP:

div bx

push dx

mov dx, 0

inc cx

cmp ax, 0

jne GET_NUM_LOOP PRINT:

pop dx

add dx, 30h

mov ah, 02h

int 21h

loop PRINT

;enter and change line mov dl, 0dh

mov ah, 02h

int 21h

mov dl, 0ah

mov ah, 02h

int 21h

RESAVEREG

ret

print_dec endp

main endp

;------------------------ code ends

;************************ end start

实验四-循环结构汇编语言程序的设计实验报告

循环结构汇编语言程序设计实验报告

实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实

验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如 下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示:

四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:Masm.exe+Link.exe。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序Masm.exe汇编(翻译)后生成二进制目标程序,文件名为abc.obj (3)目标程序需要经Link.exe连接生成可执行程序,文件名为abc.exe 2)汇编环境 最基本的汇编环境只需要两个文件:Masm.exe和Link.exe。将这两个文件拷入到已经建好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根

目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数据为13,0,59,900,587,1,657,234,34,48)

轴系结构设计与分析实验报告

轴系结构设计实验报告 一、实验目的 1、熟悉并掌握轴系结构设计中有关轴的结构设计,滚动轴承组合设计的基本方法; 2、熟悉并掌握轴、轴上零件的结构形状及功用、工艺要求和装配关系; 3、熟悉并掌握轴及轴上零件的定位与固定方法; 4、了解轴承的类型、布置、安装及调整方法以及润滑和密封方式。 二、实验设备 1、组合式轴系结构设计分析试验箱。 试验箱提供能进行减速器圆柱齿轮轴系,小圆锥齿轮轴系及蜗杆轴系结构设计实验的全套零件。 2、测量及绘图工具 300mm钢板尺、游标卡尺、内外卡钳、铅笔、三角板等。 三、实验步骤 1、明确实验内容,理解设计要求; 已知条件(包括传动零件类型、载荷条件、速度条件): 直齿圆柱齿轮、圆锥滚子轴承、阶梯轴、载荷变动小、传动平稳 绘制传动零件支撑原理简图: 2、复习有关轴的结构设计与轴承组合设计的内容与方法(参看教材有关章节); 3、构思轴系结构方案 (1)根据齿轮类型选择滚动轴承型号; 轴承类别:圆锥滚子轴承选择依据:能承受径向和轴向方向的力

(2)确定支承轴向固定方式(两端固定或一端固定、一端游动); 轴承轴向固定方式:两端固定选择依据:传动平稳 (3)根据齿轮圆周速度(高、中、低)确定轴承润滑方式(脂润滑、油润滑); 润滑方式:油润滑选择依据:齿轮圆周速度中低 (4)选择端盖形式(凸缘式、嵌入式)并考虑透盖处密封方式(毡圈、皮碗、油沟); 密封方式:毡圈、端盖凸缘式选择依据:更好的密封轴肩 (5)考虑轴上零件的定位与固定,轴承间隙调整等问题; 如何定位:定位的话可以用轴肩、端盖、套筒、挡圈,圆螺母。 选择依据:用外力对零件进行约束,使零件在轴向无法产生相对位移。 (6)绘制轴系结构方案示意图。 4、组装轴系部件 根据轴系结构方案,从实验箱中选取合适零件并组装成轴系部件、检查所设计组装的轴系结构是否正确。 5、测量零件结构尺寸(支座不用测量),并作好记录。 6、将所有零件放入试验箱内的规定位置,交还所借工具。 7、根据结构草图及测量数据,在图纸上绘制轴系结构装配图,要求装配关系表达正确,注明必要尺寸(如支承跨距、齿轮直径与宽度、主要配合尺寸),填写标题栏和明细表。 8、写出实验报告。 四、实验结果分析 1、轴上各键槽是否在同一条母线上。答:是。

实验6 循环结构程序设计

实验6 循环结构程序设计 一.实验目的 1.掌握在设计条件型循环结构时,如何正确地设定循环条件。 2.掌握如何正确地控制计数型循环结构的循环次数。 3.练习并掌握选择结构与循环结构的嵌套、多重循环的应用。 4.掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。二.实验要求 1.复习while、do-while、for语句和continue、break语句。 2.能够用流程图表示实验题目的算法。 3.能够独立调试运行实验题目。 4.本实验要求4学时完成。 三.实验内容和步骤 题目1:分别用while循环和for循环计算:1+2+3+…+100=? 要求:写出程序并上机查看运行结果。 题目2:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。要求:程序填空并写出2组运行结果。 01#include 02#include 03#include 04main( ) 05{ 06char c; 07int letter=0,capital=0,lower=0,space=0,digital=0,other=0; 08printf("\ninput a line character :\n"); 09while((c=getchar())!='\n') 10{ 11if( 【1】) /*统计大小写字母的个数*/ 12{ 13letter++; 14if ( 【2】) 15lower++; /*统计小写字母的个数*/ 16} 17else if( 【3】) 18space++; /*统计空格的个数*/

C语言之循环队列的基本操作

1):循环队列的基本操作 #include #include #define OK 1 #define ERROR 0 typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等typedef int QElemType; #define MAXQSIZE 100 // 最大队列长度(对于循环队列,最大队列长度要减1) typedef struct { QElemType *base; // 初始化的动态分配存储空间 int front; // 头指针,若队列不空,指向队列头元素 int rear; // 尾指针,若队列不空,指向队列尾元素的下一个位置 }SqQueue; Status InitQueue(SqQueue &Q) { Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType)); if(!Q.base) { return ERROR; } Q.front=Q.rear=0; return OK; } Status EnQueue(SqQueue &Q,QElemType e) { if((Q.rear+1)%MAXQSIZE==Q.front) return ERROR; Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXQSIZE; return OK; } Status DeQueue(SqQueue &Q, QElemType &e) { if(Q.front==Q.rear) return ERROR; e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXQSIZE; return OK; }

机械设计实验报告

机械设计基础(A2)实验报告 徐嘉宁 沈阳理工大学 2006.10

目录 一. 皮带传动实验报告 (1) 1.1. 实验目的 (1) 1.2. 实验机构造及测试原理 (1) 1.3. 实验步骤 (1) 1.4. 数据和曲线 (1) 二. 齿轮传动效率实验报告 (3) 2.1. 实验目的 (3) 2.2. 实验机构及测试原理 (3) 2.3. 实验步骤 (3) 2.4. 数据和曲线 (3) 2.5. 思考题 (4) 三. HS-A型液体动压轴承实验报告 (5) 3.1. 实验目的 (5) 3.2. 实验机构及测试原理 (5) 3.3. 实验步骤 (5) 3.4. 数据和曲线 (5) 四. JDI-A型创意组合式轴系结构设计实验报告 (8) 4.1. 实验目的 (8) 4.2. 实验内容 (8) 4.3. 实验结果 (8) 五. JDI—A型创意组合式轴系结构分析实验报告 (10) 5.1. 实验目的 (10) 5.2. 实验内容 (10) 5.3. 实验结果 (10) 六. JCY机械传动性能综合实验报告 (12) 6.1. 实验目的 (12) 6.2. 实验内容 (12) 6.3. 实验步骤 (12) 6.4. 实验结果 (12)

一.皮带传动实验报告 专业班级------------------ 姓名----------------- 指导教师------------------ 日期----------------- 1.1.实验目的 1.2.实验机构造及测试原理 1.3.实验步骤 1.4.数据和曲线

二.齿轮传动效率实验报告 专业班级------------------ 姓名----------------- 指导教师------------------ 日期----------------- 2.1.实验目的 2.2.实验机构及测试原理 2.3.实验步骤 2.4.数据和曲线

顺序队的基本操作

上机实验报告 学院:计算机与信息技术学院 专业:计算机科学与技术(师范)课程名称:数据结构 实验题目:顺序队的基本操作 班级序号:师范1班 学号: 2731 学生姓名:邓雪 指导教师:杨红颖 完成时间: 2015年12月25号

一、实验目的: 1.熟悉掌握队的定义、结构及性质;? 2. 熟练掌握循环队列的操作及应用,掌握循环队列的入队和出队等基本操作。? 3. 加深对队列结构的理解,逐步培养解决实际问题的编程能力 二、实验环境: Windows Microsoft Visual c++ 三、实验内容及要求: 掌握队列的概念及性质,并建立顺序队,实现如下功能: 1.建立一个顺序队 2.输出队 3.求队长 4.判队空 5.取队头 6.入队 7.出队 8. 清空栈 四、概要设计: 1、通过循环,由键盘输入一串数据。创建并初始化一个顺序队。 2、编写实现相关功能函数,完成子函数模块如下。 3、调用子函数,实现菜单调用功能,完成顺序表的相关操作。

#include <> #include <> #define maxsize 1024 typedef int datatype; //定义结构体 typedef struct { datatype data[maxsize]; int front,rear; }sequeue; sequeue *sq; //建立顺序队 sequeue *SET() { sequeue *sq; datatype x; sq=(sequeue *)malloc(sizeof(sequeue)); sq->front=maxsize-1; sq->rear=maxsize-1; printf("请输入要存入的结点值(以0结尾)\n"); scanf("%d",&x); while(x!=0) { sq->rear=(sq->rear+1)%maxsize; sq->data[sq->rear]=x; scanf("%d",&x); } printf("顺序队输入成功\n\n"); return sq; }

轴系结构设计与搭接实验

轴系结构设计与搭接实验 一、实验目的 1.了解机械传动装置中滚动轴承支承轴系结构的基本类型和应用场合。 2.根据各种不同的工作条件,初步掌握滚动轴承支承轴系结构设计的基本方法。 3.通过模块化轴系搭接实践,进一步掌握滚动轴承支承轴系结构中工艺性、标准化、轴系的润滑和密封等知识。 二、主要的实验设备 模块化轴系搭接系统:提供可实现多方案组合的基本轴段,以及轴系常用的零件如轴套、轴承、端盖、密封件、机架等。 2.测量与装拆工具 三、实验题目 1.单级齿轮减速器输入轴轴系结构 2.二级齿轮减速器输入轴轴系结构 3. 二级齿轮减速器中间轴轴系结构 4.锥齿轮减速器输入轴轴系结构 5.蜗杆减速器输入轴轴系结构 详见“轴系机构明细表” 四、实验要求 每位同学选择设计题目中一个轴系结构,根据该结构简图和搭接零件明细表设计轴系结构装配图(建议采用M=1:1比例,3#坐标纸,手绘)。 2.分析轴的各部分结构,形状,尺寸与轴的强度,刚度,加工,装配的关系。 3.分析轴上的零件的用途,定位及固定方式。 4.分析轴承类型,布置和轴承的固定,调整方式。 5.了解润滑及密封装置的类型,结构和特点。 6.携带所绘制的完整的装配图在实验室进行轴系搭接实验。 7.按照轴系结构模块的可行方案修改原设计,最终完成一个轴系结构的设计与搭接。 8.课后根据实验修改设计画出正确装配图。完成实验报告。 (注:装配图采用1:1比例,符合制图标准,标注主要零件的配合尺寸。) 五、思考题 为什么轴通常要做成中间大两头小的阶梯形状?如何区分轴的轴颈,轴头和轴身各轴段,对轴各段的过渡部分和轴肩结构有何要求? 2.你设计的轴系中轴承采用什么类型?它们的布置和安装方式有何特点?实际当中选择的根据是什么? 3.该轴系固定方式是用“两端固定”还是“一端固定,一端游动”?如何考虑轴的受热伸长问题?

实验四循环结构程序设计

实验四循环结构程序设计(一) 一、实验学时 2学时 二、实验目的 (一)掌握用while,do-while,for语句实现循环的方法; (二)掌握在设计条件型循环结构的程序时,如何正确地设定循环条件,以及如何控制循环的次数。 (三)掌握与循环有关的算法。 三、预习要求 预习教材第六章有关while,do-while,for语句的语法格式,并能通过这三种语句编写、调试单层循环结构的程序。 四、实验内容 (一)分析并运行下面程序段,循环体的执行次数是__________。 int a=10,b=0; do { b+=2;a-=2+b;} while(a>=0); (二)当执行以下程序段时,循环体执行的次数是__________。 x = -1; do { x=x*x;} while( !x); (三)编程求 1!+2!+3!+……+20! 的值。 注意:根据题目,考虑所定义的各个变量应该为何种类型。程序结构如下:/* c4-1.c */ /* 求1!+2!+3!+……+20! */ #include "stdio.h" void main( ) { 定义变量i作为循环控制变量; 定义变量p和sum分别存放各个整数的阶乘和阶乘之和; 变量p和sum赋初值; for( i=1; i<=20; i++ ) { 变量p连乘 ; 变量sum累加; } 输出sum的值 ; } (四)编写一个程序,求出两个数m和n的最大公约数和最小公倍数。 编程提示:求最大公约数的方法有三种: 1.从两个数中较小数的开始向下判断,如果找到一个整数能同时被m和n整除,则终止循环。设n为m和n中较小的数,则如下程序段可实现: for(k=n; k>=1; k--) if(m%k==0 && n%k ==0) break; k即为最大公约数。 /* c4-2.c */ /* 求最大公约数算法1 */ #include "stdio.h"

轴系结构设计实验指导与参考答案图

轴系结构的分析与测绘 一、实验目的 1.通过拼装和测绘,熟悉并掌握轴的结构设计以及轴承组合设计 的基本要求和方法。 2.了解并掌握轴系结构的基本形式,熟悉轴、轴承和轴上零件的结构、功能和工艺要求。掌握轴系零、部件的定位和固定、装配与调整、润滑与密封等方面的原理和方法。 二、实验内容 1. 根据选定的轴系结构设计实验方案,按照预先画出的装配草图进行轴系结构拼装。检查原设计是否合理,并对不合理的结构进行修改。 2.测量一种轴系各零、部件的结构尺寸,并绘出轴系结构的装配图,

标注必要的尺寸及配合,并列出标题栏及明细表。 三、实验设备和用具 1.模块化轴段(可组装成不同结构形状的阶梯轴)。 2. 轴上零件:齿轮、蜗杆、带轮、联轴器、轴承、轴承座、端盖、套杯、套筒、圆螺母、轴端挡板、止动垫圈、轴用弹性挡圈、孔用弹性挡圈、螺钉、螺母等。 3. 工具:活搬手、胀钳、内、外卡钳、钢板尺、游标卡尺等。 四、实验步骤 1. 利用模块化轴段组装阶梯轴,该轴应与装配草图中轴的结构尺寸一致或尽可能相近。 2. 根据轴系结构设计装配草图,选择相应的零件实物,按装配工艺要求顺序装到轴上,完成轴系结构设计。 3. 检查轴系结构设计是否合理,并对不合理的结构进行修改。合理的

轴系结构应满足下述要求: 1)轴上零件装拆方便,轴的加工工艺性良好。 2)轴上零件固定(轴向周向)可靠。 4.轴系测绘 1)测绘各轴段的直径、长度及轴上零件的相关尺寸。 2)查手册确定滚动轴承、螺纹联接件、键、密封件等有关标准件的尺寸。 5. 绘制轴系结构装配图 1) 测量出的各主要零件的尺寸,对照轴系实物绘出轴系结构装配图。 2)图幅和比例要求适当(一般按1:1),要求结构清楚合理,装配关系正确,符合机械制图的规定。 3)在图上标注必要的尺寸,主要有:两支承间的跨距,主要零件的配合尺寸等。 4)对各零件进行编号。并填写标题栏及明细表(标题栏及明细表可参阅配套教材《机械设计课程设计》)。

实验四 循环结构程序设计(答案)

实验四循环结构程序设计(解答) 1.改错题 (1)下列程序的功能为:求1~100之和(和值为5050)并输出。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_1.c存盘。 #include main() { int i,sum=0; i=1; while(i<100) sum=sum+i; i++; printf(“The sum from 1 to 100 is %d\n”,sum); } 改正后的程序: #include main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("The sum from 1 to 100 is %d\n",sum); } (2)下列程序的功能为:倒序打印26个英文字母。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_2.c存盘。 #include main() { char x; x='z'; while(x!='a') { printf("%3d",x); x++; } }

改正后的程序: #include main() { char x; x='z'; while(x!='a'-1) 或while(x>='a') 或while(x!=96) { printf("%3c",x); x- -; } } (3)下列程序的功能为:输出如下的图形,要求顶端的*定位在第21字符位置,请纠正程序中存在错误,使程序实现其功能,程序以文件名sy4_3.c存盘。 * *** ***** ******* #include void main() { int i,j; for (i=0;i<4;i++) { for (j=0;j<=20;j++) printf("\n"); for (j=0;j<2*i+1;j++) printf("*"); } } 改正后的程序: #include void main() { int i,j; for (i=0;i<4;i++) { for (j=0;j<=20-i;j++) printf(" "); for (j=0;j<2*i+1;j++) printf("*"); printf("\n"); } } 2.程序填空 (1)下列程序的功能为:用辗转相除法求两个正整数的最大公约数;请填写适当的符号或语句,使程序实现其功能,程序以文件名sy4_4.c存盘。 提示:

实验二 栈与队列操作实验题目

实验二栈与队列操作 实验目的: (1)理解栈与队列的结构特征和运算特征,以便在实际问题背景下灵活运用。 (2)了解复杂问题的递归算法设计。 本次实验中,下列实验项目选做一。 1、顺序栈的基本操作 [问题描述] 设计算法,实现顺序栈的各种基本操作 [基本要求] (1)初始化栈s。 (2)从键盘输入10个字符以$结束,建立顺序栈。 (3)从键盘输入1个元素,执行入栈操作。 (4)将栈顶元素出栈。 (5)判断栈是否为空。 (6)输出从栈顶到栈底元素。 要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。 2、链栈的基本操作 [问题描述] 设计算法,实现链栈的各种基本操作 [基本要求] (1)初始化栈s。 (2)从键盘输入10个字符以$结束,建立带头结点的链栈。 (3)从键盘输入1个元素,执行入栈操作。 (4)完成出栈操作。 (5)判断栈是否为空。 (6)输出从栈顶到栈底元素。 (7)输出链栈的长度。 要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。 3、循环队列的基本操作 [问题描述] 设计算法,实现循环顺序队列的建立、入队、出队等操作。 [基本要求] (1)从键盘输入10个字符以$结束,建立循环队列,并显示结果。 (2)从键盘输入1个元素,执行入队操作,并显示结果。 (3)将队头元素出队,并显示结果。 (4)要求程序通过一个主菜单进行控制,在主菜单界面通过选择菜单项的序号来调用各功能函数。

4、只用尾指针表示的循环链表队列的综合操作 [问题描述] 假设以带头结点的的循环链表表示队列,并且只设一个指针指向队尾元素的结点(注意不设头指针),试编写队列初始化、入队、出队函数。 [基本要求及提示] (1)首先定义链表结点类型。 (2)编写带头结点的循环链表的初始化函数,只用尾指针表示。 (3)编写入队函数、出队函数。 (4)在主函数中编写菜单(1.初始化;2.入队;3.出队;4.退出),调用上述功能函数。 5、用标志域表示队空队满状态的循环队列的综合操作 [问题描述] 要求循环队列不损失一个空间全部都得到利用,设置一个标志域tag,以0和1来区分当队头与队尾指针相同时队列状态的空和满,试编写与此结构相对应的入队和出队操作。 [基本要求及提示] (1)教材中为区分当队头与队尾指针相同时队列状态的空和满,以牺牲一个空间的代价来实现的,空:Q->front==Q->rear,满:(Q->rear+1)%MAXSIZE==Q->front。 (2)本题不损失一个空间全部都得到利用,为此如下定义循环队列类型: Typedef struct { QueueElementType element[MAXSIZE]; int front; int rear; int tag; }SeqQueue; 此时,循环队列空和满的条件分别为: Q->front==Q->rear&&tag==0 和 Q->front==Q->rear&&tag==1 (3)编写入队函数、出队函数。 (4)在主函数中编写菜单(1.入队;2.出队;3.退出),调用上述功能函数。 6、利用辅助数组进行栈的逆置 [问题描述] 利用辅助栈将栈中的元素逆置。 [基本要求及提示] 在主函数中编写菜单(1.入栈;2.出栈;3.逆置;4.退出)调试运行程序。 7、利用辅助栈进行队列的逆置 [问题描述] 利用辅助栈进行队列元素逆置。 [基本要求及提示] 在主函数中编写菜单(1.入队;2.出队;3.逆置;4.退出)调试运行程序。 8、Hanoi塔问题

最新实验四分支循环结构程序设计

实验四分支循环结构 程序设计

实验四、分支循环结构程序设计 一、实验目的 1.通过本实验,加深对循环控制结构有关概念的理解。 2.熟练掌握while、do-while和for三种循环控制语句的特点,掌握循环结构程序设计和调试方法。 3.掌握二重循环结构程序的设计方法。 二、实验内容 1.用while循环实现数据统计问题。 数据统计问题:从键盘输入一批任意数量的整数,统计其中不大于100的非负数数值的个数。 2.编写并调试程序,使用do-while循环控制语句实现上面的数据统计问题。调试数据仍参照上面给出的几种情况设计使用。 3.编写并调试程序,使用for循环控制语句实现上面的数据统计问题。4.阶乘累加问题。编写程序,求1+2!+3!+…+n!的值(习题5.9)。三、实验指导 1.用while循环实现数据统计问题。 ⑴编程分析 由于输入数据个数是不确定的,因此每次执行程序时,循环次数都是不 确定的。在进行程序设计时,确定循环控制的方法是本实验的一个关键 问题。循环控制条件可以有多种确定方法: ①使用一个负数作为数据输入结束标志。 ②输入一个数据后通过进行询问的方式决定是否继续输入下一个数据。 ⑵参考程序 l 参考程序一 /* 使用负数作为数据输入结束标志的程序 */ #include "stdio.h" void main() { int m,counter=0; while(1) { printf("请输入一个整数:"); scanf("%d",&m); if(m<0)break; if(m<=100)counter++; printf("\n"); } printf("符合要求的整数个数为: %d\n",counter); } l 参考程序二 /* 通过进行询问的方式决定是否继续输入下一个数据的程序 */ #include "stdio.h" void main() { int m,counter=0; char ask; while(1) { printf("请输入一个整数:"); scanf("%d",&m);

实验4顺序循环队列基本操作

实验4: 顺序循环队列基本操作 一、实验目的 1.熟悉并能实现顺序循环队列的定义和基本操作。 2.了解用队列解决实际应用问题。 二、实验要求 1.进行队列的基本操作时要注意队列“先进先出”的特性。 2.复习关于栈操作的基础知识。 3.编写完整程序完成下面的实验内容并上机运行。 4.整理并上交实验报告。 三、实验内容 1.任意输入队列长度和队列中的元素值,构造一个队列,对其进行清空、插入新元素、返回队头元素以及删除队头元素操作。 2.约瑟夫环的实现:设有n个人围坐在圆桌周围,现从某个位置i 上的人开始报数,数到m 的人就站出来。下一个人,即原来的第m+1个位置上的人,又从1开始报数,再是数到m的人站出来。依次重复下去,直到全部的人都站出来,按出列的先后又可得到一个新的序列。由于该问题是由古罗马著名的史学家Josephus提出的问题演变而来,所以通常称为 Josephus 问题。 例如:当n=8,m=4,i=1时,得到的新序列为: 4,8,5,2,1,3,7,6 编写程序选择循环队列(也可换为自己熟悉的数据结构)作为存储结构模拟整个过程,并依次输出出列的各人的编号。 3.(选做实验)设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门外,其它车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。 程序编写提示:以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码及到达或离去的时刻,对每一组输入数据进行操作后的输出数据为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。栈以顺序结构实现,队列以链表实现。需另设一个栈,临时停放为给要离去的汽车让路而从停车场退出来的汽车,也用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含两个数据项:汽车的牌照号码和进入停车场的时刻。

实验项目四结构化程序设计_循环结构

《程序设计基础I》实验报告实验项目四:结构化程序设计_循环结构

一、实验目的及要求 (1)熟悉掌握用while语句,do-while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)掌握多重循环的选择时机和使用方法; (4)掌握使用break和continue语句的方法。 二、实验设备(环境)及要求 使用Visual C++ 6.0;windows系列操作系统的环境。 三、实验内容与步骤(要求以“学号_姓名_题号”为名建立项目; 例项目名为:2013050201_***_01) 1.分别用while、do-while、for语句编程,求数列前20项之和:2/1,3/2,5/3,8/5,13/8······算法提示: 1)定义实变量sum、term、a、b、c,整变量i 2)初始化:sum=0,分子a=2,分母b=1 3)初始化:i(计数器)=1 4)计算第i项term =a/b 5)累加sum=sum+term 6)计算c=a+b,更新b= a,更新a=c 7)计数器加1,i++ 8)重复4、5、6、7,直到i>20 9)输出2位精度的结果

把每一次迭代结果输出,程序应做怎样的修改? 3输入正数n ,要求输出Fibonacci 数列的前n 项。1,1,2,3,5,8…… #include 开始 结束 term=0 sum=0 i=1 i ≤20? i=i+1 sum=sum+term term=term *i 输出sum 是 否 #include int main() {float term,sum;int i; term=1,i=1,sum=0; while(i<=20) {term=term*i; sum=sum+term; printf("sum=%.1f\n",sum); i++; } printf("sum=%f\n",sum); return 0; }

实验四 循环结构

实验报告 班级:电信13-1班学号:130******** 姓名:谢朗星成绩: 实验四循环结构 一、实验目的 1.掌握循环结构C程序的编写和调试方法。 2.掌握循环结构C程序中使用while语句和do while语句。 二、实验内容和步骤 1.调试下面三个程序,分析执行的结果。 1. #include int main( ) { int sum=0,i=1; while(i<=100) { sum=sum+i; i++; } printf(“%d\n”,sum); return 0; } 5050 在该程序中,先判断i是否<=100,如果是,在循环体先执行了sum=sum+i,接着再执行i++,然后再返回判断i是否<=100,接着再重复上步骤,直到i>100,然后输出最终结果,结束该程序。 2. #include int main( ) { int sum=0,i=1; while(i<=100) { sum=sum+i; i++; printf(“%d\n”,sum);} return 0;

} 在该程序中,先判断i是否<=100,如果是,在循环体先执行了sum=sum+i,接着再执行i++,然后输出当次运行的结果,然后再返回判断i是否<=100,接着再重复上步骤,直到i>100,结束该程序。 3.#include int main( ) { int sum=0,i=1; do { sum=sum+i; i++; printf(“%d\n”,sum); }while(i<=100); return 0; } 在该程序中,在循环体中先执行了sum=sum+i,接着再执行i++,然后输出当次运行的结果,接着再判断i是否<=100,如果是,返回执行循环体,接着再重复上步骤,直到i>100,结束该程序。 2.编写如下2道题目的程序,要求详细写出程序编写、编译、运行的过程,源程序关键执 行语句需要给出注释。 (a)统计全单位人员的平均工资。单位的人数不固定,工资数从键盘先后输入,当输入-1 时表示输入结束(前面输入的是有效数据) 分析:循环执行的条件while(i!=-1) , 循环结束条件是单位的人数n,循环体采用累加的方法。 (b)求∑= 20 1 n !n 分析:循环体采用累加和累乘。(a) #include int main() {

组合式轴系结构设计与分析实验

组合式轴系结构设计与分析实验 一、实验目的 1.通过轴系结构的观察分析,理解轴、轴承、轴上零件的结构特点,建立对轴系结构的感性认识; 2.熟悉和掌握轴的结构设计和轴承组合设计的基本要求和设计方法; 3.了解并掌握轴、轴承和轴上零件的结构与功用、工艺要求、装配关系、轴与轴上零件的定位、固定及调整方法等,巩固轴系结构设计理论知识; 4.分析并了解润滑及密封装置的类型和机构特点; 5.了解并掌握轴承类型、布置和轴承相对机座的固定方式。 二、实验设备 1. 组合式轴系结构设计分析实验箱 实验箱提供能进行减速器组装的圆柱齿轮轴系,小圆锥齿轮轴系及蜗杆轴系结构设计实验的全套零件。该实验箱能够方便的组合二十种以上的轴系结构方案,具有内容系统方案多样的特点,学生可以在实验老师的指导下,按图选取零件和标准件进行组装分析,也可以另行设计新的方案组装。 该设备主要零件包括底板、轴承、垫圈、孔用弹性挡圈、轴用弹性挡圈、端盖、轴承座、齿轮、蜗杆、圆螺母、轴端挡圈、轴套、键、套杯、螺栓、螺钉、螺母等。2. 测量及绘图工具 300mm钢板尺、游标卡尺、内外卡钳、铅笔及三角板(学生自备)等。 三、实验内容与要求 1.指导教师根据下表选择性安排每组的实验内容(实验题号)

2. 进行轴的结构设计与滚动轴承组合设计 每组学生根据实验题号的要求,进行轴系结构设计,解决轴承类型选择,轴上零件定位固定、轴承安装与调节、润滑及密封等问题。 3. 绘制轴系结构装配图。 4. 每人编写实验报告一份。 四、实验步骤 1.明确实验内容,理解设计要求; 2.复习有关轴的结构设计与轴承组合设计的内容与方法(参看教材有关章节); 3.构思轴系结构方案 (1)根据齿轮类型选择滚动轴承型号; (2)确定支承轴向固定方式(两端固定或一端固定、一端游动); (3)根据齿轮圆周速度(高、中、低)确定轴承润滑方式(脂润滑或油润滑); (4)选择端盖形式(凸缘式、嵌入式)并考虑透盖处密封方式(毡圈、皮碗、油沟); (5)考虑轴上零件的定位与固定,轴承间隙调整等问题; (6)绘制轴系结构方案示意图。 4. 组装轴系部件 根据轴系结构方案,从实验箱中选取合适零件并组装成轴系部件、检查所设计组装的轴系结构是否正确。 5. 绘制轴系结构草图。 6. 测量零件结构尺寸(支座不用测量),并作好记录。 7. 将所有零件放入实验箱内的规定位置,交还所借工具。 8.根据结构草图及测量数据,在3号图纸上用1:l比例绘制轴系结构装配图,要求装配关系表示正确,注明必要尺寸(如支承跨距、齿轮直径与宽度、主要配合尺寸),填写标题栏和明细表。 9.写出实验报告。 组合式轴系结构设计实验报告(样式) 专业__________班级__________姓名___________座号__________成绩________ 一、实验目的 二、实验内容 实验题号 已知条件 三、实验结果 1、轴系结构装配图(附3号图) 2、轴系结构设计说明(说明轴上零件的定位固定,滚动轴承的安装、调整、润滑与密封方法)

实验四循环结构大全语言程序设计实验报告

循环结构汇编语言程序设 计实验报告 实验四循环结构汇编语言程序设计 一、实验目的 1、学习循环结构的汇编语言程序的设计和调试。 2、学习通过直接对8086计算机的寄存器和内存的直接访问,编写更高效简洁的汇编程序。 3、加深掌握计算机整体的工作过程。 3、加深对排序算法的理解。 二、实验任务 编写程序求出数组A中(20个元素)的最大值和最小值(数组没有排序)。 要求至少采用二种不同的排序算法来实现。( 快速排序,归并排序、堆排序、Shell排序、插入排序、冒泡排序、交换排序、选择排序、基数排序……) 三、实验内容 为了更好地实现老师所布置的实验任务,我们根据情况选取以下两种方式实验。 1、利用冒泡排序的方式求解数组A中元素的最大值最小值。设计流程图如下所示: 2、利用选择排序的方式求得数组A中元素的序列。设计流程图如下所示: 四、实验环境 PC机: winXP/win7(32位)/win7(64位)+winxp 虚拟机 汇编工具:+。 五、实验步骤 1)建立和生成的文件 (1)编写的源程序,源程序名为abc、扩展名为.asm (2)源程序经汇编程序汇编(翻译)后生成二进制目标程序,文件名为 (3)目标程序需要经连接生成可执行程序,文件名为 2)汇编环境

最基本的汇编环境只需要两个文件:和。将这两个文件拷入到已经建好的文件夹(例如huibian)中,并将文件夹huibian放在硬盘根目录C :\>下 3)上机步骤 进入DOS窗口中执行。 4)调试程序 进入DEBUG后,调试程序 5)调试成功后重新汇编、连接并生成可执行代码 6)执行程序,并对运行结果截图。 利用冒泡排序求得数组A中元素的最大值最小值的实验结果如下图所示:(说明:输入 数据为:13,0,59,900,587,1,657,234,34,48) 利用选择排序对数组A中元素排序得到的序列得实验结果如下图所示:(说明:输入数 据为13,0,59,900,587,1,657,234,34,48) 六、实验心得 通过本次循环结构汇编语言程序设计的实验,我初步了解了汇编语言的基本语法,利用汇编语言的循环结构实现了对于数组A中元素的排序以及求得元素中的最大值最小值。另外,在实验过程中,我也了解到了,我们要时刻细心严谨,认真做好每一步,避免出现低级错误。 七、汇编语言代码 1、利用冒泡排序实现求最大值最小值的代码 data segment mes1 db 'the max:$' mes2 db 'the min:$' a dw 13,0,59,900,587,1,657,234,34,48 data ends code segment main proc far assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax ;以下是起泡排序核心代码 mov cx,10 dec cx loop1: mov di,cx mov bx,0

轴系结构设计实验报告-new1

轴系结构设计实验报告 实验者:同组者: 班级:日期: 一、实验目的 1、熟悉并掌握轴系结构设计中有关轴的结构设计,滚动轴承组合设计的基本方法; 2、熟悉并掌握轴、轴上零件的结构形状及功用、工艺要求和装配关系; 3、熟悉并掌握轴及轴上零件的定位与固定方法; 4、了解轴承的类型、布置、安装及调整方法以及润滑和密封方式。 二、实验设备 1、组合式轴系结构设计分析试验箱。 试验箱提供能进行减速器援助齿轮轴系,小圆锥齿轮轴系及蜗杆轴系结构设计实验的全套零件。 2、测量及绘图工具 300mm钢板尺、游标卡尺、内外卡钳、铅笔、三角板等。 三、实验步骤 1、明确实验内容,理解设计要求; 已知条件(包括传动零件类型、载荷条件、速度条件): 绘制传动零件支撑原理简图: 2、复习有关轴的结构设计与轴承组合设计的内容与方法(参看教材有关章 节); 3、构思轴系结构方案 (1)根据齿轮类型选择滚动轴承型号; 轴承类别选择依据 (2)确定支承轴向固定方式(两端固定或一端固定、一端游动); 轴承轴向固定方式选择依据 (3)根据齿轮圆周速度(高、中、低)确定轴承润滑方式(脂润滑、油润滑); 润滑方式选择依据 (4)选择端盖形式(凸缘式、嵌入式)并考虑透盖处密封方式(毡圈、皮碗、油沟); 密封方式选择依据 (5)考虑轴上零件的定位与固定,轴承间隙调整等问题; 如何定位 选择依据

(6)绘制轴系结构方案示意图。 4、组装轴系部件 根据轴系结构方案,从实验箱中选取合适零件并组装成轴系部件、检查 所设计组装的轴系结构是否正确。 6、将所有零件放入试验箱内的规定位置,交还所借工具。 7、根据结构草图及测量数据,在图纸上绘制轴系结构装配图,要求装配关 系表达正确,注明必要尺寸(如支承跨距、齿轮直径与宽度、主要配合 尺寸),填写标题栏和明细表。 8、写出实验报告。 四、实验结果分析 1、轴上各键槽是否在同一条母线上。 2、轴上各零件(如齿轮、轴承)能否装到指定位置。 3、轴上零件的轴向、周向固定是否可靠。 4、轴承能否拆下。

Python-实验4--循环结构

实验四循环结构 【实验目的】 1.掌握For语句和while循环语句的使用。 2.掌握循环的规则及其执行过程。 3.掌握如何控制循环条件,防止死循环或不循环。 【实验内容】 1.编写程序,找出7的倍数中十位数为2的所有3位数。 x=100 while x<1000: y=x/100 a=(x-100*y)/10 z=x-100*y-10*a if (10*y+a-2*z)%7==0 and a==2: print x x+=1 else: x+=1 或: x=100 while x<1000: if x%7==0 and x//10%10==2: print x x+=1 或: for x in range(100,1000): if x%7==0 and x//10%10==2: print x 2.编写程序用Print语句输出2000年至2500年间的所有闰年,要求每行输出8个。 y=2001 count=0 flag=True while flag: if y%4==0 and y%100!=0 or y%400==0: if count%8==0: print print y, y+=1 count+=1 else: y+=1 if y==2500: flag=False 3.编写程序解决爱因斯坦台阶问题:有人走一台阶,若以每步走两级则最后剩下一级;若每步走三级则剩两级;若每步走四级则剩三级;若每步走五级则剩四级;若每步走六级则剩五级;若每步走七级则刚好不剩。问台阶至少共有多少级? L=[] for x in range(0,1000): if x%2==1 and x%3==2 and x%4==3 and x%5==4 and x%6==5 and x%7==0: L.append(x) print min(L) 至少共有119级

相关文档