欢迎来到天天文库
浏览记录
ID:41113858
大小:770.01 KB
页数:60页
时间:2019-08-16
《《vb循环结构》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
循环结构 DoLoop之“当”循环形式1:形式2:DoWhile<条件表达式>Do语句块(循环体)语句块(循环体)LoopLoopWhile<条件表达式>当条件为真(true)时循环! DoLoop循环示例1PrivatesubForm_click()Dimnum%num=1Dowhilenum<=10PrintnumNum=num+1LoopEndsubPrivatesubForm_click()Dimnum%num=1DoPrintnumNum=num+1Loopwhilenum<=10Endsub S=1+2+3+……+100PrivateSubForm_Click()DimiAsInteger‘i为累加数DimsumAsInteger‘sum为累加和i=1sum=0DoWhilei<=100sum=sum+ii=i+1LoopPrintsumEndSub S=1+2+3+……+100PrivateSubForm_Click()DimiAsIntegerDimsumAsIntegeri=1sum=0Dosum=sum+ii=i+1LoopWhilei<=100PrintsumEndSub DoLoop之“直到”循环形式1:形式2:DoUntil<条件表达式>Do语句块(循环体)语句块(循环体)LoopLoopUntil<条件表达式>直到条件为真(true)时退出循环! S=1+2+3+……+nPrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimsumAsIntegern=Val(Text1.Text)sum=0i=0DoUntili>nsum=sum+ii=i+1LoopText2.Text=sumEndSub S=1+2+3+……+nPrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimsumAslongn=Val(Text1.Text)sum=0i=0Dosum=sum+ii=i+1LoopUntili>nText2.Text=sumEndSub 5.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=1To3Print"i=”;iForj=1To3PrintTab;"j=";jNextjNextIEndSub图5.6例5.4显示结果 循环嵌套Fori=1To3Step1Print"i=”;iForj=1To3Step1PrintTab;"j=";jNextjNextii=1i<=3i=i+1Print"i=”;iForj=1To3PrintTab;"j=";jNextjNY 循环嵌套i=1i<=3i=i+1Print“i=“;ij=j+1j=1j<=3PrintTab;"j=";jYNYNFori=1To3Step1Print"i=”;iForj=1To3Step1PrintTab;"j=";jNextjNexti 循环嵌套Fori=1To3Step1Print"i=”;iForj=1To3Step1PrintTab;"j=";jNextjNextii=1i<=3i=i+1Print"i=”;iForj=1To3PrintTab;"j=";jNextjNY 循环嵌套i=1i<=3i=i+1Print“i=“;ij=j+1j=1j<=3PrintTab;"j=";jYNYNFori=1To3Step1Print"i=”;iForj=1To3Step1PrintTab;"j=";jNextjNexti 循环嵌套Fori=1To3Print"i=”;iForj=1To3PrintTab;"j=";jNextjNextii=1i<=3i=i+1j=j+1j=1j<=3PrintTab;"j=";jYNYN 【例5.8】将一角钱换成零钱(可以包括含1分、2分、5分中的任意多个面值),共有多少种换法?组成一角的零钱中,最多有10个1分、5个2分、2个5分。判断所有的组合中,总和正好是一角(10分)的情况有多少次即为所求。这类方法称为“穷举法”,也称“枚举法”。PrivateSubCommand1_Click()DimiAsInteger,jAsInteger,kAsIntegerDimnAsIntegerPrint"1分个数","2分个数","5分个数"Fori=0To10Forj=0To5Fork=0To2Ifi+j*2+k*5=10Thenn=n+1Printi,j,kEndIfNextNextNextPrint"共有"&n&"种方法"EndSub图5.8例5.8显示结果 打印图案************************************************************************011122222333333311231234512345671121123211234321AABAABCBAABCDCBA 打印图案和九九乘法表*###*****#######*#*#*#**#*#**#**自顶向下、逐步求精分而治之 Fori=1to4打印第i行换行Nexti************************打印第一行星号;换行打印第二行星号;换行打印第三行星号;换行打印第四行星号;换行分析:……? Fori=1to4打印第i行换行Nexti************************Fori=1to4Forj=1to6同行打印第j颗“*”NextjprintNexti Fori=1to4打印第i行换行Nexti************************Fori=1to4Forj=1to6同行打印第j颗“*”NextjprintNexti Fori=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“*”;NextjprintNexti Fori=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;NextjPrintNextiEndSub PrivateSubForm_Click()DimseAsStringPrintTab(35);"九九乘法表"PrintTab(35);"-----------"Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPrintse;NextjPrintNextiEndSub PrivateSubForm_Click()DimseAsStringPrintTab(35);"九九乘法表"PrintTab(35);"-----------"Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPrintTab((j-1)*9+1);se;NextjPrintNextiEndSub ExitDo语句ExitDo语句可以用来结束Do..Loop循环。一般和选择结构语句一起配合使用。它必须放置在Do..Loop语句的循环体中。当执行到ExitDo时,程序会立即结束循环,跳到loop后面执行下面的语句。当有多个循环嵌套使用时,ExitDo语句只跳出所在的最内层的Do..Loop循环。 S=1+2+3+……+100PrivateSubForm_Click()DimiAsIntegerDimsumAsIntegeri=1sum=0Dosum=sum+ii=i+1Ifi>100ThenExitDoLoopPrintsumEndSub ExitFor语句ExitFor语句可以用来结束For..Next循环。一般也和选择结构语句一起配合使用。它必须放置在For..Next语句的循环体中。当执行到ExitFor时,程序会立即结束循环,跳到Next后执行下面的语句。当有多个循环嵌套使用时,ExitFor语句只跳出所在的最内层的For..Next循环。 【例5.7】给定一个数n,判断它是否是素数分析:素数就是一个大于2且只能被1和本身整除的整数。判断一个数是否为素数比较简单的方法是:用n逐个除以2~n-1之间的每个整数只要有一个可以整除,则说明n不是素数;如果全部不能整除,则说明n是素数。 PrivateSubForm_Click()DimiAsIntegerDimnAsIntegern=InputBox("请输入一个整数")Fori=2Ton-1IfnModi=0ThenExitForEndIfNextIIfi0.00001e=e+ti=i+1n=n*i'连乘,求阶乘t=1/n'累加项LoopPrint"计算了";i;"项的和是";eEndSub Fibonacci数列1,1,2,3,5,8,13,21,34,55…兔子繁殖问题 求斐波那契数列前十五项PrivateSubForm_Click()Dimf1%,f2%,f3%,i%f1=1f2=1printf1;f2Fori=3To15f3=f1+f2printf3f1=f2f2=f3NextEndSub 求最大公约数【例5.12】用辗转相除法求两自然数x、y的最大公约数。算法描述如下:x除以y得余数r;若r=0,则y为求得的最大公约数,算法结束,否则执行步骤(3);令x等于y,y等于r,重复执行步骤(1)。 思考:请用DoWhile…Loop和Do…LoopUntil改写辗转相除法求最大公约数PrivateSubForm_Click()x=InputBox("输入x")y=InputBox("输入y")Dor=xModyIfr=0ThenExitDox=yy=rLoopPrint"最大公约数为:";yEndSub 作业2求100以内的所有素数。求斐波那契数列第多少项大于500,并打印出该项的值。DoWhile…Loop和Do…LoopUntil改写辗转相除法求最大公约数(选做) 作业1鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?-《算经》张丘建求100以内的所有素数。打印讲到的各种星号组合。
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处