实验四循环结构大全语言程序设计实验报告
- 格式:docx
- 大小:9.03 KB
- 文档页数:4
C语言实验报告课程__C程序设计_实验名称_循环结构程序设计__第页共页系别__电气工程______________________ 实验日期 2010 年 4 月 28日专业班级___ 自动化 __2班 _______________ 实验报告日期 2010 年 4月 28日姓名___马震_________学号_P091813232___ 报告退发 ( 订正、重做 ) 教师审批签字一.实验目的For语句以及数组的练习。
二.实验内容(-)实验题目一: 求1至100的和加1至50的平方的和加1至10的倒数的和1. 要点分析见右图实验步骤#include <stdio.h>void main(){double k,s=0,t=0,u=0;for(k=1;k<=100;k++) s=s+k;for(k=1;k<=50;k++) t=t+k*k;for(k=1;k<=10;k++) u=u+1/k;printf("%f\n",s+t+u);}3. 实验结果1.(二)实验题目二: 打印出所有"水仙花数", 所谓"水仙花数"是指一个三位数, 其各位数字立方和等于该本身。
2.要点分析见下页右侧图2.实验步骤#include <stdio.h> void main(){int a,b=0,c=0,d=0; for(a=100;a<=999;a++) {b=a/100;c=a/10-10*b; d=a-100*b-10*c;if(a==b*b*b+c*c*c+d*d*d)printf("水仙花数为%d\n",a);}} 3实验结果1.(三)实验题目三: 有一分数序列: 2/1, 3/2, 5/3, 2.8/5, 13/8, 21/13…求出这个数列的前20项之和。
3.要点分析 见右侧图4.实验步骤 #include <stdio.h> void main(){double a=1,b=2,c=1,s=0; for(;c<=20;c=c+2) {s=s+b/a;a=b+a; s=s+a/b;b=b+a;}printf("数列前20项和为%f\n",s);}3实验结果(四)实验题目四: 一球从100米高度自由下落,每次落地后返回原高度的一半, 再落下。
循环程序设计实验报告循环程序设计实验报告引言:循环程序设计是计算机科学中一项重要的技术,它能够让计算机在特定条件下重复执行一段代码,从而实现特定的功能。
本实验旨在通过编写循环程序,探索循环程序设计的原理和应用。
实验目的:1. 理解循环程序设计的概念和原理;2. 学会使用不同类型的循环结构,如for循环、while循环和do-while循环;3. 掌握循环程序设计在问题解决中的应用。
实验过程:1. 实验环境的搭建在实验开始前,我们需要搭建一个适合编写和运行循环程序的环境。
选择一款适合的集成开发环境(IDE),如Visual Studio、Eclipse等,并安装相应的编程语言环境,如C++、Java等。
2. 编写基本的循环程序首先,我们从最简单的循环结构开始,即for循环。
以C++语言为例,我们可以使用以下代码编写一个简单的for循环程序:```cpp#include <iostream>int main() {for (int i = 0; i < 10; i++) {std::cout << "Hello, World!" << std::endl;}return 0;}```上述代码中,for循环的三个部分分别表示循环变量的初始化、循环条件和循环变量的更新。
通过这个简单的循环程序,我们可以在控制台输出10次"Hello, World!"。
3. 使用循环解决实际问题循环程序设计在解决实际问题时非常有用。
我们可以通过循环来处理一系列数据、实现复杂的算法等。
下面以一个实际问题为例,演示如何使用循环程序设计进行问题求解。
假设有一个整数数组,我们需要找到数组中的最大值。
我们可以使用for循环遍历整个数组,并通过比较来找到最大值。
以下是一个使用C++语言实现的示例代码:```cpp#include <iostream>int main() {int arr[] = {5, 2, 8, 3, 1};int max = arr[0];for (int i = 1; i < 5; i++) {if (arr[i] > max) {max = arr[i];}}std::cout << "The maximum value is: " << max << std::endl;return 0;}```通过以上代码,我们可以找到数组中的最大值,并将其输出到控制台。
实验4-循环程序设计实验4 循环程序设计4.1 实验目的(1) 掌握三种循环语句的使用,能分析循环的执行过程;(2) 掌握break和continue语句的使用;(3)了解如何利用求余和整除操作获取和删除一个整数的最低位;(4) 掌握累加、累乘的处理方法。
(5) 掌握计数问题的编写技巧,如何控制每行输出元素个数。
4.2 知识要点循环就是反复执行一段代码,直到满足结束条件。
循环语句一般包括初始化、循环体、迭代和判断4部分。
4.2.1 while循环与do while循环的使用差异while语句的格式:while (条件表达式) {循环体}特点是“先判断、后执行”,循环体有可能执行0次。
do…while循环的格式:do{循环体} while (条件表达式)特点是“先执行,后判断”,循环体至少要执行1次。
建议: 在程序设计中尽量不用do while循环,而用while循环。
4.2.2 for循环与while循环的对应关系for (控制变量赋初值;循环条件;增值) {循环体}等价于:控制变量赋初值;While (循环条件) {循环体;控制变量增值;}注意几点:(1)for循环的执行过程是先做初始化,然后判断是否满足结束条件,若满足,则执行循环体,在执行完循环体后进行迭代增值。
(2)初始化部分和增值部分可以使用逗号语句执行多个操作;(3)三部分均为空,写成for(;;)相当于一个无限循环。
4.2.3 continue和break语句的作用●continue---跳过之后的语句,继续下一轮循环;●break---跳出直接所处循环。
●带标号的continue可以回到标号指定的那级循环的下一轮执行。
●带标号的break可以跳出标号指定的那级循环。
4.2.4 常见问题处理(1)累加问题的解决办法—累加变量的初值设置在循环外,通常赋0为初值;(2)如何利用循环求阶乘—累乘,在循环外设置变量初值为1;(3)如何控制每行的输出数据个数(计数问题);(4)如何产生一定范围的随机整数。
淮海工学院计算机科学系实验报告书课程名:《C语言程序设计A 》题目:实验4 程序流程设计——循环结构程序设计班级:软嵌151学号:2015123349姓名:陈正宁1、实验内容或题目(1) 输入两个正整数,求出它们的最大公约数和最小公倍数。
(2) 用!1!31!21!111n e +⋯⋯++++≈,求e 的近似值,直到610!1-<n 为止。
(3)编程实现输出9*9乘法口诀表。
2、实验目的与要求(1)进一步熟悉熟悉VC++6编译环境,掌握运用VC 编译C 程序的基本方法; (2)掌握常见的流程控制结构(顺序、选择和循环),学会运用控制结构编写C 程序; (3)了解循环的嵌套;(4)掌握break 和continue 语句的使用方法;(5) 输出9*9乘法口诀表的上三角、下三角、左三角、右三角等几种形式。
3、实验步骤与源程序⑴实验步骤NN⑵源代码(1)、#include<stdio.h>void main(){int a,b,c,n,m;printf("请输入两个正整数[m, n enter]\n");scanf("%d,%d",&m,&n);if(m<n){a=m;m=n;n=a;}c=n*m;while(n!=0){b=m%n;m=n;n=b;}printf("公约数%d\n公倍数%d\n",m,c/m); }(2)、#include<stdio.h>#include<math.h>void main(){int n;int fact=1;double an;double e=1.0;for(n=1;;n++){fact*=n;an=1.0/fact;if(abs(an<0.000001))break;e+=an;}printf("e~=%lf\n",e);}(3)、#include<stdio.h>void main(){int i,j;for(i=1;i<=9;i++)//右下{for(j=9;j>=1;j--){if(i<j)printf(" ");elseprintf("%dx%d=%2d\t",i,j,i*j);}printf("\n");}printf("\n");for(i=1;i<=9;i++)//左下{for(j=1;j<=i;j++){printf("%dx%d=%2d\t",i,j,i*j);}printf("\n");}printf("\n");for(i=9;i>=1;i--)//右上{for(j=9;j>=1;j--){if(i<j)printf(" ");elseprintf("%dx%d=%2d\t",i,j,i*j);}printf("\n");}printf("\n");for(i=9;i>=1;i--)//左上{for(j=1;j<=i;j++){printf("%dx%d=%2d\t",i,j,i*j);}printf("\n");}printf("\n");}4、测试数据与实验结果(可以抓图粘贴)(1)、(2)、(3)、5、结果分析与实验体会(1)、首先得知道可以用 while语句实现循环,可以用do…while语句实现循环,也可以用for语句实现循环。
实验4 循环结构程序设计(一)实验目的要求1.掌握“当”型循环控制语句do while…enddo程序设计的方法。
2.掌握“计数”型循环控制语句for…endfor|Next程序设计的方法。
3. 掌握“指针”型循环控制语句scan…endscan程序设计的方法。
(二)实验内容1.do while…enddo编程。
2.for…endfor|Next编程。
3. scan…endscan编程。
(三)实验指导实验4-1计算1~100之间自然数的和。
具体操作如下:(1)创建程序文件“L10-14-2.prg”,内容如图4-1所示:图4-1⑵运行程序实验4-2根据“员工”表,统计物业部的员工人数。
具体操作如下:(1)创建程序文件“L10-15.prg”,内容如图4-2所示:图4-2(2)运行程序,结果如下:物业部的员工人数是: 6实验4-3从键盘输入10个数,求其中的最大数。
具体操作如下:(1)创建程序文件“bcl4.prg”,内容如图4-3所示:图4-3 (2)一次程序运行的结果如下:实验4-4计算10!。
具体操作如下:(1)创建程序文件“L10-16.prg”,内容如下:图4-4 (2)运行程序,结果如下:实验4-5计算S的值(S=2!+4!+6!+8!+10!)。
具体操作如下:(1)创建程序文件“L10-17.prg”,内容如下:图4-5(2)运行程序,结果如下:实验4-6计算“员工”表中所属“物业部”的职工的人数。
具体操作如下:(1)创建程序文件“L10-17.prg”,内容如下:图4-6(2)运行程序,结果如下:实验4-7输出1-100自然数中被3整除的数据的个数及它们的和。
具体操作如下:(1)创建程序文件“bcl5-1.prg”,内容如下:图4-7(2)运行程序,结果如下:实验4-8计算1+2+3+……,当和刚刚大于10000时,所加的最后一个数和最后的和为多少。
具体操作如下:(1)创建程序文件“bcl6.prg”,内容如下:图4-8(2)运行程序,结果如下:实验4-9由键盘输入10个数,按由小到大的顺序输出这10个数。
XXX大学软件类实验报告
课程名称:C语言程序设计学号:
姓名:
班级:
指导教师:
开课学期:
学院:
XXX大学教务处
4. for语句的使用;
四、实验过程及内容:(运行结果请抓图到对应题目的下方)
1. 先分析以下程序,写出运行结果,再上机检验。
实验结果:
2.先分析以下程序,写出运行结果,再上机检验。
(1)实验结果:
(2)分析对比第1题和第2题运行结果,并说明原因。
3. 程序改错题。
下列程序的功能是计算1+1/2+1/3+...+1/100的和,试改正程序中的错误。
实验结果:
4. 程序填空题。
以下程序的功能是计算1×2×3+3×4×5++99×100×101的值,试在空白处填写适当的表达式或语句,使程序完整并符合题目要求。
上机运行程序,写出程序的运行结果。
实验结果:
5. 程序填空题。
以下程序输出1~100之间各位数的乘积大于各位数之和的数,例如,对于数12,有1×2<1+2,故不输出该数;而对于27,有2×7>2+7,故输出该数。
填空使程序完成相应功能。
实验结果:
6.编写程序计算1~100之间所有含数字6或9的数之和,即:s=6+9+16+19+26+29+......60+61+......90+91+ (99)
实验代码:
实验结果:。
一、实验目的1. 理解循环结构的原理和特点。
2. 掌握C语言中while、do...while和for循环语句的使用方法。
3. 学会运用循环结构解决实际问题。
二、实验环境1. 编程语言:C语言2. 编程工具:Visual Studio Code3. 操作系统:Windows 10三、实验内容1. 实验一:计算1至100之间所有整数的和实验目的:掌握while循环语句的使用方法。
实验步骤:(1)定义变量sum用于存储和,初始化为0。
(2)使用while循环语句遍历1至100之间的整数,将每个整数累加到sum变量中。
(3)输出最终的和。
实验代码:```c#include <stdio.h>int main() {int sum = 0, i = 1;while (i <= 100) {sum += i;i++;}printf("1至100之间所有整数的和为:%d\n", sum);return 0;}```2. 实验二:计算1至100之间所有偶数的和实验目的:掌握do...while循环语句的使用方法。
实验步骤:(1)定义变量sum用于存储和,初始化为0。
(2)定义变量i,初始化为1。
(3)使用do...while循环语句遍历1至100之间的整数,当i为偶数时,将其累加到sum变量中。
(4)输出最终的和。
实验代码:```c#include <stdio.h>int main() {int sum = 0, i = 1;do {if (i % 2 == 0) {sum += i;}i++;} while (i <= 100);printf("1至100之间所有偶数的和为:%d\n", sum);return 0;}```3. 实验三:计算1至100之间所有素数的和实验目的:掌握for循环语句的使用方法。
实验步骤:(1)定义变量sum用于存储和,初始化为0。
Python程序设计实验报告四:循环结构程序设计班级:物流191姓名:柳梦辉学号: 3190505126⽇期: 2020年4⽉10⽇指导⽼师:修宇实验四循环结构程序设计(设计型实验⼆学时)【实验⽬的】(1)熟悉⽤while和for语句实现循环的⽅法(2)掌握在程序设计中⽤循环的⽅法实现各种算法;【实验条件】PC机或者远程编程环境【实验内容】(1)计算底数e的值描述:e有时被称为⾃然常数(Natural constant),是⼀个约等于2.71828182845904523536……的⽆理数。
可⽤如下公式求⾃然对数的底数e的近似值。
e=1+1/1!+1/2!+…1/n!可设计循环程序,判断直到最后⼀项绝对值⼩于10的-6次⽅停⽌循环,注意因为计算误差原因,不同⽅法可能稍有区别。
(2)判断⽔仙花数描述:⽔仙花数(Narcissistic number)也被称为超完全数字不变数、⾃恋数、⾃幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),⽔仙花数是指⼀个 3 位数,它的每个位上的数字的 3次幂之和等于它本⾝(例如:1^3 + 5^3+ 3^3 = 153)。
设计循环程序,输⼊⼀个三位整数,判断是否是⽔仙花数,如果是⽔仙花数,则输出“是⽔仙花数”,否则输出“不是⽔仙花数”(3)N的多次⽅描述:编写⼀个程序,计算输⼊数字N的0次⽅到5次⽅结果,并依次输出这6个结果,输出结果间⽤空格分隔。
其中:N是⼀个浮点数。
print()函数可以同时输出多个信息,采⽤如下⽅法可以使⽤空格对多个输出结果进⾏分割:print(3.14, 1024, 2048)【实验记录与分析】(请在填写实验记录与分析结果)【思考题】循环结构中循环的次数取决于什么?1.计算底数e的值分析:运⽤⼀次while循环将底数n! ⽤i+=1代替,然后⽤while进⾏累加即可 print("e= ",e)即可2.判断⽔仙花数分析:题中⽔仙花数定义为,它的每个位上的数字的3次幂之和等于它本⾝。
实验四 循环结构程序设计 (一) 2.编程,输入一批整数,先求出其中的偶数和及奇数和,然后输出偶数和与奇数和的差. 输入输出示例: 输入一批整数:10 11 20 33 Ctrl+Z Sub=-14 提示:从键盘输入Ctrl+Z,表示一批数据输入结束 思考:如何从输入的数中找出一个最小的数。 #include int main() { int sub=0,n; char c; do { scanf("%d",&n); if (n%2==0) sub+=n; else sub-=n; } while((c=getchar())!='\n'); printf("sub=%d\n",sub); return 0; } 思考题 #include int main() { int i=0,num,min; char c; do { scanf("%d",&num); if (i==0) min=num; i++; if(num<=min) min=num; }
while((c=getchar())!='\n'); printf("最小数%d\n",min); }
3.编程,输入1个正实数eps,计算并输出下式的值,十到最后一项的绝对值小于eps。
...21117113191511s 输入输出示例: Input eps:0.00001 S = 0.866977 思考:如果条件改为前后2项的绝对值的差小于eps,如何编程。
#include int main() { int f=1,i=1; float s=0,eps; printf("input eps: "); scanf("%f",&eps); while ((1/i)>=eps)【思考题】while((1-i/1)>=eps); { s=s+f*1/i; f=-f; i+=4; } printf("s=%f",s); fflush(stdin); getchar(); return 0; } 1. 编程,输入1个实数x,计算并输出下式的值,直到最后一项小于10-5。要求定义和调用函数fact(n)计算n的阶乘,以及定义和调用函数mypow(x,n)计算xn。
循环程序实验报告循环程序实验报告引言:循环程序是计算机编程中的重要概念之一,它能够使计算机执行一段代码多次,从而提高程序的效率和灵活性。
本实验旨在通过编写循环程序,探索循环结构的应用和特点,并通过实际案例加深对循环程序的理解。
一、实验背景循环结构是程序设计中的基本控制结构之一,它允许程序重复执行一段代码,直到满足某个条件才停止。
循环程序可以大大简化代码的编写,提高程序的效率和可读性。
在实际应用中,循环程序常被用于处理大量数据、迭代计算、模拟系统等场景。
二、实验目的1. 理解循环程序的概念和基本原理;2. 掌握循环程序的编写方法和常用语法;3. 熟悉循环程序在实际问题中的应用。
三、实验内容1. 编写一个循环程序,实现求解1到100之间所有偶数的和;2. 设计一个循环程序,计算斐波那契数列的前n项;3. 利用循环程序,实现一个简单的猜数字游戏。
四、实验步骤1. 针对第一个实验内容,我们可以采用for循环结构来实现。
首先,我们定义一个变量sum,并初始化为0。
然后,利用for循环遍历1到100之间的所有数,如果当前数为偶数,则将其加到sum中。
最后,输出sum的值即可得到结果。
2. 对于第二个实验内容,我们可以采用while循环结构来实现。
首先,定义两个变量a和b,并初始化为1。
然后,利用while循环不断计算下一项的值,并将其赋给a和b,直到计算到第n项为止。
最后,输出斐波那契数列的前n项。
3. 最后一个实验内容是一个猜数字游戏。
首先,我们生成一个随机数作为答案。
然后,利用循环结构,让玩家不断输入猜测的数字,并与答案进行比较。
如果猜对了,则输出恭喜信息并结束游戏;如果猜错了,则提示玩家继续猜测,并记录猜测次数。
通过这个游戏,我们可以体会到循环程序在交互式应用中的优势。
五、实验结果与分析1. 第一个实验中,我们得到了1到100之间所有偶数的和。
通过计算,我们发现这个和为2550。
这个结果验证了我们编写的循环程序的正确性。
一、实验目的1. 理解循环结构的概念和作用。
2. 掌握C语言中循环语句的语法和应用。
3. 通过实验,提高编程能力和逻辑思维能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言三、实验内容本次实验主要涉及以下循环结构:1. for循环2. while循环3. do-while循环四、实验步骤1. for循环(1)编写程序,实现1到100的整数求和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}printf("1到100的整数求和为:%d\n", sum); return 0;}```(2)编写程序,输出1到10的偶数。
```c#include <stdio.h>int main() {for (int i = 1; i <= 10; i++) {if (i % 2 == 0) {printf("%d ", i);}}printf("\n");return 0;}```2. while循环(1)编写程序,实现1到100的整数求和。
```c#include <stdio.h>int main() {int sum = 0, i = 1;while (i <= 100) {sum += i;i++;}printf("1到100的整数求和为:%d\n", sum); return 0;}```(2)编写程序,输出1到10的偶数。
```c#include <stdio.h>int main() {int i = 1;while (i <= 10) {if (i % 2 == 0) {printf("%d ", i);}i++;}printf("\n");return 0;}```3. do-while循环(1)编写程序,实现1到100的整数求和。
实验四循环结构程序设计(2)一、实验目的1.加深对循环语句的认识。
2.掌握在程序设计中用循环的方法实现各种算法(如枚举法、迭代法、递推法)二、实验内容1.阅读、调试、运行程序,比较阅读的结果和运行的结果。
(1)#include <stdio.h>void main(){ int i=0,a=0;while(i<20){ for(;;){ if((i%10)==0) break;else i--;}i+=11; a+=i;}printf("%d\n",a);}(2)#include <stdio.h>void main(){ int a,y;a=10;y=0;do{ a+=2;y+=a;printf("a=%d y=%d\n",a,y);if (y>20) break;}while (a=14);}(3)输入为“321”时,输出是什么?#include <stdio.h>void main( ){ char c;while ((c=getchar( ))!='\n')switch(c-'1'){ case 0:case 1:putchar(c+2);case 2:putchar(c+3); break;case 3:putchar(c+4);default:putchar(c+1);break;}printf("\n");}(4)#include <stdio.h>void main(){ int i,x,y;i=x=y=0;do{ ++i;if(i%2!=0){x=x+i;i++;}y=y+i++;}while(i<=7);printf("x=%d,y=%d\n",x,y);}2. 完善程序,并调试运行(1)在main函数中输入字符串,计算并输出其长度。
循环结构程序设计实验报告循环结构程序设计实验报告引言:循环结构是计算机程序设计中非常重要的一种结构,它允许程序重复执行特定的代码块,从而实现对数据的处理和逻辑的控制。
本次实验旨在通过编写循环结构程序,加深对循环结构的理解和应用。
实验目的:1. 掌握循环结构的基本语法和用法;2. 熟悉循环结构在程序设计中的应用;3. 加深对程序设计思维的培养。
实验过程:在实验过程中,我们选择了两个具体的案例来演示循环结构的应用。
案例一:计算1到100的累加和为了计算1到100的累加和,我们可以使用循环结构来简化计算过程。
通过使用for循环,我们可以从1开始逐个累加到100,并将结果保存在一个变量中。
代码如下所示:```sum = 0for i in range(1, 101):sum += iprint("1到100的累加和为:", sum)```通过运行上述代码,我们可以得到1到100的累加和为5050。
案例二:打印九九乘法表九九乘法表是一个经典的案例,通过使用嵌套循环可以很方便地打印出来。
代码如下所示:```for i in range(1, 10):for j in range(1, i + 1):print(j, "*", i, "=", i * j, end="\t")print()```通过运行上述代码,我们可以得到完整的九九乘法表。
实验结果:通过实验,我们成功地掌握了循环结构的基本语法和用法,并且能够灵活地应用于程序设计中。
通过循环结构,我们可以简化代码,提高程序的效率和可读性。
实验总结:循环结构是程序设计中必不可少的一种结构,它可以帮助我们实现对数据的处理和逻辑的控制。
在实验中,我们通过编写循环结构程序,加深了对循环结构的理解和应用。
同时,我们也发现了循环结构的一些注意事项,如循环条件的设置和循环变量的更新等。
在实际的程序设计中,我们需要根据具体的需求来选择合适的循环结构,并且合理地使用循环变量和循环条件,以避免出现死循环或无限循环的情况。
循环结构汇编语言程序
设计实验报告
实验四 循环结构汇编语言程序设计
一、实验目的
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.exa将这两个文件拷入到已 经建
好的文件夹(例如 huibian)中,并将文件夹huibian放在硬盘根目录 >下
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: mov ax,a[bx] 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 mov ah,09h 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 call bin 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 mov ah,02h 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
・
************************
J
data segment
arr dw 13,20,59,900,587,1,657,234,34,48 n dw 18 m dw 10
data ends
.************************
J
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
.************************ J
end start