实验2求最大值和最小值
C++分治法求最值
题目来源:□教材页题□教师补充□自选题目
主要功能描述:
(1)对一组数进行比较大小,求出其中的最大值和最小值,利用分治法的原理来实现。
(2)先对数组中元素个数进行判断,只有一个元素时,最大值max和最小值min都是它本身;当有两个元素时,比较两个数的大小,大者为最大值max,小者为最小值min;当数组中元素多于两个时,里用分治法原理,递归调用MaxMin函数,求出划分出的每组中的最值与另外一组最值比较,最后的得出最大值max和最小值min。
{
return maxSize;
}
void InputArray()//输入数组中元素
{
int i;
for(i=0;i<maxSize;i++)
{
cout<<"请输入"<<(i+1)<<"个元素:";
cin>>array[i];
}
}
void dispayAΒιβλιοθήκη ray()//输出数组中元素{
int i;
int maxSize;//定义数组长度
public:
SortableList(){};
void SetMaxSize()
{
cout<<"请输入数组中元素个数:";
cin>>maxSize;//输入数组长度
array=new T[maxSize];//定义存储空间
}
int GetMaxSize()//返回数组长度
if(max<max1)max=max1;//两表中最大元的大者为原表最大元
综合实验(2)任务书
计算机基础综合实验(2)任务书一、综合实验目的C语言程序设计是本科工科类各专业的重要基础课,主要学习程序设计的基本概念和方法,通过本门课程学习,使学生掌握C语言的基本原理,熟练掌握程序设计的基础知识、基本概念;掌握程序设计的思想和编程技巧。
综合实验是在学生已经具备了使用C语言编写简单的应用程序的能力,为使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,通过提出算法、指定输入输出来设计一个解决方案。
并为参加计算机等级考试做准备。
二、综合实验的基本内容和要求参加综合实验的学生,应当认真完成综合实验的全部内容。
最终提交综合实验成果来证明其独立完成各种实际任务的能力。
从而反映出理解和运用本课程知识的水平和能力。
具体如下:1、代码编写规范,形成良好的编程习惯;2、程序须有一定的健壮性和必要的提示信息,考虑问题的多种可能和边界数据。
3、提交综合实验报告电子稿、装订的打印稿。
综合实验报告内容包括以下几个方面:●程序的总体设计和算法分析。
●程序流程图、函数说明●源程序代码清单●测试数据和测试过程记录●遇到的问题及解决方法分析●综合实验小结4. 程序运行方式构建一个简易菜单,形如:用户通过输入数值选择所需运行的子程序,当一个子程序运行结束后回到菜单界面,直至用户输入0后退出程序。
三、综合实验的进度安排熟悉指针、结构体、文件内容1天整体设计和详细设计、编代码1天编代码、调试和测试1天综合实验报告书写1天演示软件1天四、综合实验的考核评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的综合实验报告,严格检查以下各项任务完成情况:1、设计文档中要求项目是否齐全。
2、程序中运行时的屏幕提示信息是否准确:如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。
3、问题和任务的陈述(描述问题,而且问题是合理原始的、应当包括输入、输出及其预期范围)是否正确。
例说求函数的最大值和最小值的方法
例说求函数的最大值和最小值的方法例1.设x 是正实数,求函数xx x y 32++=的最小值。
解:先估计y 的下界。
55)1(3)1(5)21(3)12(222≥+-+-=+-+++-=xx x x x x x y 又当x =1时,y =5,所以y 的最小值为5。
说明 本题是利用“配方法”先求出y 的下界,然后再“举例”说明这个下界是可以限到的。
“举例”是必不可少的,否则就不一定对了。
例如,本题我们也可以这样估计:77)1(3)1(7)21(3)12(222-≥-++-=-++++-=xx x x x x x y 但y 是取不到-7的。
即-7不能作为y 的最小值。
例2. 求函数1223222++--=x x x x y 的最大值和最小值。
解 去分母、整理得:(2y -1)x 2+2(y +1)x +(y +3)=0. 当21≠y 时,这是一个关于x 的二次方程,因为x 、y 均为实数,所以 ∆=[2(y +1)]2-4(2y -1)(y +3)≥0, y 2+3y --4≤0,所以 -4≤y ≤1 又当31-=x 时,y =-4;x =-2时,y =1.所以y min =-4,y max =1. 说明 本题求是最值的方法叫做判别式法。
例3.求函数152++-=x x y ,x ∈[0,1]的最大值解:设]2,1[1∈=+t t x ,则x =t 2-1y = -2(t 2-1)+5t = -2t 2+5t +1原函数当t =169,45=x 即时取最大值833 例4求函数223,5212≤≤+--=x x x x y 的最小值和最大值 解:令x -1=t (121≤≤t ) 则t t t t y 4142+=+=y min =51,172max =y 例5.已知实数x ,y 满足1≤x 2+y 2≤4,求f (x )=x 2+xy +y 2的最小值和最大值 解:∵)(2122y x xy +≤ ∴6)(23),(2222≤+≤++=y x xy y x y x f 又当2==y x 时f (x ,y )=6,故f (x ,y )max =6 又因为)(2122y x xy +-≥ ∴21)(21),(2222≥+≥++=y x xy y x y x f 又当22,22-==y x 时f (x ,y )=21,故f (x ,y )min =21例6.求函数2224)1(5+++=x x x y 的最大值和最小值 解:原函数即111)1(5222++-+=x x y 令112+=x t (0<t ≤1) 则y =5t 2-t +1 ∴当x =±3时,函数有最小值2019,当x =0时,函数取最大值5 例7.求函数|]211[1|)(+-=x x x f 的最大值 解:设α=+=+}211{,]211[x n x ,则 f (x )=|21|1|-=-αn x 由于 0≤α<1,故f (x )≤21,又当x =122-k (k 为整数)时f (x )= 21, 故f (x )max =21 例8.求函数113632424+-++--=x x x x x y 的最大值 解:原函数即222222)1()0()2()3()(-+---+-=x x x x x f 在直角坐标系中,设点P(x ,x 2),A(3,2),B(0,1),则f (x )=|PA|-|PB|≤|AB|=10 又当6137+-=x 时,f (x )= 10 故f max (x ) = 10例9.设a 是实数,求二次函数y =x 2-4ax +5a 2-3a 的最小值m ,当0≤a 2-4a -2≤10中变动时,求m 的最大值解:y =x 2-4ax +5a 2-3a =(x -2a )2+a 2-3a由0≤a 2-4a -2≤10解得:622-≤≤-a 或62+≤a ≤6 故当a =6时,m 取最大值18例10.已知函数f (x )=log 2(x +1),并且当点(x ,y )在y =f (x )的图象上运动时,点)2,3(y x 在y =g (x )的图象上运动,求函数p (x )=g (x )-f (x )的最大值。
C语言实验报告数组
实验七数组1.实验目的(1)熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;(2)熟练掌握字符数组和字符串函数的使用;(3)掌握与数组有关的常用算法如查找、排序等..2.实验指导(1)对任意一个一维型数组;从中找出数组元素的最大值和最小值并输出..要求:①数组有十个元素;②使用scanf函数实现数组元素的输入前给出必要的提示;③输出时;首先输出数组的十个元素;然后输出其最大值和最小值..分析指导:①算法分析:首先定义一个数组;通过循环从键盘输入十个数组元素的值;再通过另一个循环判断数组元素的最大只和最小值;②根据分析情况编写程序:include<stdio.h>mainint a10;i;max;min;printf"please input ten integers:";fori=0;i<=9;i++{scanf"%d";&ai;}max=a0;min=a0;fori=1;i<=9;i++{ifai>maxmax=ai;ifai<minmin=ai;}fori=0;i<=9;i++{printf"a%d=%d\n";i;ai;}printf"The maximum value is %d;and the minimum value is %d\n";max;min;运行程序;输入十个整数;如:21 37 6 17 9 12 89 76 35 59运行结果如下:(2)编写函数cmpStrchar s1;char s2比较两个字符串s1和 s2的大小..如果s1>s2;返回一个正数;s1=s2;返回0;s1<s2;返回一个负数;在主函数中调用该函数完成字符串的比较操作;并输出返回的值..要求:①不允许使用strcmp函数;②用gets函数在主函数中输入两个字符串;③实现触摸屏受托人函数;返回的正数或负数的绝对值应该是进行比较的两个字符传中相应字符的ASCII码的差值..分析指导:①算法分析:两个字符串从第一个字符开始一一对应进行比较;直到不相等的那个字符;从而求得它们的ASCII码的差值..比如;‘A’与‘C’相比;由于‘A’<‘C’;应输出负数;由于‘A’与‘C’的ASCII码的差值为2;因此;应输出“-2”..同理;“And”和“Aid”比较;根据第二个字符比较结果;‘n’比‘I’大5;因此应输出‘5’;②根据分析情况编写程序:include<stdio.h>int cmpstrchar s1;char s2{int i;diff;i=0;whiles1i==s2i&&s1i='\0'i++;ifs1i=='\0'&&s2i=='\0'diff=0;elsediff=s1i-s2i;return diff;}void main{int z;char s1100;s2100;printf"input the first string:";//输入字符串1gets s1;printf"input the second string:";//输入字符串2getss2;z=cmpstrs1;s2;//输出比较结果printf"the difference between two strings is %d\n";z;}查看运行结果如下:重新输入两个字符串meet;mood运行结果如下:(3)再给定的字符串中查找指定的字符..要求:①字符串采用直接初始化的方式处理;②通过scanf函数读入一个任意字符;③在字符串中查找该字符;如果存在该字符;输出该字符在字符串中的一次出现的位置;如果再给定的字符串中不存在该字符;则给出相应的说明信息..include<stdio.h>void main{int i;char ch;char s=" program";printf" 输入一个英文字母: ";scanf"%c";&ch;for i=0;si='\0';i++{if si==chbreak;}if i<7printf"s%d=%c\n";i;ch;elseprintf"No founded\n";}输入一个英文字母O运行程序如下:再次输入一个英文字母w运行程序如下:(4)首先输入一个大于二且小于十的整数n;然后定义一个二维整型数组nn;初始化该数组;讲述组中最大元素所在的行和最小元素所在的行对调..要求:①nn数组元素的值由scanf函数从键盘输入假定最大值最小值不在同一行上;然后输出该数组;②查找最大值最小值所在的行;将数组中最大元素所在的行和最小元素所在的行对调;并输出对调后的数组;③为直观起见;数组按n行n列的方式输出;④修改程序;对最大值与最小值可能出现在一行种的情况进行处理.. include<stdio.h>main{long matrix99;min;max;temp;int i;j;n;nMax=0;nMin=0;printf"\nplease inpute n of matrix:\n";scanf"%d";&n;printf"\nplease inpute elements of matrix%d%d:\n";n;n; fori=0;i<n;i++forj=0;j<n;j++scanf"%ld";&matrixij;min=max=matrix00;fori=0;i<n;i++forj=0;j<n;j++{ifmatrixij>max{max=matrixij;nMax=i;}else ifmatrixij<min{min=matrixij;nMin=j;}}forj=0;j<n;j++{temp=matrixnMaxj;matrixnMaxj=matrixnMinj;matrixnMinj=temp;}printf"\nResult matrix:\n";fori=0;i<n;i++{forj=0;j<n;j++printf"%5ld";matrixij;printf"\n";}}输入一个数4;输入一个44的数组1 3 6 72 4 5 81 3 5 72 6 9 7运行程序如下:再次输入一个数字3;输入一个33的数组1 2 32 4 537 8运行程序如下:3 实验结论通过本次实验熟练的掌握一维数组、二维数组的定义、初始化和输入/输出方法以及字符数组和字符串函数的使用;还有就是掌握与数组有关的常用算法。
c++程序编写求三个数的最大值和最小值,c++函数应用
实验六函数及其使用1 学时4学时2 实验目的与要求学习函数的编写。
理解数学中的函数、自变量、函数在某一点的取值与 C++中的自定义函数、函数参数、函数调用及其返回值之间的联系,掌握 C++对数学函数功能的实现方式。
3 实验环境WINDOWS XP 或WINDOWS SERVER 2000Microsoft Visual C++ 6.04 准备工作安装好Microsoft Visual C++6.05 实验内容(一).输入三个数,编写一个程序求这三个数的最大值和最小值。
要求把求最大值和最小值编写成函数。
#include <iostream.h>double max(double a,double b,double c);double min(double a,double b,double c);int main (){int a,b,c;cout <<"请输入三个数: " <<endl;cin >>a;cin >>b;cin >>c;cout <<"最大数的为: " <<max(a,b,c) <<endl;cout <<"最小的数为: " <<min(a,b,c) <<endl;return 0;}double max(double a,double b,double c){if (a>b && a>c) return a;if (b>a && b>c) return b;return c;}double min(double a,double b,double c){if (a<b && a<c) return a;if (b<a && b<c) return b;return c;}(二)编制如下自定义函数,实现指定功能。
实验1 分治法找到数组元素中的最大值与最小值
算法分析与设计实验报告第 1 次实验附录:完整代码#include <time.h>#include <iostream>#include <iomanip>#include <stdlib.h>using namespace std;void min_max(int a[],int i,int j,int &min,int &max) {int mid,max1,max2,min1,min2;if(i==j){max=a[i];min=a[i];return;}if(j==i+1){if(a[i]>a[j]){min=a[j];max=a[i];}else{min=a[i];max=a[j];}}else{mid=(i+j)/2;min_max(a,i,mid,min1,max1);min_max(a,mid+1,j,min2,max2);if(min1>min2)min=min2;elsemin=min1;if(max1>max2)max=max1;elsemax=max2;}}int main (){int m,a[100],min,max;while(1){int f;cout<<"随机数组的规模:";cin>>m;cout<<"随机数的范围:";cin>>f;//计时开始clock_t start,end,over;start=clock();end=clock();over=end-start;start=clock();srand((unsigned)time(NULL));for(int i=1;i<=m;i++){a[i]=(rand()%(f)+0);cout<<a[i]<<' ';}cout<<endl;min_max(a,1,m,min,max);cout<<"最小值:"<<min<<endl;cout<<"最大值:"<<max<<endl;end=clock();printf("The time is %6.3f",(double)(end-start-over)/CLK_TCK);cout<<endl;cout<<endl;}}。
实验二、晶体检波器校准与驻波比测量实验报告
实验二、晶体检波器校准与驻波比测量班级:核32 姓名:杨新宇学号:2013011806 同组成员:杨宗谕第一部分:晶体检波器校准一、实验目的(1)掌握测量线的使用方法.(2)掌握晶体检波器定标和求检波率的方法二、实验原理1、驻波测量线的调整驻波测量线是微波系统的一种常用测量仪器,它在微波测量中用途很广,如测驻波、阻抗、相位和波导波长等。
测量线通常由一段开槽传输线、探头(耦合探针、探针的调谐腔体和输出指示)、传动装置三部分组成。
由于耦合探针深入传输线而引入不均匀性,其作用相当于在线上并联一个导纳,从而影响系统的工作状态。
为了减小影响,测量前必须仔细调整测量线。
实验中测量线的调整一般包括选择合适的探针伸度、调谐探头和测定晶体检波特性。
探针电路的调谐方法:先使探针的插入深度适当,通常取1.0~1.5mm。
然后测量线终端接匹配负载,移动探针至测量线中间位置,调节探头活塞,直到输出指示输出值为最大。
在之后的测量试验中,请不要再改变探针及探头活塞位置。
2、导波波长测量测量波长常见的方法有谐振法和驻波分布法。
前者用谐振式频率计测量,后者用驻波测量线测量,当测量线终端短路时,传输线上形成纯驻波,移动测量线探针,测出两个相邻驻波最小点之间的距离即可求得导波波长λg。
此外,也可将精密可调短路器接在测量线的输出端,置测量线探针于某一波节点位置不变,移动可调短路器活塞,则探针检测值随之由最小逐渐增至最大,然后又减至最小值,即为相邻的又一个驻波节点,短路器移动的活塞距离等于半个导波波长。
在传输横电磁波的同轴系统中,按上述方法测出的导波波长就是电磁波在自由空间传播的工作波长λ0,即λg=λ0。
而在波导系统中测量线测出的是导波波长λg,导波波长和工作波长λ0之间的关系式为:λg=λ0√1−(λ0λc )2=λ0√1−(λ02a)2(2-1)其中λ0=C/f0,a=22.86mm。
为了提高测量精度,通常采用交叉读数法测量导波波长如图2.1 所示。
虚拟仪器技术实验指导书(紫金2012)
实验2 LabVIEW图形、数组、簇编程实验(设计型)1.实验目的(1)学习如何创建数组和簇,掌握它们的区别以及相应的操作。
(2)学习并掌握波形图和波形图表的使用,了解它们的区别。
2.实验设备安装有LabVIEW8.2的计算机3.实验内容(1)利用For循环建立一个一维数组并给出数组中的元素个数;建立一个二维数组给出数组中元素个数,并求出二维数组中元素的最大值、最小值。
(2)产生两个一维数组,分别组成一个二维数组和一个簇,然后用波形图显示二维数组,用XY图显示簇。
(3)设计一个VI来测量温度,每隔0.25秒测一次,共测定10秒,温度范围为0~100度。
在数据采集过程中,VI将在波形图表上实时地显示测量结果。
在采集过程结束后,在波形图上画出数据波形曲线,并算出温度的最大值,最小值和平均值。
4.实验原理(1)数组数组是一些具有相同类型的元素组成的集合。
数组包含两方面的内容:元素和维数。
数组中的元素可以是数字、布尔、字符、路径、波形和簇等数据类型。
(2)簇簇相当于一个容器,容器中的元素可以是各种不同的数据类型。
也就是说,可以在一个簇中放置控制选板上的各种控件,如数字控件、布尔控件、数组控件等,但是不能将输入控件和输出控件同时放入其中。
(3)图形子选板LabVIEW8.2的图形子选板提供了完成各种图形显示功能的控件。
按照处理测量数据的方式和显示过程的不同,图形显示控件主要分成两大类,一类为图形,另一类称为图表。
这两类控件都是用于图形化显示采集或生成的数据。
图形和图表的区别在于各自不同的数据显示和更新方式。
含有图形的VI通常先将数据采集到数组中,再将数据绘制1到图形中。
该过程类似于电子表格,即先存储数据再生成数据的曲线。
数据绘制到图形上时,图形不显示之前绘制的数据而只显示当前的新数据。
图形一般用于连续采集数据的快速过程。
与图形相反,图表将新的数据点追加到已显示的数据点上以形成历史记录。
在图表中,可结合先前采集到的数据查看当前读数或测量值。
(实验七)求最大值和最小值实验报告
实验七求最大值和最小值一、实验目的1、学习子程序的定义和调用方法。
2、掌握子程序设计、调试。
二、实验内容对内存中给定的几个无符号字节数,求其最大值和最小值并在数码管上显示。
三、实验程序框图四、实验步骤脱机模式:(1)在P.态下,按SCAL键,然后在内存4000H~4007H中写入任意八个字节的数,按下MON键,返回P状态。
(2)在P.态下,输入2E70,按EXEC键。
(3)数码管显示为:“XX——XX”,最左两位为最大值,最右两位为最小值。
(4)按“系统复位”键,退出运行状态,数码管返回“P。
”状态。
联机模式:(1)在内存4000H~4007H中写入任意八个字节的数,按下MON键,返回P状态。
(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S7.ASM 文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(3)数码管显示为:“XX——XX”,最左两位为最大值,最右两位为最小值。
(4)按“系统复位”键,退出运行状态,数码管返回“P。
”状态。
五、实验程序清单X:\DICE-8086K3微机原理与接口实验箱CDROM\CODE\86kasm\S7.ASMCODE SEGMENT ;S7.ASM,LOOK FOR MAX & MINASSUME CS:CODEORG 2E70H ;INPUT DATA 4000H--4007HSTART: JMP START0PA EQU 0FF21H ;字位口PB EQU 0FF22H ;字形口PC EQU 0FF23H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV SI,4000H ;数据首址MOV CX,0008H ;长度CALL MAXMIN ;调用比较大小子程序CALL BUF1 ;最大最小值送显示缓冲区CON1: CALL DISP ;循环调用显示子程序JMP CON1MAXMIN: JCXZ EXIT ;比较结束子程序返回PUSH SI ;压栈PUSH CXPUSH BXMOV BH,[SI] ;取第一个数MOV BL,BH ;保存数据到BLCON2: LODSB ; 取数CMP AL,BH ;比较两数JNA X1 ;小于等于转MOV BH,AL ;BH存大的数JMP X2 ;转X2X1: CMP AL,BL ;比较两数JNB X2 ;大于等于转MOV BL,AL ;BL存小的数X2: LOOP CON2 ;未完继续MOV AX,BX ;POP BX ;出栈POP CXPOP SIEXIT: RET ;返回DISP: MOV AL,0FFH ;显示子程序5msMOV DX,PAOUT DX,ALMOV CL,0DFH ;注释略,见实验六显示程序MOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BH,AHCALL ZHMOV BUF+5,ALMOV BUF+4,AHMOV AL,BHCALL ZHMOV BUF,AHMOV BUF+1,ALMOV BUF+2,17HMOV BUF+3,17HRET;-------------------------------------------------------- ZH: MOV BL,AL ;数据拆送MOV CL,4ROL AL,CLAND AL,0FHMOV AH,ALMOV AL,BLAND AL,0FHRET;------------------------------------------------------- CODE ENDSEND START。
流变学实验2流变仪测动态粘度
聚合物熔体动态粘度的测试胡圣飞编一实验目的1.了解旋转流变仪的基本结构、工作原理。
2.掌握采用旋转流变仪测量聚合物的动态粘度的方法。
二实验仪器TA旋转流变仪(型号:DHR-2)、强制空气加热炉(ETC)、空气压缩机、循环泵槽铜铲、铜刷三实验材料高密度聚乙烯圆片(直径2.5mm,厚度1-2mm)四实验原理聚合物受外力作用时,会发生流动与变形,产生内应力。
流变学所研究的就是流动、变形与应力间的关系。
旋转流变仪是现代流变仪中的重要组成部分,它们依靠旋转运动来产生简单剪切流动,可以用来快速确定材料的粘性、弹性等各方面的流变性能。
旋转流变仪一般是通过一对夹具的相对运动来产生流动的。
引入流动的方法有两种:一种是驱动一个夹具,测量产生的力矩,这种方法最早是由Couette在1888年提出的,也称为应变控制型,即控制施加的应变,测量产生的应力;另一种是施加一定的力矩,测量产生的旋转速度,它是由Searle 于1912年提出的,也称为应力控制型,即控制世界的应力,测量产生的应变。
实际用于粘度等流变性能测量的几何结构有同轴圆筒(Couette)(见图1)、锥板(见图2)和平行板(见图3)等。
本实验主要介绍平行板结构的基本工作原理。
图1 同轴圆筒结构示意图图2 锥板结构示意图图3 平行板结构示意图平行板主要用来测量熔体流变性能。
平行板主要的优点在于(Collyer et al. 1988,Macosko 1994):①平行板间的距离可以调节到很小。
小的间距抑制了二次流动,减少了惯性矫正,并通过更好的传热减少了热效应。
综合这些因素使得平行板结构可以在更高的剪切速率下使用。
②平行板结构可以更方便地安装光学设备和施加电磁场。
③在一些研究中,剪切速率是一个重要的独立变量。
平行板中剪切速率沿径向的分布可以使剪切速率的作用在同一个样品中得到表现。
④对于填充体系,板间距可以根据填料的大小进行调整。
因此平行板更适用于测量聚合物共混物和多相聚合物体系(复合物和共混物)的流变性能。
实验二MATLAB程序设计含实验报告
实验二 MATLAB 程序设计一、 实验目的1.掌握利用if 语句实现选择结构的方法。
2.掌握利用switch 语句实现多分支选择结构的方法。
3.掌握利用for 语句实现循环结构的方法。
4.掌握利用while 语句实现循环结构的方法。
5.掌握MATLAB 函数的编写及调试方法。
二、 实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。
M 文件的编写:启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。
点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正三、 实验内容1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。
并输入几组典型值加以检验。
(提示:提示输入使用input 函数)2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。
其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。
要求:(1)用switch 语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
(提示:注意单元矩阵的用法)3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:2?13?10?5?16?8?4?2?16?3?10?5?16?8?4?2?1运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
请为关键的Matlab 语句填写上相关注释,说明其含义或功能。
查找数组元素的最大值和最小值、众数问题
《算法设计与分析》上机实验报告专业班级学号学生姓名完成日期1. 上机题目及实验环境1.1上机题目:1.1.1 用分治法查找数组元素的最大值和最小值1.1.2 众数问题1.2实验环境:CPU:Intel Core i3 2.30GHz内存:2.0G操作系统:Windows 7软件平台:Visual C++2. 算法设计与分析2.1 查找数组最值2.1.1 分治递归方法:●将max和min设置为静态全局变量;●将数据集array平均分为两个数据集;●分别求解两个数据集中的最大和最小值;●最终的最大和最小值通过与max和min的值比较;●采用同样的处理方法递归处理以分好的数据集。
2.1.2 细节处理:●数组的大小为n2,n=0,1,2,3......●数组中的数字随机产生,数字的范围为1~100;●静态全局变量:max的初值为0,min的初值为101。
2.2 众数问题2.2.1 快速排序算法:●设置两个变量i、j,排序开始的时候:i=left,j=right+1;●以第一个数组元素作为关键数据,赋值给temp,即temp=array[left];●从j开始向前搜索,即由后开始向前搜索(--j),找到第一个小于temp的值array[j];●从i开始向后搜索,即由前开始向后搜索(++i),找到第一个大于temp的array[i];●交换array[i]和array[j]的值;●重复搜索步骤,直到i=j;●将temp的值和array[j]的值交换,并以此为界,分别在对左右两边进行快速排序。
3. 核心代码3.1 查找最值3.1.1 流程图(如图1)(核心函数为void MaxAndMin(int array[N], int left, int right)):图1.查找最值的流程图3.1.2 核心代码如下:(注:max和min是静态全局变量)void MaxAndMin(int array[N], int left, int right) // 求最大值最小值函数,分治递归法{int mid; // 数组的分界点if ( (left + 1) == right) // 分治的数组只有两个值时,更新max和min的值{if ( array[left] < array[right] && max < array[right] ) // 判断、更新最大值max = array[right];if ( array[left] > array[right] && max < array[left] )max = array[left];if ( array[left] < array[right] && min > array[left]) // 判断、更新最小值min = array[left];if ( array[left] > array[right] && min > array[right])min = array[right];}else{mid = (left + right) / 2; // 对数组进行分治MaxAndMin(array, left, mid); // 对左边的数组进行分治递归MaxAndMin(array, mid + 1, right); // 对右边的数组进行分治递归}}3.2 众数问题3.2.1 流程图(如图图2.众数问题的流程图3.2.2 核心代码如下:void quickSort(int *array,int left,int right) // 用快速排序法排序数组{if(left < right){int i = left, j = right+1;int temp = array[left]; // 以第一个数为基准while(true){while(array[++i] < temp && i < right); // 从前面找大于基准的数while(array[--j] > temp); // 从后面找小于基准的数if(i >= j) // 当left>right时停止break;swap(array[i], array[j]); // 交换两值}array[left] = array[j];array[j] = temp;int part = j; // 以靠左的较小值为界,对左右两部分数继续快排quickSort(array, left, part-1);quickSort(array, part+1, right);}}4. 运行与调试4.1 查找数组最值产生随机数组并排序:(如图3、图4、图5)图3.随机数组之一及结果图4.随机数组之二及结果图5.随机数组之三及结果4.2 众数问题4.2.1 只有一个众数(如图6、图7)图6.只有一个众数的数组图7.只有一个众数的结果4.2.2 没有众数(如图8、图9)图8.没有众数的数组图9.没有众数的结果4.2.3 有两个众数(如图10、图11)图10.有两个众数的数组图11.有两个众数的结果5. 结果分析和小结5.1 结果分析:通过设置不同的测试数据及运行的结果,可以看出程序的算法思想是正确的,程序的运行也是有效的,全面的。
求最值的步骤
求最值的步骤概述在数学和计算机科学领域中,求最值是一个常见且重要的问题。
求最值即是寻找一组数据中的最大值或最小值。
这个问题在实际生活和工作中经常遇到,比如找到一组数中的最大值和最小值、寻找最长的路径或最短的路径、优化问题的求解等等。
为了有效地解决这类问题,我们可以采取一些特定的步骤和方法。
本文将介绍求最值的一般步骤,并详细说明每个步骤的具体内容。
我们将从问题的定义开始,逐步引入一些常用的算法和技巧,最后给出一个完整的求最值的示例。
步骤求最值问题可以概括为以下几个步骤:1.问题定义:明确所要求解的问题,确定需要求解的最值是最大值还是最小值。
2.数据收集:获取需要参与求最值计算的数据,并进行必要的处理和预处理。
3.算法选择:根据问题的性质和数据的规模选择合适的算法或方法。
4.算法实现:根据所选择的算法,编写程序实现求最值的计算逻辑。
5.算法优化:对算法进行优化,提高求解效率,降低时间和空间复杂度。
6.结果验证:验证求解结果的准确性和有效性。
7.扩展应用:根据具体需求选择合适的扩展应用,如求多个最值、求分段最值等。
接下来,我们将详细介绍每个步骤的具体内容。
1. 问题定义在求解最值之前,首先需要明确问题的定义。
确定是求最大值还是最小值,以及需要求解的对象是什么。
这个步骤对于后续的数据收集和算法选择非常重要。
2. 数据收集在求解最值之前,需要收集相关的数据。
这些数据可以是已知的,也可以是通过实验或观测获得的。
收集到的数据可能包含噪声或异常值,需要进行处理和预处理,确保数据的准确性和有效性。
3. 算法选择根据问题的性质和数据的规模,选择合适的算法或方法来求解最值问题。
常见的算法包括暴力法、贪心法、动态规划、分治法、回溯法、排序等。
选择合适的算法可以有效地提高求解效率和准确性。
4. 算法实现根据所选择的算法,编写程序实现求解最值的计算逻辑。
根据具体的问题需求和编程语言的特点,使用合适的数据结构和算法实现求解逻辑。
数的最大值和最小值
数的最大值和最小值数学中,数的最大值和最小值是常用的概念。
在数轴上,数的大小可以通过比较来确定,其中最大值是指一组数中最大的数,而最小值则是指一组数中最小的数。
本文将介绍最大值和最小值的定义,以及计算最大值和最小值的方法。
一、最大值和最小值的定义在一组数中,最大值是指这个数集中的最大的数;最小值则是指这个数集中的最小的数。
最大值和最小值在比较数的大小和做数学运算中具有重要的作用。
二、计算最大值和最小值的方法1. 查找法通过逐个比较每个数,找到其中最大的数和最小的数。
设有一组数a1,a2,a3,...,an,首先假设a1为最大值和最小值,然后依次比较后续的数与当前的最大值和最小值,如果找到更大的数,则更新最大值的值,如果找到更小的数,则更新最小值的值。
最终得到的最大值和最小值即为所求。
2. 排序法先将一组数按照从小到大(或从大到小)的顺序进行排序,在有序数列中,最小值为首个数,最大值为末尾数。
可以使用冒泡排序、插入排序、快速排序等算法进行排序。
3. 数学方法如果给定的数是一个数学公式或问题的解,可以通过求导和求解函数的极值来找到最大值和最小值。
这一方法常被用于求解最优化问题,例如求函数的极大值和极小值。
三、最大值和最小值的应用最大值和最小值的概念在日常生活和各个领域都有广泛的应用。
以下是一些常见的应用场景:1. 统计学在统计学中,最大值和最小值可以用于描述数据集的范围。
例如,在描述一组考试成绩时,最高分为最大值,最低分为最小值,可以帮助我们了解整体成绩水平。
2. 经济学在经济学中,最大值和最小值可以用于描述经济数据的波动范围。
例如,在分析股票市场时,最高点为最大值,最低点为最小值,可以帮助投资者了解股票的波动情况。
3. 工程学在工程学中,最大值和最小值可以用于确定材料的极限状态。
例如,在设计一座桥梁时,通过对应力值的计算,可以确定桥梁材料的最大受力值和最小受力值,从而保证桥梁的安全性。
4. 计算机科学在计算机科学中,最大值和最小值可以用于排序算法、搜索算法等。
模拟运算放大电路(二)
实验二 模拟运算放大电路(二)一、实验目的:1、 掌握运算放大器实现信号积分和电流电压转换功能电路的基本设计和调试方法;2、 掌握精密半波整流和精密全波整流电路的电路组成、电路原理、参数设计和调试方法;3、 了解运算放大器实际器件参数对积分电路、电流电压转化电路、精密整流电路性能的影响。
二、实验原理 (1)积分电路对于积分电路,根据“虚短”和“虚断”可以得到:i c v i i R ==和11o c i v i dt v dt C RC =-=-⎰⎰, 即输出信号o v 与输入信号i v 有积分的关系。
该关系成立的前提之一是12c f f f R Cπ>=,即容抗小于阻抗。
另外还必须满足max ||o oM v V ≤与L C oM i i I +≤。
(2)电压/电流转换电路利用运放的“虚地”和“虚断”可以得到:1iL iV I I R ==,这样可以将电压信号转换为电流信号。
同样需要满足: L oM I I ≤和max ||o oM v V ≤的前提。
(3)精密整流电路把二极管与运放结合起来,将二极管置于运放的负反馈回路中,可以减小二极管的非线性及其温漂的影响,实现对弱小信号的精密整流或是线性整流。
三、预习思考题1、 根据29页实验内容1的指标要求设计电路并确定元件参数。
答:a ) 设计原理图b ) 设计过程见实验内容的预习基础,取 R =10k, c=0.01uf, R f =100K, R p =R 1//R f =10//100=100/11≈9.09k2、 在积分器实验中,若信号源提供不出平均值为零的方波,能否通过耦合电容隔直流?若能的话,电容量怎样取?答:可以,但是电容应取的大一点,以减小对交流的影响。
3、 对于29页实验内容2试根据数据手册中的相关参数计算a) 当R1=1 kΩ,R L 分别为1kΩ和10kΩ时最大允许输出电流值为多少 b) 当R1=100Ω,R L 分别为100Ω和1kΩ时最大允许输出电流值为多少c) 当R1=1 kΩ、R L 为1 kΩ,输入电压Vi 为0.5V 、1V 和3V 时,计算负载电阻R L 的取值范围。
微机原理实验求最大值和最小值
微机原理实验求最大值和最小值
本实验旨在通过学习微机原理,掌握如何求解一组数据的最大值和最小值。
实验中,
我们将使用基于AT89C51单片机的开发板作为实验平台,结合C语言编程,实现最大值和
最小值的求解,提高学生实际操作的能力。
实验步骤:
1. 准备实验环境
首先,需要准备好基于AT89C51单片机的开发板,并将其连接到电脑上。
在开发板中,需要连接到单片机的引脚上,可以使用杜邦线进行连接。
将开发板上的电源接好,并打开
电源开关。
2. 编写程序
接下来,我们需要使用C语言编写程序,实现最大值和最小值的求解。
程序的具体实
现方法如下:
(1)定义一个数组,用于存储一组数据。
(2)定义两个变量,用于分别记录最大值和最小值。
(3)使用for循环遍历数组中的所有元素,依次比较,更新最大值和最小值。
(4)输出最大值和最小值。
3. 烧录程序
将编写好的程序烧录到AT89C51单片机中。
可以使用KEIL或proteus等软件进行烧录。
4. 测试程序
在烧录程序成功后,需要进行测试,以确保程序能够正确运行。
可以使用模拟器或者
连接GPIO口的LED等外部设备定位问题。
实验结果:
总结:
本实验在提高学生实际操作能力的同时,还能够帮助学生深入理解微机原理。
通过本
次实验,学生学会了如何利用单片机和C语言编程解决实际问题,为以后的学习和实践打
下了基础。
【实验二:LED光源光谱定标LED光谱测量实验报告】紫外可见光谱实验报告
【实验二:LED光源光谱定标LED光谱测量实验报告】紫外可见光谱实验报告本科学生综合性实验报告学号姓名学院物电学院专业、班级光电子实验课程名称光谱技术及应用实验教师及职称开课学期2016 至2017 学年下学期填报时间2017 年6 月10 日XXXX大学教务处编印一.实验设计方案实验序号二实验名称LED光源光谱定标实验时间2014年6月5日实验室同析三栋318 1.实验目的1、理解波长标定的意义;2、掌握波长标定的方法;3、理解波长最大允许误差和波长重复性的意义;4、掌握检定波长最大允许误差和波长重复性的方法。
2.实验原理、实验流程或装置示意图JJG 178‐2007《紫外、可见、近红外分光光度计》检定规程,2007年11月21日经国家质检总局批准发布,并自2008年5月21日起实施。
该规程对波长范围190nm~2600nm,波长连续可调的可见、紫外‐可见、紫外‐可见‐近红外分光光度计的首次检定、后续检定和使用中检定做出了明确要求。
规程首先将仪器的波长划分为三段,分别是 A 段(190nm~340nm)、B 段(340nm~900nm)、C 段(900nm~2600nm)。
按照计量性能的高低将仪器划分为Ⅰ、Ⅱ、Ⅲ、Ⅳ共四个级别。
规程规定需要检定的主要性能指标包括波长最大允许误差、波长重复性、噪声与漂移、最小光谱带宽、透射比最大允许误差、透射比重复性、基线平直度、电源电压的适应性、杂散光、吸收池的配套性。
波长最大允许误差波长最大允许误差也称为波长准确度,是指仪器测定时标称的波长值与仪器出射的光线实际波长值(波长的参考或理论值)之间的符合程度,一般用多次波长测量值平均值与参考值之差(即波长误差)来测量。
波长准确度的大小其实质反映的是波长的系统误差,一般由仪器装置在制造中的缺陷或仪器没有调整到最佳状态而造成的,它对测量的准确度有很大影响,特别是在对不同仪器的测试结果进行比较时,波长准确度显得更为重要。
用分治法查找数组元素的最大值和最小值(python)
学号: 20162601047 姓名:苏文江专业年级班级:软件1604班实验室:工训中心311 实验日期:2018/5/5课程名称计算机算法实验课时实验项目名称和序号分治算法实验(用分治法查找数组元素的最大值和最小值)同组者姓名实验目的通过上机实验,掌握分治算法的问题描述、算法设计思想、程序设计。
同时,加深我们对分治算法的理解。
实验环境Python 3.6Pycharm实验内容和原理1.实验内容:在满足分治法的条件下,根据不同的输入用例,能准确的输出用例中的最大值与最小值。
并计算出程序运行所需要的时间。
2.实验原理:用分治法查找数组元素的最大值和最小值。
实验步骤方法关键代码1.实验步骤①先解决小规模的问题,如数组中只有1 个元素或者只有两个元素时候的情况。
②将问题分解,如果数组的元素大于等于3 个,将数组分为两个小的数组。
③递归的解各子问题,将中分解的两个小的数组再进行以上两个步骤最后都化为小规模问题。
④将各子问题的解进行比较最终得到原问题的解。
2.实验方法:以递归的方式对分治后的各个部分的结果进行处理,即把各部分的最大值比较得到较大部分的最大值,依次最终得到完整array的最大值。
3.关键代码def Merge_Max(left,right):global array #需要求最大值的数组if(len(array) <= 0): #若数组为空,返回return 0if(right-left <= 1): #已分解至最小单元,取最大值if(array[left] >= array[right]):max = array[left]else:max = array[right]else: #继续分解middle = (left+right)//2max1 = Merge_Max(left,middle)max2 = Merge_Max(middle+1,right)if(max1 > max2): #从分解的子数组中取最大值max = max1else:max = max2return max求最小值原理同求最大值。
算法设计与分析课程设计(完整版)
HUNAN CITY UNIVERSITY 算法设计与分析课程设计题目:求最大值与最小值问题专业:学号:姓名:指导教师:成绩:二0年月日一、问题描述输入一列整数,求出该列整数中的最大值与最小值。
二、课程设计目的通过课程设计,提高用计算机解决实际问题的能力,提高独立实践的能力,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力。
提高适应实际,实践编程的能力。
在实际的编程和调试综合试题的基础上,把高级语言程序设计的思想、编程巧和解题思路进行总结与概括,通过比较系统地练习达到真正比较熟练地掌握计算机编程的基本功,为后续的学习打下基础。
了解一般程序设计的基本思路与方法。
三、问题分析看到这个题目我们最容易想到的算法是直接比较算法:将数组的第 1 个元素分别赋给两个临时变量:fmax:=A[1]; fmin:=A[1]; 然后从数组的第 2 个元素 A[2]开始直到第 n个元素逐个与 fmax 和 fmin 比较,在每次比较中,如果A[i] > fmax,则用 A[i]的值替换 fmax 的值;如果 A[i] < fmin,则用 A[i]的值替换 fmin 的值;否则保持 fmax(fmin)的值不变。
这样在程序结束时的fmax、fmin 的值就分别是数组的最大值和最小值。
这个算法在最好、最坏情况下,元素的比较次数都是 2(n-1),而平均比较次数也为 2(n-1)。
如果将上面的比较过程修改为:从数组的第 2 个元素 A[2]开始直到第 n 个元素,每个 A[i]都是首先与 fmax 比较,如果 A[i]>fmax,则用 A[i]的值替换 fmax 的值;否则才将 A[i]与 fmin 比较,如果 A[i] < fmin,则用 A[i]的值替换 fmin 的值。
这样的算法在最好、最坏情况下使用的比较次数分别是 n-1 和 2(n-1),而平均比较次数是 3(n-1)/2,因为在比较过程中,将有一半的几率出现 A[i]>fmax 情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 求最大值和最小值一、实验目的1、学习子程序的定义和调用方法。
2、掌握子程序设计、调试。
二、实验内容对内存中给定的几个无符号字节数,求其最大值和最小值并在数码管上显示。
三、实验程序框图四、实验步骤联机模式:(1)在内存4000H~4007H中写入任意八个字节的数,按下MON键,返回P状态。
(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S7.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(3)数码管显示为:“XX——XX”,最左两位为最大值,最右两位为最小值。
脱机模式:1、在P.态下,按SCAL键,然后在内存4000H~4007H中写入任意八个字节的数,按下MON键,返回P状态。
2、在P.态下,输入2E70,按EXEC键。
3、数码管显示为:“XX——XX”,最左两位为最大值,最右两位为最小值。
五、实验程序清单CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MIN ASSUME CS:CODEORG 2E70H ;INPUT DATA4000H--4007HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV SI,4000HMOV CX,0008HCALL MAXMINCALL BUF1CON1: CALL DISPJMP CON1MAXMIN: JCXZ EXITPUSH SIPUSH CXPUSH BXMOV BH,[SI]MOV BL,BHCON2: LODSBCMP AL,BHJNA X1MOV BH,ALJMP X2X1: CMP AL,BLJNB X2MOV BL,ALX2: LOOP CON2MOV AX,BXPOP BXPOP CXPOP SIEXIT: RETDISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BH,AHCALL ZHMOV BUF+5,ALMOV BUF+4,AHMOV AL,BHCALL ZHMOV BUF,AHMOV BUF+1,ALMOV BUF+2,17HMOV BUF+3,17HRET;-------------------------------------------------------- ZH: MOV BL,ALMOV CL,4ROL AL,CLAND AL,0FHMOV AH,ALMOV AL,BLAND AL,0FHRET;-------------------------------------------------------CODE ENDSEND START六、思考题1 将数码管显示改为“左边显示最小值,右边显示最大值”,试编程实现。
CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MINASSUME CS:CODEORG 2E70H ;INPUT DATA 4000H--4007HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:dbW0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV SI,4000HMOV CX,0008HCALL MAXMINCALL BUF1 CON1: CALL DISPJMP CON1 MAXMIN: JCXZ EXITPUSH SIPUSH CXPUSH BXMOV BH,[SI]MOV BL,BH CON2: LODSBCMP AL,BHJNA X1MOV BH,ALJMP X2X1: CMP AL,BLJNB X2MOV BL,ALX2: LOOP CON2MOV AX,BXPOP BXPOP SIEXIT: RETDISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HPOP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BH,AHCALL ZHMOV BUF,AHMOV BUF+1,ALMOV BUF+2,17HMOV BUF+3,17HMOV AL,BHCALL ZHMOV BUF+5,ALMOV BUF+4,AHRET;--------------------------------------------------------ZH: MOV BL,ALMOV CL,4ROL AL,CLAND AL,0FHMOV AH,ALMOV AL,BLAND AL,0FHRET;-------------------------------------------------------CODE ENDSEND START2试用JBE/JAE(或JC/JNC)指令改写“求最大最小值子程序;CODE SEGMENT ;S7.ASM,LOOK FOR MAX & MINASSUME CS:CODEORG 2E70H ;INPUT DATA4000H--4007HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:dbW0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV SI,4000HMOV CX,0008HCALL MAXMINCALL BUF1CON1: CALL DISPJMP CON1MAXMIN: JCXZ EXITPUSH SIPUSH CXPUSH BXMOV BH,[SI]MOV BL,BHCON2: LODSBCMP AL,BHJB X1MOV BH,ALJMP X2X1: CMP AL,BLJA X2MOV BL,ALX2: LOOP CON2MOV AX,BXPOP BXPOP CXPOP SIEXIT: RETDISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BH,AHCALL ZHMOV BUF,AHMOV BUF+1,ALMOV BUF+2,17HMOV BUF+3,17HMOV AL,BHCALL ZHMOV BUF+5,ALMOV BUF+4,AHRET;-------------------------------------------------------- ZH: MOV BL,ALMOV CL,4ROL AL,CLAND AL,0FHMOV AH,ALMOV AL,BLAND AL,0FHRET;------------------------------------------------------- CODE ENDSEND START。
数码管显示器内部电路图。