(精品)VB程序设计ch03_2循环数组.ppt

上传人:hyn****60 文档编号:70943858 上传时间:2023-01-29 格式:PPT 页数:183 大小:685.50KB
返回 下载 相关 举报
(精品)VB程序设计ch03_2循环数组.ppt_第1页
第1页 / 共183页
(精品)VB程序设计ch03_2循环数组.ppt_第2页
第2页 / 共183页
点击查看更多>>
资源描述

《(精品)VB程序设计ch03_2循环数组.ppt》由会员分享,可在线阅读,更多相关《(精品)VB程序设计ch03_2循环数组.ppt(183页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、3.3.9循环语句循环语句(P.51)在指定的条件下在指定的条件下多次重复执行一组语句多次重复执行一组语句,可以,可以运用循环结构实现。运用循环结构实现。VB中提供两种类型的循环语句:中提供两种类型的循环语句:条件型循环语句条件型循环语句DoLoop语句语句计数型循环语句计数型循环语句ForNext语句语句11.DoLoop语句语句 适用适用:事先不知道循环次数的操作事先不知道循环次数的操作有有两两种种语语法法形形式式,分分别别是是先先判判断断后后执执行行的的循循环环结结构和先执行后判断的循环结构。构和先执行后判断的循环结构。1)先判断后执行的循环结构语句格式先判断后执行的循环结构语句格式Do

2、While|UntilExitDoLoop其中:其中:关键字关键字While:条件为真,执行循环体;条件为真,执行循环体;Until:条件为假,执行循环。条件为假,执行循环。2说明:说明:条条件件表表达达式式可可以以是是一一个个逻逻辑辑表表达达式式,也也可可以以是是一一个个关系表达式,其值应是逻辑型。关系表达式,其值应是逻辑型。DoWhile和和Loop应成对出现。应成对出现。循环体中要循环体中要有控制循环的语句有控制循环的语句,以避免出现死循环。,以避免出现死循环。由由于于该该循循环环的的特特点点是是先先判判断断条条件件,然然后后再再决决定定是是否否要要执执行行循循环环体体里里的的语语句句。

3、所所以以,这这种种循循环环有有可可能能一一次次也也不不执行循环体。执行循环体。ExitDo表表示示当当遇遇到到该该语语句句时时,强强制制退退出出循循环环,执执行行Loop后后的的下下一一条条语语句句。ExitDo语语句句通通常常用用于于另另一一个个条条件判断之后。件判断之后。32)先执行后判断的循环结构语句格式)先执行后判断的循环结构语句格式DoExitDoLoopWhile|Until4说明:说明:对对于于DoLoopWhile语语句句,循循环环体体至至少少执执行行一一次次。当当为为真真时时继继续续执执行行语语句句块块(也也称称为为循循环环体体),为为假时终止循环。假时终止循环。与与DoWh

4、ile循环的区别:循环的区别:DoWhile循环(先测试条件是否成立,只有成立才执行循环)循环(先测试条件是否成立,只有成立才执行循环)DoLoopWhile循环(先执行循环体,后测试条件是否成立)循环(先执行循环体,后测试条件是否成立)一般情况下,两种循环结构可互相转换,处理同一问题。一般情况下,两种循环结构可互相转换,处理同一问题。特殊情况,特殊情况,先判断后执行的循环结构,有可能一次循环也不执行;先判断后执行的循环结构,有可能一次循环也不执行;先执行后判断的循环结构,至少执行一次。先执行后判断的循环结构,至少执行一次。53)实例)实例【例例3-4】求求分析:题意是求分析:题意是求1+2+

5、3+100的累加和。设变量的累加和。设变量s为累加和,初值为为累加和,初值为0,用,用Command1作为作为“计算计算”按钮,并将累加和显示在按钮,并将累加和显示在Label2中。中。运行结果如图运行结果如图所示:所示:循环三要素:循环三要素:(1)循环初值循环初值i=1(2)循环条件循环条件i=100(3)改变循环条件的语句改变循环条件的语句,若若无此语句,成死循环。无此语句,成死循环。6【例例3-4】代码:代码:PrivateSubCommand1_Click()DimsAsInteger,iAsIntegers=0s为累加和为累加和i=1i为加数为加数DoWhilei=100s=s+i

6、i=i+1LoopLabel2.Caption=s显示结果显示结果EndSub7【例例3-4】代码:代码:PrivateSubCommand1_Click()DimsAsInteger,iAsIntegers=0s为累加和为累加和i=1i为加数为加数DoWhilei=100s=s+ii=i+1LoopLabel2.Caption=s显示结果显示结果EndSub8例题例题3-4代码也可以写为:代码也可以写为:Dos=s+i:i=i+1LoopWhilei=1009l例:例:1+2+3+10形式形式1:形式形式2:sum=0sum=0i=InputBox(“i=“)i=InputBox(“i=“)

7、DOwhilei=10Dosum=sum+isum=sum+ii=i+1i=i+1LoopLoopWhilei=10若输入:若输入:i=11(初值初值)DOwhileLoop循环:循环:whilei=10不满足,一次循环也不不满足,一次循环也不执行执行,sum=0。DOLoopwhile循环:至少执行一次循环,循环:至少执行一次循环,sum=11。10【例例3-5】求求下下面面级级数数 1-2/32+4/52-6/72+的的和和,直直到最后一项的绝对值小于到最后一项的绝对值小于10-6.(P.52)分析:分析:本本题题的的关关键键是是要要找找出出每每一一项项的的通通式式,由由级级数数可可见见每

8、每项项的的分分子子承承2、4、6偶偶数数的的变变化化,即即每每项项的的分分子子为为前前一一项项分分子子的的2倍倍;分分母母为为 32、52、72奇奇数数平平方方的的变变化化,即即分分子子加加1 后后的的平平方方。假假设设变变量量 f 控制每一项前正、负号,控制每一项前正、负号,t 表示每一项。表示每一项。11【例例3-5】代码:代码:DimfAsInteger,tAsSingleDimsAsSingle,iAsSinglef=1:t=1:s=0:i=1Dos=s+tf=-ft=f*(2*i)/(2*i+1)2每一项的通式每一项的通式i=i+1LoopUntilAbs(t)n;(2)m 除以除以

9、n 得余数得余数r;(3)若若r=0,则,则n 为最大公约数结束;否则执行为最大公约数结束;否则执行(4);(4)mn,nr,再重复执行再重复执行(2)。13求两自然数求两自然数m,n 的最大公约数流程。的最大公约数流程。mnr322482480辗转相除法辗转相除法FTr=0显示显示最大公约数、最小公倍数最大公约数、最小公倍数r=mModnmnm=nn=r14【例例3-5a】代码如下:代码如下:Dimm%,n%,t%,r%n1=InputBox(输入输入n):n=n1m1=InputBox(输入输入m):m=m1Ifmnt=m:m=n:n=tr=mModn求余数求余数DoWhiler0辗转相除

10、法辗转相除法m=nn=rr=mModnLoopPrintm;,;n;的最大公约数为的最大公约数为;nPrint最小公倍数最小公倍数=;m1*n1/n152.ForNext语句语句在在已已经经知知道道循循环环次次数数的的情情况况下下,使使用用ForNext语句比语句比DoLoop语句更方便。语句更方便。1)语句格式语句格式For=ToStepExitForNext循环变量循环变量16ForNext语句的执行过程是:语句的执行过程是:首首先先把把初初值值赋赋给给循循环环变变量量,接接着着检检查查循循环环变变量量的的值值是是否否超超过过终终值值,如如果果超超过过就就不不执执行行循循环环体体,跳跳出出

11、循循环环,执执行行Next后后面面的的语语句句;否否则则执执行行一一次次循循环环体体,然然后后把把循循环环变变量量增增加加步步长长,再再赋赋给给循循环环变变量量,重重复复上上述述过程。过程。For=ToStepExitForNext循环变量循环变量172)有关有关说明说明:格式中的参数说明:格式中的参数说明:循循环环变变量量也也叫叫做做循循环环控控制制变变量量,它它是是一一个个数数值值变变量量,但但不不能是数组变量。能是数组变量。循循环环的的初初值值、终终值值和和步步长长都都是是数数值值表表达达式式,其其值值不不一一定定是是整整数数,可可以以是是实实数数,VBVB自自动动取取整整。其其中中,增

12、增量量参参数数可可正正可可负负。如如果果增增量量为为正正,则则初初值值必必须须小小于于等等于于终终值值,否否则则不不能能执执行行循循环环体体内内的的语语句句;如如果果增增量量为为负负,则则初初值值必必须须大大于于等等于于终终值值。如如果果没有设置没有设置step,则增量默则增量默认为认为 1 1。在在For语语句句和和Next语语句句之之间间的的语语句句块块称称为为循循环环体体,可可以以是是一个或多个需要重复执行的语句。一个或多个需要重复执行的语句。ExitFor为为强强行行退退出出循循环环语语句句。用用于于在在一一定定条条件件下下退退出循环控制结构的执行。出循环控制结构的执行。Next是是循

13、循环环终终端端语语句句,在在Next后后面面的的循循环环变变量量与与For中中的的循循环环变变量量必必须须相相同同。当当循循环环是是单单层层循循环环时时,Next后后面面的的循循环环变变量可以不写。量可以不写。18当当初初值值等等于于终终值值时时,不不管管步步长长是是正正数数还还是是负负数,都执行一次循环体。数,都执行一次循环体。循循环环次次数数由由初初值值、终终值值和和步步长长决决定定,计计算算公公式为:式为:循环次数循环次数=INT(终值终值初值)初值)/步长步长+1)For语语句句和和Next语语句句必必须须成成对对出出现现,不不能能单单独独使用。使用。如如果果要要在在循循环环变变量量到

14、到达达终终值值前前退退出出循循环环,可可用用ExitFor语语句句来来实实现现。该该语语句句可可以以在在For循循环环中中出出现多次,且位置不限。现多次,且位置不限。193)实例)实例:【例例3.6】求求100300之间的同时能被之间的同时能被3和和5整除的数,这整除的数,这些数的个数及这些数的平均值。运行结果如图所示。些数的个数及这些数的平均值。运行结果如图所示。20代码如下:代码如下:PrivateSubForm_Click()Dims%,i%,n%,pj!s=0:n=0为为s,n赋初值赋初值lFori=100To300lIfiMod3=0AndiMod5=0Thenls=s+i累加累加l

15、n=n+1满足给定条件的数的个数满足给定条件的数的个数1lPrinti,lIfnMod5=0ThenPrint每行输出每行输出5个数据个数据lEndIflNextipj=s/n计算平均值计算平均值PrintPrintPrintn=;n,pj=;pjEndSub213.循环的嵌套循环的嵌套一个循环体内又包含了一个完整的循环结构称为循环的嵌套。一个循环体内又包含了一个完整的循环结构称为循环的嵌套。对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;不能

16、从循环体外转向循环体内,反之则可以。不能从循环体外转向循环体内,反之则可以。正确正确错误错误 Forii=1To10Forii=1To20NextiiNextii Forii=1To10Forjj=1To20NextjjNextiiForii=1To10NextiiForii=1To10Nextii Forii=1To10Forjj=1To20NextiiNextjj22【例例3-7】打印图形打印图形*分析:用循环嵌套解决此问题分析:用循环嵌套解决此问题*for(i)行控制行控制*for(j)空格控制空格控制*nextj*for(k)打印打印“*nextk*nexti*运行结果如图所示:运行结

17、果如图所示:23PrivateSubForm_Click()dimi%,j%,k%fori=0to3行控制行控制print;距窗口左边界一个空格距窗口左边界一个空格forj=0to2-iprint;打印空格打印空格nextjfork=0toiprint*;打印打印*nextkprint换行换行nexti24fori=0to3图形的下半部分图形的下半部分print;forj=1toiprint;nextjfork=0to3-iprint*;nextkprintnextiEndSub253.3.7常用算法(一)常用算法(一)算法是对某个问题求解过程的描述。算法是对某个问题求解过程的描述。1.1.累

18、加、累乘累加、累乘 【例例3-8】求自然对数求自然对数e的近似值的近似值,要求其误差小于要求其误差小于0.00001,近似公式为:,近似公式为:26【例例3-8】求自然对数求自然对数e的近似值的近似值,误差小于误差小于0.00001。本例题涉及两个问题:本例题涉及两个问题:(1)用循环结构求)用循环结构求级数和级数和的问题。本例根据某项值的问题。本例根据某项值的精度来控制循环的结束与否。的精度来控制循环的结束与否。(2)累加:)累加:e=e+t ,循环体外对累加和的变量清零循环体外对累加和的变量清零e=0 连乘:连乘:n=n*i,循环体外对连乘积变量置循环体外对连乘积变量置1n=127Dimi

19、%,n&,t!,e!e=0:n=1 e存放累加和、n存放阶乘i=0:t=1 i计数器、t第i项的值DoWhilet0.00001e=e+t:i=i+1累加、连乘累加、连乘n=n*i:t=1/nLoopPrint计算计算;i;项的和是项的和是;e 28【例例3-9】创建应用程序创建应用程序ex03-09,用以下公式计用以下公式计算级数的近似值。(实验范例算级数的近似值。(实验范例4-6)当第当第i项的值项的值105时,结束计算。时,结束计算。提提示示:因因为为循循环环次次数数不不明明确确,一一般般应应使使用用Do Loop Until循循环环结结构构,也也可可以以使使用用DowhileLoop循

20、环结构。循环结构。29例例3-9】代码:代码:Dimi%,b%,k%Dimf!,p!,s!,rAsDoubleb=1:k=1:i=1:p=1:r=1:s=0赋赋初初值值Dob=-b产产生正生正负负相相简简的符号的符号s=s+p累加累加f=k*(k+2)第第i项项的分子的分子值值r=r*(2*i-1)*(2*i)第第i项项的分母的分母值值p=b*f/r第第i项项的的值值k=k+2i=i+1LoopUntil(Abs(p)=0.00001)直到第直到第i项项的的值值=0.00001退出循退出循环环PrintS=;s30例例03-09a:创建应用程序创建应用程序ex03-09a,用以下公用以下公式计

21、算式计算sinx的近似值。的近似值。该程序要求:该程序要求:x,n(项数)的值由键盘输项数)的值由键盘输入。入。(实验范例(实验范例4-5)31提示:提示:在在Text1,Text2文文本本框框中中,分分别别输输入入x(弧弧度度),n(项项数数),单单击击“计计算算”按按钮钮,程程序序运运算算结结果果,在在Text3文本框中显示。文本框中显示。单击单击“退出退出”按钮,程序结束。按钮,程序结束。运行结果如图所示。运行结果如图所示。32主要代码:主要代码:x=Text1.Text设为双精度,避免出现溢出问题设为双精度,避免出现溢出问题n=Text2.Textb=1控制正负符号控制正负符号i=1:

22、r=1:f=x:s=x:m=2DoWhilem=nb=-bf=f*x*x分子分子r=r*(2*i)*(2*i+1)分母分母p=f/r第第i项的值项的值s=s+b*p累加累加i=i+1m=m+1项数项数+1,改变循环条件,改变循环条件LoopText3.Text=Str(s)33完整的程序代码:完整的程序代码:PrivateSubCommand1_Click()DimnAsInteger,bAsInteger,iAsInteger,mAsIntegerDimxAsSingle,rAsDouble,fAsSingle,sAsSingle,pAsSinglex=Text1.Textr设为双精度,否则

23、会出现溢出问题设为双精度,否则会出现溢出问题n=Text2.Textb=1控制正负符号控制正负符号i=1:r=1:f=x:s=x:m=2DoWhilem=nb=-bf=f*x*x分子分子r=r*(2*i)*(2*i+1)分母分母p=f/r第第i项的值项的值s=s+b*p累加累加i=i+1m=m+1项数项数+1,改变循环条件,改变循环条件LoopText3.Text=Str(s)EndSub34 2 2.求素数求素数 (P.54例例3-7)【例例3-10】求求100以内的素数。以内的素数。分析:分析:所所谓谓素素数数或或质质数数,是是指指一一个个大大于于2的的整整数数,并并且且只只能能被被1和和

24、本本身身整整除除。判判断断某某一一个个数数n是是否否为为素素数数,有有多多种种方方法法,最最简简单单的的是是从素数的定义来求解,算法如下:从素数的定义来求解,算法如下:对对于于n从从i=2,3,n-1判判别别n能能否否被被i整整除除,只只要要有有一一个个能能整整除除,n不不是是素素数数,如如果果都不能整除,都不能整除,n就是素数。就是素数。实实际际上上,让让n 被被2到到sqr(n)除除即即可可,sqr(n)是求是求n的平方根函数。的平方根函数。35PrivateSubForm_Click()DimiAsInteger,nAsIntegerForn=2To100Fori=2Toint(Sqr(

25、n)If(nModi)=0ThenGotoNotNextn能被能被i整除,该整除,该n不是素数不是素数NextiPrintn;n不能被不能被i=2sqr(n)整除,整除,n是素数,显示是素数,显示NotNext:NextnEndSub)36 2 2.求素数求素数 (P.54例例3-7)【例例3-10】求求100300间的所有素数。间的所有素数。分析:分析:判断某一个数判断某一个数n是否为素数的算法:是否为素数的算法:设设定定状状态态变变量量Flag,如如果果n能能被被2sqr(n)中中任任何何一一个个整整数数整整除除,则则在在内内循循环环中中确确定定n不不是是素素数数,提提前前结结束束循循环环

26、;如如果果都都不不能能整整除除,n就就是是素素数数。在在内内循循环环体体外外根根据据Flag的的状状态态显显示示结果。结果。37运行结果如图所示。运行结果如图所示。38PrivateSubForm_Click()DimiAsInteger,nAsInteger,FlagAsBoolean,jAsIntegerj=0Forn=101To300Step2对对100300以内的每个数判断其是否为素数以内的每个数判断其是否为素数Flag=Truem=Sqr(n)Fori=2TomIf(nModi)=0ThenFlag=Falsen能被能被i整除,该整除,该n不是素数不是素数ExitForEndIfNe

27、xtiIfFlagThenPrintn;n不能被不能被i=2sqr(n)整除,整除,n是素数,显示是素数,显示j=j+1Ifj=5Thenj=0:Print每行输出每行输出5个数据个数据EndIfNextnEndSub39 3.递推法递推法 “递推法递推法”又称为又称为“迭代法迭代法”,其基本,其基本思想是把一个复杂的计算过程转化为简单过思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从旧值的基础上程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。递推出新值,并由新值代替旧值。40【例例3-11】猴子吃桃子。小猴在某天摘桃若干个,当猴子吃桃子。小猴在某天摘桃若干

28、个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到多一个;以后每天都吃尚存桃子的一半多一个,到第第7天要吃时只剩下一个,问小猴共摘下了多少个天要吃时只剩下一个,问小猴共摘下了多少个桃子?桃子?分分析析:这这是是一一个个“递递推推”问问题题,先先从从最最后后一一天天推推出出倒倒数数第第二二天天的的桃桃子子,再再从从倒倒数数第第二二天天的的桃桃子子推推出出倒倒数数第第三三天天的的桃桃子子。设设第第n天天的的桃桃子子为为xn,那那么么它是前一天的桃子数的它是前一天的桃子数的xn-1的一半减的一半减1,即即xn=(

29、xn-1+1)241这这是是一一个个“递递推推”问问题题,先先从从最最后后一一天天推推出出倒倒数数第第二二天天的的桃桃子子,再再从从倒倒数数第第二二天天的的桃桃子子推推出出倒倒数数第第三三天天的的桃桃子子。设设第第n天天的的桃桃子子为为xn,那那么么它它是是前前一一天天的的桃桃子子数数的的xn-1的一半减的一半减1,即即xn=(xn-1+1)2运行结果如图所示运行结果如图所示:423.3.8常见错误常见错误1.1.不循环或死循环的问题不循环或死循环的问题 主要是循环条件、循环初值、循环终值、循环步长的设置有问题。主要是循环条件、循环初值、循环终值、循环步长的设置有问题。2.2.循环结构中缺少配

30、对的结束语句循环结构中缺少配对的结束语句For少少配对的配对的Next;Do少少配对配对的的Loop3.3.循环嵌套时循环嵌套时,内外循环交叉内外循环交叉4.4.累加、连乘时,存放累加、连乘结果的变量赋初值问题累加、连乘时,存放累加、连乘结果的变量赋初值问题(1)一重循环一重循环在一重循环中在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句存放累加、连乘结果的变量初值设置应在循环语句前。前。(2)多重循环)多重循环这要视具体问题分别对待。这要视具体问题分别对待。43 3.4数组数组44 一、一、数组的概念数组的概念引引例例:若若我我们们要要求求一一个个班班100个个学学生生的的平平均均

31、成成绩绩,然然后后统统计计高高于于平平均均分分的的人人数数。按按以以前前简简单单变变量量的的使使用和循环结构相结合,求平均成绩程序段如下:用和循环结构相结合,求平均成绩程序段如下:aver=0Fori=1To100mark=InputBox(输入输入+i+位学生的成绩位学生的成绩)aver=aver+markNextiaver=aver/10045 但但若若要要统统计计高高于于平平均均分分的的人人数数,则则无无法法实实现现。mark是是一一个个简简单单变变量量,存存放放的的是是最最后后一一个学生的成绩。个学生的成绩。已已有有知知识识解解决决方方法法:再再重重复复输输入入成成绩绩,带带来来两个问

32、题:两个问题:(1)输入数据的工作量成倍增加;)输入数据的工作量成倍增加;(2)若若本本次次输输入入的的成成绩绩与与上上次次不不同同,则则统统计的结果不正确。计的结果不正确。解解决决此此问问题题的的根根本本方方法法,引引入入数数组组,始始终保持输入的数据,一次输入,多次使用。终保持输入的数据,一次输入,多次使用。46数组并不是一种数据类型,而是一组相同数组并不是一种数据类型,而是一组相同类型的变量的集合。类型的变量的集合。在程序中用一个数组名代在程序中用一个数组名代表逻辑上相关的一批数据,用下标表示该数组表逻辑上相关的一批数据,用下标表示该数组中的各个元素,与循环语句结合使用,使程序中的各个元

33、素,与循环语句结合使用,使程序书写简洁。书写简洁。数组必须先声明后使用,声明数组名、类数组必须先声明后使用,声明数组名、类型、维数和数组大小。型、维数和数组大小。按声明时按声明时数组的大小数组的大小是否确定可以分为是否确定可以分为两类数组两类数组:静态静态(定长定长)数组、数组、动态动态(可变长可变长)数组。数组。471.1.静态数组及声明静态数组及声明 1 1)一维数组)一维数组 形式形式:Dim数组名数组名(下标)下标)As类型类型其中下标:其中下标:下界下界 To 上界上界 省略下界为省略下界为0,必须为常数。必须为常数。例:例:Dimmark(1to100)AsInteger则则mar

34、k数组内存分配如图:数组内存分配如图:482 2)多维数组)多维数组 形式形式:Dim数组名数组名(下标下标1,下标下标2)As类型类型 维数:维数:几个下标为几维数组,最多几个下标为几维数组,最多60维。维。每一维大小每一维大小:上界下界上界下界+1。数组大小数组大小:每一维大小的乘积。每一维大小的乘积。49例:例:DimlArray(0To3,0To4)AsLong共有共有45个元素个元素等价于等价于:DimLArray(3,4)AsLong50注意:注意:(1)下界缺省为下界缺省为0,为了便于使用,在,为了便于使用,在VB中的窗中的窗体层或标准模块层用体层或标准模块层用OptionBas

35、en语句语句可重新可重新定义数组的下界。定义数组的下界。例如:例如:OptionBase1(2)在在数组声明数组声明时的下标只能是常数,时的下标只能是常数,在其他地方出现的在其他地方出现的数组元素数组元素的下标可以是变量。的下标可以是变量。例:例:Dimx(n)AsSingle(错误错误)51注意:注意:(3)在数组声明中的下标说明了数组的整体,在数组声明中的下标说明了数组的整体,即每维的大小;而在程序其他地方出现的下即每维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相标表示数组中的一个元素。两者写法形式相同,但意义不同。同,但意义不同。例如:例如:Dimx(10)As

36、Integer声明了声明了x数组有数组有11个元素个元素x(10)=100对对x(10)这个数组元素赋值这个数组元素赋值52l矩阵的应用矩阵的应用:若:若Dima%(3,3),其,其内容为:内容为:123主对角线上元素主对角线上元素a00a01a02456a10a11a12789次对角线上元素次对角线上元素a20a21a22l特点:特点:1)主对角线上元素主对角线上元素:行下标行下标=列下标列下标2)次对角线上元素:行下标次对角线上元素:行下标+列下标列下标=定值定值(行数行数-1)例:例:dima%(3,3),求划线部分元素的乘积。求划线部分元素的乘积。S=1.0;fori=0to2forj

37、=0to2if(i+j)mod20thens=s*a(i,j)白线白线红线红线.=0.a00a01a02a10a11a12a20a21a2253l【例例3-12】利用随机数产生一个利用随机数产生一个5X5矩阵矩阵A,(,(其元素的取值其元素的取值范围范围3070),要求产生一个),要求产生一个5X2的矩阵的矩阵B,其中的其中的bi0,bi1分别分别存放存放A矩阵的第矩阵的第i行中的最大与最小元素,并输出矩阵行中的最大与最小元素,并输出矩阵A,B。l分析:分析:l处理二维数组(矩阵)的输入,处理,输出均要用二重循环。处理二维数组(矩阵)的输入,处理,输出均要用二重循环。li:行控制,行控制,j:

38、列控制。列控制。l本例实质是求矩阵每行的最大,最小元素,这是查找问题。本例实质是求矩阵每行的最大,最小元素,这是查找问题。l运行结果如图所示:运行结果如图所示:54【例例3-12】Dima(4,4)AsInteger,i%,j%,max%,min%Dimb(4,1)AsIntegerFori=0To4产生产生5X5矩阵矩阵Forj=0To4a(i,j)=Int(Rnd*30+40)NextjNextiFori=0To4行控制行控制max=a(i,0):min=a(i,0)给给min,max赋初值赋初值Forj=1To4列控制列控制Ifa(i,j)maxThenmax=a(i,j)ElseIfa

39、(i,j)0或或省省略略,则则以以上上一一个个随随机机数数为为种种子子,产产生生下下一一个个随随机机数数;若若x=0,则则产产生生与与最最近近生生成成的的随随机机数数相相同同的的数数;若若xmaxThenmax=score(i)Ifscore(i)m(n+1)Thenm(n+2)=m(n+2)+1EndIfNexti68完整代码:完整代码:Dimm()AsInteger,i%,n%,aver!n=InputBox(n=)ReDimm(1Ton)声明存放声明存放n个数据的数组个数据的数组aver=0Fori=1Tonm(i)=Int(Rnd*101)通过随机数产生通过随机数产生0100的成绩的成

40、绩aver=aver+m(i)数据累加数据累加NextiReDimPreservem(1Ton+2)为数组为数组m增加两个元素增加两个元素,该数组原来数据仍保留该数组原来数据仍保留m(n+1)=aver/n计算平均数计算平均数m(n+2)=069Fori=1Ton对于高于平均数的数据的计数对于高于平均数的数据的计数Ifm(i)m(n+1)Thenm(n+2)=m(n+2)+1EndIfNextiPrintm数组:数组:Fori=1Ton+2Printm(i);IfiMod5=0Then每行输出每行输出5个数据个数据PrintEndIfNextiPrint平均值:平均值:;m(n+1),高于平均

41、值元素个数:高于平均值元素个数:;m(n+2)703.数组的基本操作数组的基本操作1).数组元素的赋初值数组元素的赋初值(1)用循环用循环Fori=1To10a(i)=0Nexti(2)用用Array函数函数对数组各元素赋值对数组各元素赋值DimaAsVarianta=Array(1,2,3,4,5)71 例:例:用用Array函数函数对数组各元素赋值对数组各元素赋值DimaAsVariant,bAsVariant,i%a=Array(1,2,3,4,5)b=Array(abc,def,67)Fori=0ToUBound(b)Picture1.Printb(i);Nexti72注意:注意:利用

42、利用Array对数组各元素赋值,声明的数组对数组各元素赋值,声明的数组是可调数组或连圆括号都可省,并且其类型是可调数组或连圆括号都可省,并且其类型只能是只能是Variant(变体数据类型)。变体数据类型)。数组的下界数组的下界默认为零,默认为零,上界上界由由Array函数括函数括号内的参数个数决定,也可通过函数号内的参数个数决定,也可通过函数Ubound获得。获得。732)数组的输入)数组的输入可通过文本框输入,也可通过可通过文本框输入,也可通过InputBox()函数输入数据。函数输入数据。Dimb(1to10)Asinteger,i%Fori=1to10b(i)=InputBox(“b(i

43、)=“)利用利用InputBox()函数函数NextI 743)数组的赋值数组的赋值 在在VB6.0中,提供了数组直接对数组的赋中,提供了数组直接对数组的赋值。值。例:例:Dima()AsVariant,b()AsVariant,i%a=Array(1,2,3,4,5)ReDimb(UBound(a)b=a等价等价ReDimb(UBound(a)Fori=0ToUBound(a)b(i)=a(i)Nexti754)数组的输出数组的输出Fori=0To4Printa(i);“”;每输出一个元素值,空一格每输出一个元素值,空一格Nexti例:例:输出方阵输出方阵sc中的下三角元素:中的下三角元素:

44、Fori=0To4Forj=0Toisc(i,j)=i*5+jPrintsc(i,j);NextjPrint换行换行Nexti765)求数组中最大元素及所在下标求数组中最大元素及所在下标 DimMaxAsInteger,iMax%,A(1to10)AsInteger,i%Max=A(1):iMax=1Fori=2To10IfA(i)MaxThenMax=A(i)iMax=iEndIfNexti776)将数组中各元素交换将数组中各元素交换 Fori=1To102t=A(i)A(i)=A(10-i+1)A(10-i+1)=tNextI784.控件数组控件数组由一组相同类型的控件组成。它们共用一个控

45、由一组相同类型的控件组成。它们共用一个控件名,具有相同的属性,建立时系统给每个元素赋件名,具有相同的属性,建立时系统给每个元素赋一个唯一的索引号一个唯一的索引号(Index)。控件数组共享同样的事件过程,通过返回的下标控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。值区分控件数组中的各个元素。例:例:PrivateSubcmdName_Click(IndexAsInteger)IfIndex=3then处理第四个命令按钮的操作处理第四个命令按钮的操作EndIfEndSub791)1)在在界面设计时建立控件数组界面设计时建立控件数组l在窗体上画出控件,进行属性设置,这在窗体

46、上画出控件,进行属性设置,这是建立的第一个元素是建立的第一个元素l选中该控件,进行选中该控件,进行“Copy”若干次和若干次和“Paste”若干次操作,建立了所需若干次操作,建立了所需个个数的控件数组元素。数的控件数组元素。l进行事件过程的编程。进行事件过程的编程。80 2 2)运行时添加控件数组)运行时添加控件数组建立的步骤如下:建立的步骤如下:l在窗体上画出某控件,设置该控件的在窗体上画出某控件,设置该控件的Index值为值为0,表示该控件为数组,这是建立的第一个元素。表示该控件为数组,这是建立的第一个元素。l在编程时通过在编程时通过Load语句添加其余的若干个元素,语句添加其余的若干个元

47、素,也可以通过也可以通过Unload方法删除某个添加的元素。方法删除某个添加的元素。例如:例如:LoadOption(2)加载控件数组中的一个元素l每个新添加的控件数组通过每个新添加的控件数组通过Left和和Top属性确定其属性确定其在窗体上的位置,并在窗体上的位置,并将将Visible属性设置为属性设置为True。81【例3-10】设计一个简易的计算器,其中设计一个简易的计算器,其中四则运算符四则运算符是控件数组是控件数组DimsAsInteger(P.58)PrivateSubcmd_Click(IndexAsInteger)SelectCaseIndexCase0索引值为索引值为0时,做

48、加法时,做加法s=Val(txt1.Text)+Val(txt2.Text)Case1索引值为索引值为1时,做减法时,做减法s=Val(txt1.Text)-Val(txt2.Text)Case2索引值为索引值为2时,做乘法时,做乘法s=Val(txt1.Text)*Val(txt2.Text)Case3索引值为索引值为3时,做除法时,做除法IfVal(txt2.Text)=0Then若除数为若除数为0则跳出则跳出ExitSubEndIfs=Val(txt1.Text)Val(txt2.Text)Case4索引值为索引值为4时,退出时,退出EndEndSelect82【例3-14】建立含有四个

49、命令按钮的控件数组建立含有四个命令按钮的控件数组(Command1),当单击某当单击某个命令按钮,分别显示不同的图形或结束操作。个命令按钮,分别显示不同的图形或结束操作。PrivateSubCommand1_Click(IndexAsInteger)SelectCaseIndexCase0画直线画直线Case1画矩形画矩形Case2“画圆画圆”CaseElseEndEndSelectEndSub控件设置:控件设置:控件名控件名 IndexCaptionCommand10 直线直线Command11 矩形矩形Command12 圆圆Command13 结束结束Picture1空白空白 835.常

50、用算法(二)常用算法(二)1)统计统计 【例例3-15】输入一串字符,统计各字母出现的次数,不输入一串字符,统计各字母出现的次数,不区分字母大小写。区分字母大小写。分析:分析:统计统计26个字母出现的个数,个字母出现的个数,先声明先声明一个具有一个具有26个元素的数个元素的数组,每个元素的下标表示对应的字母,元素的值表示对应组,每个元素的下标表示对应的字母,元素的值表示对应字母出现的次数。字母出现的次数。从输入的字符串中逐一取出字符,转换成大写字符(不区从输入的字符串中逐一取出字符,转换成大写字符(不区分大小写分大小写),进行判断。,进行判断。运行界面:运行界面:84【例例3-15】代码如下:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁