《高中信息技术《算法与程序设计VB(选修)》.doc》由会员分享,可在线阅读,更多相关《高中信息技术《算法与程序设计VB(选修)》.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流高中信息技术算法与程序设计VB(选修)【精品文档】第 17 页一、算法(1)、计算机解决问题的过程计算机程序(Computer Program)是计算机如何去解决问题完成任务的一组可执行指令。程序设计(Program Design)是寻找解决问题的方法,并将其实现步骤编写成计算机可执行的程序的过程。程序设计语言(Program Language)泛指一切用于书写计算机程序的语言。计算机解决问题和人解决问题有着本质区别:计算机解决问题要经历分析问题、确定算法、编程求解等基本过程主。计算机解决问题的流程如下:开始分析问题设计算法编写程序运行程序结束编写程序时
2、,首先要对问题进行详细分析,明确已知条件下的初始状态及要达到的目标,找出解决问题的方法和过程,并抽取出一个数学模型,形成算法;然后将这个数学模型连同它要处理的数据,用计算机能识别的方式描述出来,使之成为计算机能处理的对像;最后用程序设计语言设计出具体的问题求解过程,形成计算机程序。 (2)算法的描述方法、算法的定义及其特征算法:就是解决问题的思想方法,对解题过程的精确描述。计算机解决问题的步骤为分析问题、设计算法、编写程序、调试程序。算法是程序设计的“灵魂”,世界著名计算机科学家尼克劳斯沃斯(N.With)指出:算法+数据结构(Data Structure)=程序。算法具有以下特征。1、有穷性
3、:一个算法必须保证执行有限步之后结束; 2、确定性:算法的每一步骤必须有确切的定义; 3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件; 4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 5、可行性:算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成;(也称之为有效性)、算法的描述方法有自然语言、流程图、伪代码三种形式自然语言描述法:指用人们日常生活中使用的语言(本国语言),用自然语言描述符合我们的习惯,且容易理解。例1:求圆的周长和面积算法如下:(自然
4、语言描述法)(1)输入半径r ;(2) 计算周长c=2*r ;(3) 计算面积 s=*r*r ;(4) 输出周长c,输出面积s ;(5) 结束流程图描述:也称程序框图,它是算法的一种图形化表示方法。且描述算法形象、直观,更易理解。常用的“流程图”所用的基本符号及功能 程序框名称功能开始/结束框表示算法的开始或结束输入/输出框表示算法中变量的输入或输出处理框表示算法中变量的赋值与计算判断框表示算法中的条件判断流程线表示算法中的流向连接点表示算法中的连接例1:求圆的周长和面积c2*rs*r*r输出c,s输入r结束开始伪代码描述法:是介于自然语言和计算机程序语言之间的一种算法描述。是专业软件开发人员
5、常用方法。流程图的基本图形及功能:例1:求圆的周长和面积input rc=2*rs=*r*rprint c,s二、程序设计基础1程序设计语言程序设计语言经了机器语言、汇编语言、高级语言三个阶段。高级语言又分解释型语言和编译型语言。1、机器语言:是计算机能直接识别的语言,机器语言是由一串由“0”和“1”构成的二进制代码。2、汇编语言:是一种符号化的机器语言,用英文助记符代替机器语言,比机器语言容易识别和记忆,提高了程序的可读性。它的缺点是依赖机器,不同的机器有不同的指令集,通用性差,使用时还必须翻译成目标程序执行。3、高级语言:是更接近自然语言和数学语言的编程语言,它不依赖机器,通用性好,更容易
6、掌握。高级语言程序可读性强,更于修改和维护。常见的高级语言:C语言、C+、pascal、java、C#、VB、Basic认识可视化编程工具-VB语言Visual Basic 是基于Basic的可视化程序语言,所谓可视化程序设计,主要是指程序设计人员利用软件本身提供的各种控件,像搭积木式地应用程序的各种界面,然后编写少量的代码就可以构建应用程序。可视化编程的一般步骤:设计程序界面编写程序代码调试、运行程序面向对象程序设计就是以对象为中心,以事件为过程执行的起点。VB可提供的事件有单击(Click)、双击(DbClick)、加载(Load)、按键(KeyPress)等,方法是对象能够的操作,这些操
7、作一般是一个动作或一段程序对象的类型意义前辍名称举例Form窗体FrmFrmfindCommand命令按钮CmdCmdokLabel标签LblLblinputtextbox文本框txttxtsource下面是几个应了解的文件。.vbp文件:与VB工程有关的文件和对象清单,是一个文本文件。.frm文件:是包含窗体及控件的属性设置、相关程序代码的文件。.ocx文件:是VB的扩展文件。.bas文件:是标准的模块文件。2数据及运算.数据类型VB提供了数值型、字符型、布尔型、日期型等基本数据类型。常用数据类型整型Integer从-32768到32767长整型Long从-2147483648到214748
8、3647单精度实型Single负数-3.402823E+38到-1.401298E-45正数1.40129E-45到3.402823E38 但它只有7位有效数字双精度实型Double绝对值小于10308的数,它有15位有效数字日期型Date(Time)如:#2008-01-31# #01/31/2008#字符型String如:“中国”,“zhongguo”布尔型BooleanTrue或False注意:(1)、浮点型(单精度型和双精度型合称)数据的表示方法:浮点数在计算机中类似于数学中的实数,比如304707表示成3.04707E5(2)字符串的表示法:“Visual Basic”、“245”、
9、“=33+2”等。(3)日期型数据的表示方法:用一对“#”号把日期或时间括起来,如#2012/12/25#表示2012年12月25日。.常量与变量(1)、在VB中用常量()表示程序运行过程中事先设置、其值不能改变的数据。VB中的常量有数值常量、字符串常量等。常量的定义形式如下Const 常量名 As 常量类型 = 表达式如:Const pi As Single = 3.14159 常量名为pi(2)、变量()是内存中存放数据的存储单元,其中存放的数据称为变量的值。变量的声明:Dim As 如:Dim a As Integer 定义一个整型变量,变量名为a变量命名注意要点:1、必须以字母开头,不
10、能以数字或其他字符开头。2、只能由字母、汉字、数字学或下划线组成,不能含有小数点、空格等字符。3、最长不超过255个字符 4、不能以VB保留字作变量名,如语句定义符、函数名等。5、VB不区分变量名中字母大小写。如HELLO和Hello是同一个变量。6、变量名最好取有意义的名称,一般在前面加上类型的缩写。常用的前辍有:字符型(str)、整型(int)、长整型(lng)、单精度(sng)、双精度(dbl)、布尔型(bln)、日期型(dtm)。运算符与表达式1.在VB中根据运算功能的不同将运算符分为算术运算符、字符串运算符、日期运算符、关系运算符和逻辑运算符等。2.表达式是由变量、常量、运算符、函数
11、和圆括号按一定规律组合而成。VB中常用的表达式有算术表达式、字符串表达式、日期表达式、关系表达式、逻辑表达式等。算术运算:+-*/mod加减乘乘方除整除取余算术运算符要求参与运算的量是数值型,运算的优先级为:指数取负乘除法整除加减,运算的结果是数值型。关系运算:=等于大于小于大于等于小于等于不等于关系表达式的运算结果为布尔值True 或 False逻辑运算:Not(取反)And(与) Or(或),运算结果为布尔型(Boolean)True 或 False,逻辑运算符的优先级为:No And Or日期运算符与日期表达式:日期表达式是用日期运算符“+”或“-”将算式表达式、日期型常量、日期型变量、
12、日期函数等连接起来的式子,如表达式“#2003/09/01# +30”的运算结果是“2003-10-1”;表达式“#2003/10/20# - #2003/10/10#”的运算结果为整数10字符运算:字符串连接符为“+”和“&”“123” + “45” = “12345”“123” & “45” = “12345”123 + “45” = 168“123” + 45 = 168运算符的执行顺序:在VB中,当一个表达式中同时出现多种运算符时,运算次序由运算符的优先级决定,优先级高的运算符先运算,优先级相同的从左向右进行运算。不同性质的运算符优先级如下。算术运算符 字符串运算符 关系运算符 逻辑运
13、算符.常用语句1.赋值语句的格式:变量名=表达式把右边的数或表达式的值赋给左边的变量。2.Print语句格式为:对象名. Print 表达式列表Print语句是VB中的输出语句,其功能是在指定的对象上输出结果,默认对象为当前窗体。Print语句后面无表达式时,表示换行;Print显示项后面没有符号,表示显示完换行;Print语句显示项用分号分隔,表示后续显示项紧凑显示;Print语句显示项用逗号分隔,表示后续显示项分区显示,每区14个字符位。3.注释语句格式:Rem注释内容,当使用Rem语句时,必须单独写一行。使用“ ”的注释语句时,可以单独写一行,也可以跟在其它语句的后面。4.结束语名有格式
14、:End。是VB的强制结束语句,.常用函数1.交互函数。(1)InputBox( )函数是一个输入函数。格式:InputBox (提示,标题,默认值,x坐标,y坐标)例:InputBox ( “请输入一个数” )(2)Msgbox( )函数主要来显示多种样式的消息对话框。格式:Msgbox(提示信息,按钮,标题 )例:Msgbox(“ 输入的用户名不正确 ” , 16 , “ 提示 ”)2.数学函数。数学函数用于数学运算,数学函数主要有以下几种:函数名说明示例结果Sin(X)X弧度的正弦Sin(0)0 Cos (X)X弧度的余弦 Cos (0)1Tan(X)X弧度的正切Tan(0)0Atn(X
15、)X用弧度表示的反正切值Atn(0)0Abs(X)X的绝对值 Abs(-3.5)3.5Exp(X)e的指定次幂,即exExp(3)20.086Log(X)一个数值X的自然对数Log(10)2.3Sqr(X)X的平方根Sqr(9)3Sgn(X)符号函数:X0,得到1,X0,得到-1,X=0得到0 Sgn(-3.5)-1Int(X)不大于给定数X的最大整数Int(-1.6)-2Rnd产生0,1 之间的小数Rnd返回1随机数Fix(X)X的整数部分 Fix(-1.6)-1Cint(X)类型为:Integer -32276832767小数部分四舍五入CLng(X)类型为:Long -214748364
16、82147483647 小数部分四舍五入注意:三角函数中的参数使用弧度数,Rnd函数返回0,1之间的一个随机实数,一般和Randomize为初始化随机数生成器。3.字符串函数VB提供了丰富的字符串处理函数,学用的字符串函数有以下几种Mid(C,N1,N2)从C中N1位开始取出长度为N2的子串Mid(“ABCDEFG”,3,2)“CD”Right(C,N)返回字符串右边N个字符Right(“ABCDEFG”,3)“EFG”Left(C,N)返回字符串左边N个字符Left(“ABCDEFG”,3)“ABC”Len(C,N)测量字符串的长度Len(“VB学习的开始”)7Space(N)产生N个空格组
17、成的字符串“ABC”&“Space(N) ”& “113”“ABC 123”4.日期函数Date()返回当前系统日期(yy-mm-dd)Date()或Date04-12-18Day()反回指定日期的日数Day( “10/22/2012” )22Month()反回指定日期的月数Month( “10/22/2012” )10Year()反回指定日期的年份Year( “10/22/2012” )2012Time()返回系统时间Time()或Time10:36:083.程序设计的顺序结构VB程序有三种基本结构,即顺序结构、选择结构和循环结构。顺序结构是三种结构中最基本的结构,在顺序结构中,算法的各个步
18、骤是按语句的先后顺序执行。4.程序设计的分支结构(1)、If语句1.单分支If格式为:If Then语句块End if2.双分支If语句的格式:If Then 语句块1 Else语句块2End if 例:在Text1文本框中输入一个年号,判断它是否是闰年,并输出判断结果“是闰年”或“不是闰年”。判断闰年的算法是:如果此年号能被400除尽,则它是闰年,否则如果它能被4整除而不能被100整除,则它是闰年,否则它不是闰年。打开文件“Z:38工程1.vbp”,完善程序后并保存。Private Sub Command1_Click() Dim year As Integer year = Val(Inp
19、utBox(请输入年号:) If (year Mod 4 = 0) And (year Mod 100 0)or (year Mod 400 = 0) Then Print 是闰年 Else Print 不是闰年 End If End Sub3.使用If语句的多层嵌套还可以实现程序的多分支结构,但程序结构较烦琐。(2)、Select CaseSelect Case语句格式:Select Case 表达式Case 表达式列表1语句块1Case表达式列表1语句块2Case表达式列表n语句块 nEnd Select“表达式列表”通常是一组常量值,每个值确定一个分支。表达式列表可以使用下面的格式:(1
20、)一组用逗号隔开的若干表达式,如Case 1,2,3表示1,2,3满足指定条件。(2)表达式1 to 表达式2,如:Case 70 to 80这一取值范围满足指定条件。(3)Is关系运算符表达式,如:Case Is30 ,表示大于30满足指定条件。例:输入不同的飞船速度后,判断出它的飞行状况。在“神州九号载人飞船”飞行程序中,其飞行状况与飞行速度的关系如下表:飞船速度(V) 单位(km/s) 飞行状况 7.91=V11.19 飞船绕地球似做匀速圆周运动 11.19=V16.67 飞船挣脱太阳引力飞出太阳系 Private Sub Command1_Click() Dim v As Single
21、 v = Val(InputBox(请输入飞船速度的值) Select Case v Case Is 16.67 Label1.Caption = 飞船挣脱太阳引力飞出太阳系 Case Is =11.19 Label1.Caption = 飞船离开地球的控制,围绕太阳转 Case Is =7.91 Label1.Caption = 飞船绕地球似做匀速圆周运动 Case Else Label1.Caption = 输入数据错误! End SelectEnd Sub5.程序设计的循环结构1.For/Next循环语句For/Next循环语句学用来解决已知循环次数的程序设计问题。格式:For 循环变量
22、=初值 To 终值 Step步长值 Next 循环变量Next后的循环变量与For后的循环变量必须相同例1:求s1+2+3+4.+100Private Sub Form_Click() Dim i As Integer Dim sum As Integer sum = 0 For i = 1 To 100 step 1 sum = sum + i 循环体 Next i Print sum=; sumEnd Sub循环变量的初值、终值、循环变量增量都是数值型。其中要重复执行的操作称为循环体,增量可正可负,如果没有设置Step,则增量的缺省值为1a循环变量取初值;b循环变量与终值比较,没有超过终值
23、转3,否则循结束,接着执行循环语句的后继语句;c执行一次循环体d循环变量增加一个增量e重复步骤24。以上可以看出,For-Next循环变量是一种当型循环。说明1、For语句与Next语句必须成对出现,而且它们当中的“循环变量”必须是同一个变量,如上例中均为I。2、当循环变量为正时,循环变量超过终值,是指循环变量的值大于终值时;若为负,则是指循环变量的值小于终值。例2:编写程序,使能打印下面所示的图案。程序:Private Sub Form_Click() Dim i As Integer Dim j As Integer For i = 1 To 6 外循环打印6行 For j = 1 To
24、i 内循环打印个数 Print “”; Next j Print Next iEnd Sub一个FOR循环里包含了另一个FOR,我们称它为嵌套循环。2.Do/Loop循环语句Do/Loop循环语句常用来解决未知循环次数的程序设计设计问题,可分为当型循环和直到型循环两种。当型循环是指当条件成立时才执行循环,常用Do While/Loop或Do/Loop While循环语句;而直到型循环是指直到条件成立时才跳出循环,常用Do/Loop Until循环语句。Do While/Loop循环语句的格式:Do While Loop“条件”是关系表达式或逻辑表达式。Do While/Loop循环就是当给定的
25、“条件”为True时,执行循环体,给定的“条件”为False时,不执行循环体。Do While/Loop循环的执行过程如下:(1)执行Do语句;(2)执行循环体;(3)执行Loop Until语句,如果“条件”不成立,转到(1)执行,否则转到(2)执行;(4)执行Loop语句后的语句。例1:求最大公约数Private Sub Command1_Click() Dim a As Integer Dim b As Integer Dim r As Integer a = InputBox(输入a) b = InputBox(输入b) r = a Mod b Do While r 0 a = b b
26、 = r r = a Mod b Loop Print bEnd Sub例2:如果我国人口每年以平均1.5%的速度增长,问多少年后我国人口达到或超过15亿?设现在人口为12.3亿。Private Sub Form_Click() Dim p As Single Dim r As Single Dim n As Integer p = 1230000000 r = 0.015 n = 0 Do p = p * (1 + r) n = n + 1 Loop Until p = 1500000000 Print n; 年后, 人口=; pEnd Sub例3完成下面程序,使得程序运行时单击窗体后,计算
27、1+2+3+n500的n的最大值,并在文本框Texe1中显示结果。Dim s As IntegerDim n As IntegerDo While s2m,n为偶数)。Dim x As Integer, y As Integer, m As Integer, n As Integer x:鸡;y:兔;m:头数;n腿数m = Val(InputBox(输入m的值, 解析法)m = Val(InputBox(输入n的值, 解析法)X=Y= Print 鸡:; x; 兔:; y分析:本题为完美程序题,主要写出求鸡、兔数量的公式。由题意可知,设鸡为x只,兔为y只,用数学方法可列出方程组m=x+yn=2
28、x+4y解这个方程组可得x=(4m-n)/2,y=m-x2、穷举法:是例举一切与命题相关的情况,然后根据问题设定的条件,逐个加以检查,找到满足条件的解。例1:公元6世纪,中国的张丘建算经有一道著名的百鸡问题:公鸡5钱1只,母鸡3钱1只,小鸡三只1钱,有人用100钱买了100只鸡,请完美程序,求其中公鸡、母鸡、小鸡各多少只。For i=0 to 20For j=0 to 33K= If 5*I+3*j+k/3= thenPrint i,j,kNext jNext i分析:本题使用的是穷举法,从if语名可以看出,i代表公鸡数,j代表母鸡数,k代表小鸡数,故第一个填空为100-i-j,if语句是判断
29、钱数的,按题意第二空为100。例2:鸡兔同笼,共有100条腿,40个头,问鸡有几只,兔有几只?Dim Ji As Integer Ji变量表示鸡的个数 Dim Tu As Integer Tu变量表示兔的个数 Dim Leg As Integer Leg变量表示腿数 For Ji = 1 To 40 Tu = 计算腿数 Leg = + Tu * 4 如果腿正好100只,则打印。 If Leg = Then Print 鸡=; Ji; 只, 兔=; Tu; 只 End If Next Ji分析:本题使用的是穷举法,鸡从1到40列举,兔的数量就是40-鸡的数量,故第一处为40-ji,接着计算脚的总
30、数,第二处应是鸡的脚数为ji*2,第三处判断当鸡从1到40列举时根据其中某一鸡的数量值计算总脚数是否为100,是100就打印鸡与兔的只数。3、递归法:如果一个函数自己调用了自己,这种算法叫递归算法。例如函数A自己调用了自己,这就是递归算法。另外,例如函数A调用了函数B,函数B反过来调用了函数A的算法,也是递归算法。递归算法的特征是设法将规模较大的问题分解为规模较小的问题,然后通过这些规模较小的问题也能采用同样的方法分解规模成更小的问题,并通过这些更小问题的解构造出规模更大问题的解。当规模为1时,能直接得解。由于递归算法能引起一系列的函数调用,并且可能有一系列的重复计算,所以递归算法的执行效率相
31、对较低。利用递归算法解决问题时,首先要对问题的以下三方面进行分析。(1)找出决定问题的更大规模。(2)找出解决问题的边界条件及边界值。(3)构造解决问题的通式。1.自定义函数。Public|private Function ()As 函数名=返回值End Function自定义函数的调用有以下三种格式。格式1:变量=函数名称(参数)格式2:Call函数名称(参数)格式3:函数名称(参数)2.在子过程中调用递归调用。一般格式如下。If 边界条件1成立 Then 赋予边界值1Else赋予边界值2Else 调用解决问题的通式End If例1: 用递归算法求6!.Public Function a(n
32、 As Integer) As Long If n=1 Then a= Else a= End IfEnd FunctionPrivate Sub Command1 Click() Print “a(6)=”;a End Sub分析:递归算法是程序设计的一个难点,递归程序的关键是要找出问题的递归关系和初始值。方法之一就是利用递归法根据问题归纳总结出递归式,加上初始条件,从而编写递归函数。这里的边界条件是当n=1时,1的阶乘等于1,故第一空为1,当没用边界条件时,如当n=6时,6=6*5!,故第二空应是a(n-1)*n,第三空应是(6)。例2:用递归法求斐波那契数列1,1,2,3,5,8,第10
33、项的值。Public Function Fib(n As Integer) As Integer If (n = 1) Or (n = 2) Then Fib = Else Fib = Fib(n - 1) + Fib(n - 2)End FunctionPrivate Sub Command1_Click() Dim S As Integer S = Fib( ) Print S= & CStr(S)End Sub分析:这里边界条件是当n=1时,1的斐波那契数列的值为1,故处填1,当没用边界条件时,如n=3时,Fib=Fib(3-1)+Fib(3-2),第3项的值为第二项的值加第一项的值。处
34、应是判断结束标志End If ,s为第10项的值,故 的值为10。4、排序与查找数据数组:数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。定义数组的格式如下:Dim 数组名 (常量)As 数据类型例:Dim Array (9) As Integer定义的数组包含10个元素下标从0到9。定义数组时也可以指写上 下标的起始值。例:Dim IntegerArray (2 to 10) As Integer定义的数组含有9个元素,下标从0到10.还可定义多维数组,如: Dim ThreeD (1 to 4,2 to 5,3 to 6) As Integer,
35、定义了一个三维数组(444)。顺序查找数据查找分为顺序查找和二分查找两种。顺序查找时,一般从数据的第一个元素开始中,按照数据的顺序查找指定的关键值;如果被查数据和该关键值匹配,则表示找到,如果所有数据与关键值都不匹配,则表示被查数据中不存在该关键值。例1:学校秋季运动会100米短跑比赛后,要查找运动员的成绩,数组a中存放的是20名运动员的号码,数组b中存放的是运动员对应的成绩,现输入运动员号码来查找运动员成绩,如果找到则显示成绩。下列程序中空白处的代码应为( )。Dim a(19) As IntegerDim b(19) As IntegerPrivate Sub Command1_Click
36、()Randomize 打开随机数开关For i=0 to 19a(i)=100+i 生成20名运动员号码,用于测试程序a(i)=10+Int(Rnd*10)/10 生成20名运动员随机成绩,用于测试程序Next IEnd SubPrivate Sub Command2_Click() Dim ret As BooleanRet=FalseKey=Val(Text1.Text)For I=0 to 10If ThenPrint “ 运动员”;Key;”成绩是:”;b(i)Ret= End IfNext IIF Not ret ThenPrint “没有找到这个运动员成绩”End Sub分析:查
37、找实际上就是进行比较,顺序查找就是从第一个数组元素开始,比较每一个元素中的值跟关键值是否相同,相同表示找到,是a(i)=key 是True.二分法查找二分法查找也叫折半查找,它要求被查找的数据是有序的,否则无法使用二分法查找。利用二分法查找时,首先设置一个上边界和一个下界,然后取上下界中间的元素与指定的关键值进行比对。如果两者相符,表示找到,结束查找。如果不相符,再判断关键值落在中间元素的左半部还是右半部,如果在左部,则保持下界位置不变,将上界设在中间元素的前一个位置,重新查找;如果在右部,则保持上界位置不变,将下界设在中间元素的后一个位置,重新查找。如此反复进行,若下界大于上界,表明没用元素
38、与关键值相匹配,查找结束。例如:数组a(9)中存放从小到大的10个数字字符:2,4,7,9,10,14,18,26,32,40,查找关键字是7的元素。Private Sub Command1_Click()Dim a(9) As Integer 定义数组Dim low As Integer, hight As Integer, mid As Integer定义下界、上界、中间数值类型Dim flg As Boolean 定义查找标志为逻辑数据a(0)= 2: a(1)= 4: a(2)= 7: a(3)= 9: a(4)= 10a(5)= 14: a(6)= 18: a(7)= 26: a(8
39、)= 32: a(9)= 40 数组赋值low = 0 设置下界初始值hight = 9 设置上界初始值flg = False设置查找标志初始为否Do While low = hight 设置循环查找的条件为下界小于等于上界 mid = (hight + low) / 2 取下上界中间值 If a(mid) = Val(Text1.Text) Then 查找输入的值与数组中的值是否匹配 flg = True 标志为true Exit Do 退出循环 ElseIf Val(Text1.Text) a(mid) Then 如果输入的值小于下上界中间位的值 hight = mid 1 下界不变、上界由中间位前移一位 Else 如果输入的值大于中间位的值 low = mid + 1上界不变、下界由中间位后移一位 End IfLoopIf flg Then Text2.Text = 要找的数 & (Text1.Text) & 是数组第 & m