《第91011讲循环结构一.ppt》由会员分享,可在线阅读,更多相关《第91011讲循环结构一.ppt(32页珍藏版)》请在第壹文秘上搜索。
1、第 8 讲环境熟悉环境熟悉(1)基本控件基本控件(3)编程基础编程基础(2)三大基本结构三大基本结构(5,6)综合应用综合应用(4,8,10)过程过程(9)数组数组(7)l顺序结构顺序结构:赋值语句=l选择结构选择结构:if select casel循环结构循环结构:for while功能:功能:重复执行一组语句。重复执行一组语句。两种语句格式:两种语句格式:For-Next语句语句(一般用于循环次数已知一般用于循环次数已知)Do-Loop语句语句(用于控制循环次数未知用于控制循环次数未知)当型循环、直到型循环当型循环、直到型循环1、形式、形式 For 循环变量初值循环变量初值 to 终值终值
2、 Step 步长步长 语句块语句块Exit For 语句块语句块 Next 循环变量循环变量循 环 变 量 在 终 值 内图1-3-13 For 循环语句语句块Exit For语句块循环变量加步长TF 循环变量得初值循环次数循环次数=)1(步长初值终值Int一一.For循环语句循环语句 0 初值初值终值终值 终值终值=0 死循环死循环 步长步长猴子吃桃子。猴子吃桃子。小猴在某天摘桃若干个,当天吃掉一半多一个;第二小猴在某天摘桃若干个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第桃子的一半多一个,到第7
3、 7天要吃时只剩下一个,问天要吃时只剩下一个,问小猴共摘下了多少个桃子?小猴共摘下了多少个桃子?分析:分析:这是一个这是一个“递推递推”问题,先从最后一天推出倒问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子三天的桃子。设第。设第n n天的桃子为天的桃子为x xn n,那么它是前一,那么它是前一天的桃子数的天的桃子数的x xn n-1-1 的一半减的一半减1 1,即,即x xn-1n-1 =(x xn n+1+1)2 2S0=0S1=S0+1S2=S1+2S3=S2+3S4=S3+4S100=S99+100Si=Si
4、-1+ii=1.100S=0i=1S=S+ii=Ni=i+1S即为所求即为所求TF Dim Sum%,i%Sum=0 For i=1 to 100 Sum=Sum+i 累加累加 Next i Textbox1.text=i=&i&Sum=&Sum循环次数循环次数=(100-1)1+1FS=0i=1S=S+ii=Ni=i+1S即为所求即为所求T Dim i%,N%N=InputBox(请输入请输入N)For i=2 To N-1 If N Mod i=0 Then Exit For Next i If i N Then Textbox1.text=N&不是一个素数不是一个素数 Else Text
5、box1.text=N&是一个素数是一个素数 End If判别某数判别某数n是否为素是否为素数最简单的方法是数最简单的方法是:对于对于n 从从i=2,3,n-1判别判别n能否被能否被i整除,只要有一个能整除,只要有一个能整除,整除,n不是素数,不是素数,否则否则n是素数。是素数。求求N!流程图流程图积积S赋初值赋初值当前项当前项i=第第1项项累乘当前项累乘当前项i=N求下一项求下一项iS即为所求即为所求TFFS=1i=1S=S*ii=Ni=i+1S即为所求即为所求T Dim S as long,N%,i%S=1 N=InputBox(请输入请输入N)For i=1 to N S=S*i 连乘连
6、乘 Next i Textbox1.text=N&的阶乘为的阶乘为&S二、二、DoLoop循环语句循环语句当型形式当型形式1:Do While 语句块语句块 Exit Do 语句块语句块 Loop循环体循环体条件条件TFDim i%,S%,N%N=InputBox(请输入请输入N)S=0i=1Do While i=N S=S+i i=i+1Loop用用Do WhileLoop循环语句循环语句求求1至至N和和S=0i=1S=S+ii=Ni=i+1S即为所求即为所求TFDim i%,S#,N%N=InputBox(请输入请输入N)S=1i=1Do While i=N S=S*i i=i+1Loop
7、用用Do whileLoop循环语句循环语句求求N!S=1i=1S=S*ii=Ni=i+1S即为所求即为所求TF我国有我国有1313亿人口,按人口年增长亿人口,按人口年增长0.8%0.8%计算,多少年后我计算,多少年后我国人口超过国人口超过2626亿。亿。Private Sub Button1_Click()x=13 n=0 Do While x 26 x=x*1.008 n=n+1 Loop Textbox1.text=经过经过&n&年中国人口为年中国人口为&x&亿亿End SubDim m%,n%,r%,t%n=Val(T1.text)m=Val(T2.text)If m n Then t
8、=m:m=n:n=t r=m mod nDo While(r 0)m=n n=r r=m mod nLoopT3.text=n 用用辗转相除法辗转相除法求两自然数求两自然数m,n的最大公约数和最小公的最大公约数和最小公倍数。倍数。分析:求最大公约数的算法思想:分析:求最大公约数的算法思想:(1)对于已知两数对于已知两数m,n,使得使得mn;(2)m除以除以n得余数得余数r;(3)若若r=0,则则n为最大公约数结束;否则执行为最大公约数结束;否则执行(4);(4)mn,nr,再重复执行再重复执行(2)。例例:求求 m=42,n=24 的最大公约数的最大公约数.辗转相除法求最大公约数辗转相除法求最
9、大公约数流流程程图图使使mnr=m Mod nm=n:n=rr0r=m Mod nN即为所求即为所求TF当型形式当型形式1:Do While 语句块语句块 Exit Do 语句块语句块 Loop当型形式当型形式2:Do 语句块语句块 Exit Do 语句块语句块Loop While 比较比较 DoLoop循环的四种形式循环的四种形式直到形式直到形式1:Do Until 语句块语句块 Exit Do 语句块语句块 Loop直到形式直到形式2:Do 语句块语句块 Exit Do 语句块语句块Loop Until 当型当型1与当型与当型2流程图比较流程图比较循环体循环体条件条件TF当型形式当型形式2
10、:Do 语句块语句块 Exit Do 语句块语句块Loop While 当型形式当型形式1:Do While 语句块语句块 Exit Do 语句块语句块 Loop循环体循环体条件条件TFWhileWhile循环与循环与DoDo循环的区别循环的区别T=1X=6Do while X=5 T=T*X X=X+1 Loop T1.text=T=&TT=1X=6Do T=T*X X=X+1Loop while X=5 T1.text=T=&T 因此,当型形式因此,当型形式2 2的循环体至少执行一次而的循环体至少执行一次而当型形式当型形式1 1的循环体可能一次都不会执行的循环体可能一次都不会执行当型与直到
11、流程图比较当型与直到流程图比较直到形式直到形式1:Do Until 语句块语句块 Exit Do 语句块语句块 Loop当型形式当型形式1:Do While 语句块语句块 Exit Do 语句块语句块 Loop循环体循环体条件条件TF循环体循环体条件条件FTDim i%,T&,N%N=InputBox(请输入请输入N)T=1i=1Do Whilel i N T=T*i i=i+1Loop While语句中的条件是入循环的条件,语句中的条件是入循环的条件,而而Until语句中的条件是出循环的条件语句中的条件是出循环的条件三、循环的嵌套三、循环的嵌套一个循环体内又包含了一个完整的循环结构称为一个循
12、环体内又包含了一个完整的循环结构称为循环的嵌套循环的嵌套.打印九九乘法表打印九九乘法表.txtShow.Text=For i=1 To 9 For j=1 To 9 If Len(CStr(j*i)=1 Then ji_num=+CStr(j*i)Else ji_num=CStr(j*i)End If txtShow.Text+=Str(j)+*+Str(i)+=+ji_num+Next j txtShow.Text+=vbNewLine Next i(1)内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;错误示例:错误示例:For i=1 To 10 For i=1 To 20
13、 Next i Next i对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:(2)外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;For i=1 To 10 For j=1 To 20 Next j Next i For i=1 To 10 For j=1 To 20 Next i Next j For i=1 To 10 Next i For i=1 To 10 Next i “穷举法穷举法”也称为也称为“枚举法枚举法”或或“试凑法试凑法”,即将可能出现的各种情况一一测试,判断是否满即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。
14、足条件,一般采用循环来实现。百元买百鸡问题。假定小鸡每只百元买百鸡问题。假定小鸡每只5角角,公鸡每只公鸡每只2元元,母鸡每母鸡每只只3元。现在有元。现在有100元钱要求买元钱要求买100只鸡只鸡,编程列出所有可能编程列出所有可能的购鸡方案。的购鸡方案。分析:分析:设母鸡、公鸡、小鸡各为设母鸡、公鸡、小鸡各为x、y、z只,只,根据题目要求,列出方程为:根据题目要求,列出方程为:x+y+z=100 3x+2y+0.5z=100三个未知数,两个方程,此题有若干个解。三个未知数,两个方程,此题有若干个解。解决此类问题采用解决此类问题采用“试凑法试凑法”,把每一种情况都考虑到。把每一种情况都考虑到。方法
15、一:求三个未知数,利用三重循环来实现。方法一:求三个未知数,利用三重循环来实现。方法二:从三个未知数的关系,利用两重循环来实现方法二:从三个未知数的关系,利用两重循环来实现。Dim x%,y%,z%For x=0 To 33 For y=0 To 50 For z=0 To 100 If 3*x+2*y+0.5*z=100 And x+y+z=100 Then textbox1.text&=x&y&z&vbnewline End If Next z Next y Next x方法一:(求三个未知数利用三重循环来实现。)方法一:(求三个未知数利用三重循环来实现。)Dim x%,y%,For x=
16、0 To 33 For y=0 To 50 If 3*x+2*y+0.5*(100-x-y)=100 Then textbox1.text&=x&y&100-x-y&vbnewline End If Next yNext x方法二:方法二:(从三个未知数的关系,利用两重循环来实现(从三个未知数的关系,利用两重循环来实现)常见错误常见错误1 1 不循环或死循环的问题不循环或死循环的问题 主要是循环条件、循环初值、循环终值、循环步长的主要是循环条件、循环初值、循环终值、循环步长的设置有问题。设置有问题。2 2 循环结构中缺少配对的结束语句循环结构中缺少配对的结束语句 ForFor缺少配对的缺少配对的Next Next 3 3 循环嵌套时循环嵌套时,内外循环交叉内外循环交叉4 4 累加、连乘时,存放累加、连乘结果的变量赋初值问题累加、连乘时,存放累加、连乘结果的变量赋初值问题(1)(1)一重循环一重循环:存放累加、连乘结果的变量初值设置应在循存放累加、连乘结果的变量初值设置应在循环语句前。环语句前。(2 2)多重循环)多重循环:变量初值设置要视具体问题分别对待。变量初值设置要视具体问题分别对