您好,欢迎访问三七文档
循环结构DoLoop之“当”循环形式1:形式2:DoWhile条件表达式Do语句块(循环体)语句块(循环体)LoopLoopWhile条件表达式当条件为真(true)时循环!DoLoop循环示例1PrivatesubForm_click()Dimnum%num=1Dowhilenum=10PrintnumNum=num+1LoopEndsubPrivatesubForm_click()Dimnum%num=1DoPrintnumNum=num+1Loopwhilenum=10EndsubS=1+2+3+……+100PrivateSubForm_Click()DimiAsInteger‘i为累加数DimsumAsInteger‘sum为累加和i=1sum=0DoWhilei=100sum=sum+ii=i+1LoopPrintsumEndSubS=1+2+3+……+100PrivateSubForm_Click()DimiAsIntegerDimsumAsIntegeri=1sum=0Dosum=sum+ii=i+1LoopWhilei=100PrintsumEndSubDoLoop之“直到”循环形式1:形式2:DoUntil条件表达式Do语句块(循环体)语句块(循环体)LoopLoopUntil条件表达式直到条件为真(true)时退出循环!S=1+2+3+……+nPrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimsumAsIntegern=Val(Text1.Text)sum=0i=0DoUntilinsum=sum+ii=i+1LoopText2.Text=sumEndSubS=1+2+3+……+nPrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimsumAslongn=Val(Text1.Text)sum=0i=0Dosum=sum+ii=i+1LoopUntilinText2.Text=sumEndSub5.2For循环语句For循环语句是计数型循环语句,用于控制循环次数已知的循环结构。语句形式如下:For循环变量=初值To终值[Step步长][循环体]Next[循环变量]For循环变量=初值To终值[Step步长][循环体]Next[循环变量](1)“循环变量”:必须为数值型,取值范围在初值和终值之间。(2)“初值”、“终值”:都是数值型,可以是数值表达式。(3)“步长”:是数值型,可以是数值表达式。步长不能为0。如果步长是1,则Step1可以省略不写。(4)“循环体”:在For和Next之间一条或多条语句,他们将被执行指定的次数。(5)Next后面的循环变量与For语句中的循环变量必须相同。使用For循环计算1+3+5+……+99的值PrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimsumAsIntegersum=0Fori=1to99step2sum=sum+iNextiPrintsumEndSubFor循环变量=初值To终值[Step步长][循环体]Next[循环变量]使用For循环计算1+3+5+……+99的值PrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimsumAsIntegersum=0Fori=99to1step-2sum=sum+iNextiPrintsumEndSubFor循环变量=初值To终值[Step步长][循环体]Next[循环变量]For和DoLoop的比较采用For语句比DoLoop更加简明。一般情况下,能够预先确定循环次数时,应优先采用For语句,否则的话应该使用DoLoop语句【例5.13】利用随机数函数模拟抛硬币采用的方法是:每次随机产生一个0或1的整数,相当于一次投币,1代表正面,0代表反面。在窗体上有三个文本框,名称分别是Text1、Text2、Text3,分别用于显示用户输入抛硬币次数、出现正面的次数和出现反面的次数,如图所示。PrivateSubCommand1_Click()DimnAsLongDimn1AsLong,n2AsLongRandomizen=Val(Text1.Text)n1=0n2=0Fori=1Tonr=Int(Rnd*2)Ifr=1Thenn1=n1+1Elsen2=n2+1EndIfNextText2.Text=n1Text3.Text=n2EndSub循环的嵌套——多重循环结构如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。下面是几种常见的二重嵌套形式:(1)ForI=….…..ForJ=….….NextJ…..NextI(2)ForI=….…..DoWhile/Until….….Loop…..NextI(3)DoWhile….…..ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..DoWhile/Until….….Loop…..Loop循环嵌套PrivateSubForm_Click()DimiAsInteger,jAsIntegerFori=1To3Printi=”;iForj=1To3PrintTab;j=;jNextjNextIEndSub图5.6例5.4显示结果循环嵌套Fori=1To3Step1Printi=”;iForj=1To3Step1PrintTab;j=;jNextjNextii=1i=3i=i+1Printi=”;iForj=1To3PrintTab;j=;jNextjNY循环嵌套i=1i=3i=i+1Print“i=“;ij=j+1j=1j=3PrintTab;j=;jYNYNFori=1To3Step1Printi=”;iForj=1To3Step1PrintTab;j=;jNextjNexti【例5.8】将一角钱换成零钱(可以包括含1分、2分、5分中的任意多个面值),共有多少种换法?组成一角的零钱中,最多有10个1分、5个2分、2个5分。判断所有的组合中,总和正好是一角(10分)的情况有多少次即为所求。这类方法称为“穷举法”,也称“枚举法”。PrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsIntegerDimnAsIntegerPrint1分个数,2分个数,5分个数Fori=0To10Forj=0To5Fork=0To2Ifi+j*2+k*5=10Thenn=n+1Printi,j,kEndIfNextNextNextPrint共有&n&种方法EndSub图5.8例5.8显示结果打印图案************************************************************************011122222333333311231234512345671121123211234321AABAABCBAABCDCBA打印图案和九九乘法表*###*****#######*#*#*#**#*#**#**81726354453627189645648403224168494235282114736302418126252015105161284963421987654321自顶向下、逐步求精分而治之Fori=1to4打印第i行换行Nexti************************打印第一行星号;换行打印第二行星号;换行打印第三行星号;换行打印第四行星号;换行分析:……?Fori=1to4打印第i行换行Nexti************************Fori=1to4Forj=1to6同行打印第j颗“*”NextjprintNextiFori=1to4打印第i行换行Nexti************************Fori=1to4Forj=1to6同行打印第j颗“*”NextjprintNexti************************Fori=1to4Forj=1to6同行打印第j颗“*”NextjprintNextiDimi%,j%Fori=1to4forj=1to6print*;nextjprintNexti****************Fori=1to4打印第i行换行NextiFori=1to4Forj=1to2*i-1同行打印第j颗“*”NextjprintNexti****************Fori=1to4打印第i行换行NextiFori=1to4Forj=1to2*i-1同行打印第j颗“*”NextjprintNexti****************Fori=1to4打印第i行换行NextiFori=1to4定位第一颗星;Forj=1to2*i-1同行打印第j颗“*”NextjprintNexti****************Fori=1to4定位第一颗星;Forj=1to2*i-1同行打印第j颗“*”NextjprintNextiFori=1to4printtab(5-i);Forj=1to2*i-1print“*”;NextjprintNextiFori=1to4定位第一颗星?;Forj=1to?同行打印第j颗“*”NextjprintNextiFori=1to4printtab(i);Forj=1to9-2*iprint“*”;NextjprintNexti****************打印图案*###*****#######Fori=1to4printtab(5-i);Forj=1to2*i-1????NextjprintNexti打印图案*#*#*#**#*#**#**Fori=1to4printtab(i);Forj=1to9-2*i????NextjprintNexti打印九九乘法表图5.7例5.5显示结果PrivateSubForm_Click()DimseAsStringPrintTab(35);九九乘法表PrintTab(35);-----------Fori=1To9Forj=1To9se=i&×&j&=&i*jPrintTab((j-1)*9+1);se;NextjPrintNextiEndSubPrivateSubForm_Click()DimseAsStringPrintTab(35);九九乘法表PrintTab(35);-----------Fori=1To9Forj=1To9se=i&×&j&=&i*jPrintse;NextjPrintNextiEndSubPrivateSubForm_Click()DimseAsStringPrintTab(35);九九乘法表PrintTab(35);-----------Fori=1To9Forj=1To9se=i&×&j&=&i*jPrintTab((j-1)*9+1);se;NextjPrintNextiEndSubExitDo语句ExitDo语句可以用来结束Do..Loop循环。一般和选择结构语句一起配合使用。它必须放置在Do..Loop语句的循环体中。当执行到ExitDo时,程序会立即结束循环,跳到loop后面执行下面的语句。当有多个循环嵌套使用时,ExitDo语句只跳出所在的最内层的Do..Loop循环。S=1+2+3+……+100PrivateSubForm_Click()DimiAsIntegerDimsumAsIntegeri=1sum=0Dosum=sum+ii=i+1Ifi100ThenExitDoLoopPrintsumEndSubExitFor语句ExitFor语句可以用来结束For..Next循环。一般也和选择结构语句一起配合使用。它
本文标题:第五章循环结构
链接地址:https://www.777doc.com/doc-3184653 .html