1、VB程序设计循环结构名茂院1 1学循环结构程序设计循环结构程序设计本章要点本章要点:While.WendWhile.Wend循环循环For.NextFor.Next循环循环Do.LoopDo.Loop循环循环特点特点:重复重复相同或相似的操作步骤相同或相似的操作步骤结构结构:循环体循环体要重复执行的语句序列。要重复执行的语句序列。循环控制部分循环控制部分规定循环的重复条件或重复次数,确规定循环的重复条件或重复次数,确定循环范围的语句定循环范围的语句VB程序设计循环结构名茂院2 2学语句块语句块T T循环条件循环条件 WhileWhile 循环条件循环条件 语句块语句块 WendWend执行过程
2、执行过程:(1)(1)判断循环条件是否判断循环条件是否为真为真 (2)(2)若是若是,执行循环体(语句块)执行循环体(语句块)(3)(3)然后返回然后返回WhileWhile语句语句 再次判断循环条件是否再次判断循环条件是否为真为真 (4)(4)重复重复1313步骤。步骤。(5)(5)否则,结束循环否则,结束循环1 While1 While循环结构循环结构(循环次数未知循环次数未知)F FVB程序设计循环结构名茂院3 3学累加分析累加分析:累加器累加器(变量变量)初值初值 Sum=0 Sum=0 循环体循环体(重复执行重复执行)Sum=Sum+i(i=1,2,N)Sum=Sum+i(i=1,2
3、,N)【例【例1 1】求求1+2+3+4+1+2+3+4+N N Text1Text1 Label3 Label3VB程序设计循环结构名茂院4 4学Private Sub Command1_Click()Private Sub Command1_Click()N=Val(Text1.Text):Sum=0 N=Val(Text1.Text):Sum=0 i=1 i=1 While i=100 While i=100 Sum=Sum+i Sum=Sum+i i=i+1 i=i+1WendWend Label3.Caption=Sum Label3.Caption=SumEnd SubEnd Su
4、b循环初值循环初值循环条件循环条件循环终值循环终值循环体循环体循环变量增值循环变量增值VB程序设计循环结构名茂院5 5学v特点特点:先判断表达式,后执行循环体先判断表达式,后执行循环体v说明说明:l循环体有可能一次也不执行循环体有可能一次也不执行l循环体可为任意类型语句循环体可为任意类型语句l退出退出whilewhile循环循环u条件表达式不成立,值为条件表达式不成立,值为.F.F.l无限循环无限循环:While(.T.):While(.T.)循环体循环体 WendWendVB程序设计循环结构名茂院6 6学【例【例2 2】显示显示110110的平方的平方 Private Sub Form_Cl
5、ick()Private Sub Form_Click()k=1 k=1 While k=10While k=10Print str(k)+”Print str(k)+”*”+str(k)+”=“+str(k”+str(k)+”=“+str(k*k)k)k=k+1 k=k+1WendWendEnd SubEnd Sub运行结果:运行结果:1 1*1=11=12 2*2=42=43 3*3=93=94 4*4=164=165 5*5=255=256 6*6=366=367 7*7=497=498 8*8=648=649 9*9=819=811010*10=10010=100VB程序设计循环结构名
6、茂院7 7学2 For2 For循环结构循环结构(循环次数为已知循环次数为已知)1.1.格式格式(For(For循环语句循环语句)For For=To To Step Step 1 Exit ForExit For 2Next Next 循环体循环体VB程序设计循环结构名茂院8 8学2.2.功能功能:执行过程如流程图所示执行过程如流程图所示例例:求求1100011000的和的和,但当但当和超过和超过30003000时停止。时停止。s=0s=0For k=1 to 1000For k=1 to 1000 s=s+k s=s+k if s3000 then if s3000 then Exit F
7、or Exit For End if End ifNextNexta=0NextNext循环变量循环变量=循环变量循环变量+步长步长k=k+1k=k+1语句块语句块FExit ForExit For语句块语句块T循环变量循环变量=终值终值K=10K 0 0,初值,初值 终值(终值(=1=1 时时,可省略)可省略)0 终值终值=0 =0 ,死循环,死循环(4)(4)循环次数循环次数=Max Int(Max Int(终值终值-初值初值)/)/步长步长+1),0 +1),0 (5)(5)Exit ForExit For退出循环,常放在条件语句中退出循环,常放在条件语句中,又称又称 “非正非正常出口常
8、出口”(6)(6)NextNext之后的循环变量应与之后的循环变量应与ForFor语句中的循环变量应一致,语句中的循环变量应一致,也可以省略也可以省略a=0a=0For k=1 to 10For k=1 to 10 a=a+k a=a+kNextNextVB程序设计循环结构名茂院10 10学累加分析累加分析:已知量:累加器已知量:累加器(变量变量)初值初值 Sum=0 NSum=0 N(输入)(输入)初值、终值和增量初值、终值和增量:1 1、NN、1 1 重复执行重复执行(循环体循环体)Sum=Sum=SumSum+i(i=1,2,N)+i(i=1,2,N)Private Sub Comman
9、d1_Click()Private Sub Command1_Click()Dim N%,i As Integer,Sum%Dim N%,i As Integer,Sum%N=Val(Text1.Text)N=Val(Text1.Text)Sum=0 Sum=0 For i=1 To NFor i=1 To N Sum=Sum+i Sum=Sum+i Next iNext i Label3.Caption=Sum Label3.Caption=SumEnd SubEnd SubText1 Label3【例【例1 1】求求1+2+3+4+1+2+3+4+N N 初值与终值换位初值与终值换位 可以
10、吗?可以吗?循环体的执行次数是多少循环体的执行次数是多少?i=1i=1执行多少次?执行多少次?i=Ni=N执行多少次?执行多少次?最后最后 i i 的值是多少的值是多少?VB程序设计循环结构名茂院11 11学 i=1 i=1 While i=100 While i=100 Sum=Sum+iSum=Sum+i i=i+1 i=i+1WendWendFor i=1 To NFor i=1 To N Sum=Sum+iSum=Sum+i Next Next 与前面所学与前面所学While While 循环的不同循环的不同Private Sub Command1_Click()Private Sub
11、 Command1_Click()End SubEnd SubN=Val(Text1.Text)N=Val(Text1.Text)Sum=0Sum=0 Label3.Caption=Sum Label3.Caption=SumVB程序设计循环结构名茂院12 12学 【例【例2 2】求求 NN!(N!=1(N!=12 23 3N)N)累乘分析累乘分析:初始化初始化:F=iF=i 循环体循环体:F=F=F F i i (i=1 (i=1,2 2,3N)3N)程序程序:Private Sub Command1_Click()Private Sub Command1_Click()Dim N%,i A
12、s Integer,F!Dim N%,i As Integer,F!F AS LongF AS Long N=Val(Text1.Text)N=Val(Text1.Text)F=1 F=1 For i=1 To NFor i=1 To N F=F F=F*i i Next i Next i label3.caption=F label3.caption=F End Sub End Sub label3text1VB程序设计循环结构名茂院13 13学【例【例3 3】从键盘输入从键盘输入1010个数,输出其中的最大值与最小值。个数,输出其中的最大值与最小值。Private Sub Command1
13、_Click()Private Sub Command1_Click()N=Val(inputbox(“N=Val(inputbox(“请输入一个数:请输入一个数:”)max=N :min=Nmax=N :min=NFor i=1 to 9For i=1 to 9N=Val(inputbox(“N=Val(inputbox(“请输入一个数:请输入一个数:”)if maxN then max=Nif maxN then min=Nif minN then min=NNextNextPrint max ,minPrint max ,minEnd SubEnd SubVB程序设计循环结构名茂院14
14、14学例例:判断以下程序段的执行结果判断以下程序段的执行结果:For i=5 To 1 Step-1For i=5 To 1 Step-1 Print i Print i*i;i;Next i Next i Print Print Print i Print i例例:判断以下程序段的执行结果判断以下程序段的执行结果 X=6X=6 For K=1 To 10 Step-2 For K=1 To 10 Step-2 X=X+K X=X+K Next K Next K Print K,X Print K,X将将初值初值赋给循环变量赋给循环变量判断判断循环变量是否超过循环变量是否超过终值终值修改修改循
15、环变量,循环变量,继续判断继续判断循循环变量是否大于环变量是否大于终值终值VB程序设计循环结构名茂院15 15学思考思考1:1:1.1.求求1 13 3 5 5 7(7(共共NN项项)。F=FF=F*(2(2*I-1)I-1);循环变量;循环变量I I,循环终值,循环终值NN1n215131112.求求:3.求求:1k2k21k2k2765654343212F=F F=F*4 4*I I*I/(2I/(2*I-1)/(2I-1)/(2*I+1)I+1);循环变量;循环变量I I,循环终值,循环终值KKVB程序设计循环结构名茂院16 16学思考思考2:2:1.1.求求1 12 2+2+22 2+
16、3+32 2+4+42 2+100+1002 22.2.求求1 13 3+3+33 3+5+53 3+n n3 33.3.求求1-3+5-7+(-1)1-3+5-7+(-1)n+1n+1(2n-1)(2n-1)1.Sum=Sum+I1.Sum=Sum+I*I;3.Sum=Sum+(-1)(I+1)I;3.Sum=Sum+(-1)(I+1)*(2(2*I-1);I-1);1n21)1(5131111n4.求求)1n(n14313212115.求求4.Sum=Sum+(-1)(I+1)/(24.Sum=Sum+(-1)(I+1)/(2*I-1);I=2,I-1);I=2,VB程序设计循环结构名茂院
17、17 17学要注意:要注意:v 出了循环,循环控制变量值的问题。出了循环,循环控制变量值的问题。例程序段例程序段:For i=2 To 13 Step 3For i=2 To 13 Step 3 Print i,Print i,Next iNext iPrint“i=“,i Print“i=“,i 循环执行次数循环执行次数输出输出 i i的值分别为的值分别为:2 5 8 112 5 8 11出了循环输出为出了循环输出为:i=14i=14i=2i13执行循环体执行循环体(Print i)i=i+3后续语句后续语句 Print“i=“,iyesnoVB程序设计循环结构名茂院18 18学例例 改变循
18、环控制变量对循环的影响。改变循环控制变量对循环的影响。Private Sub Command1_Click()Private Sub Command1_Click()j=0 j=0 For i=1 To 20 Step 2 For i=1 To 20 Step 2 i=i+3 i=i+3 j=j+1 j=j+1 Print Print 第第;j;j;次循环次循环i=;ii=;i Next i Next i Print Print 退出循环后退出循环后i=;ii=;i End Sub End Sub正常情况:正常情况:i=1,3,5,7,9,11,13,15,17,19i=1,3,5,7,9,1
19、1,13,15,17,19现在:现在:i=4,9,14,19i=4,9,14,19v 在循环体内对循环控制变量可多次引用;但最好不要在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。对其赋值,否则影响原来的循环控制规律。VB程序设计循环结构名茂院19 19学应用举例:应用举例:1 1:用:用ForFor循环编程循环编程5+5+.+5(205+5+.+5(20个个5 5之和之和)2 2:用:用ForFor循环编程计算循环编程计算s=1+2+3+100s=1+2+3+1003 3:用:用ForFor循环编程同行输出循环编程同行输出1010个个“*”4 4:用:用F
20、orFor循环编程输出循环编程输出1010行行“*”VB程序设计循环结构名茂院2020学【例【例3 3】打印斐波那契打印斐波那契(Fibonacci)Fibonacci)数列的前数列的前2020项项 斐波那契数列如下斐波那契数列如下:0 0,1 1,1 1,2 2,3 3,5 5,8 8,1313,分析分析:即从第三项起每一项是其前两项之和。即从第三项起每一项是其前两项之和。VB程序设计循环结构名茂院21 21学斐波那契数列斐波那契数列:0,1,1,2,3,5,8,13,即满足递推关系即满足递推关系 Fn=Fn-1+Fn-2,(n1)F0=0,F1=1算法:算法:已知已知F0=0:F1=1F2
21、=F1+F0F3=F2+F1F4=F3+F2F5=F4+F3已知已知F0=0:F1=1F0=F1+F0F1=F0+F1F0=F1+F0F1=F0+F1VB程序设计循环结构名茂院2222学打印斐波那契打印斐波那契(Fibonacci)Fibonacci)数列的前数列的前2020项项 斐波那契数列如下斐波那契数列如下:0 0,1 1,1 1,2 2,3 3,5 5,8 8,1313,即从第三项起每一项是其前两项之和。即从第三项起每一项是其前两项之和。分析分析:Private Sub Form_Click()Private Sub Form_Click()F0=0:F1=1 F0=0:F1=1 Pr
22、int F0 ,F1 Print F0 ,F1For i=1 To 9For i=1 To 9 F0=F0+F1 F0=F0+F1 F1=F1+F0 F1=F1+F0 Print F0,F1 Print F0,F1NextNextEnd SubEnd SubVB程序设计循环结构名茂院2323学*遍历法遍历法ClearCleara=Val(inputbox(“a=Val(inputbox(“请输入一自然数请输入一自然数:”):”)For i=2 to a-1For i=2 to a-1 iF a mod i=0 iF a mod i=0thenthen Exit For Exit For End
23、if EndifNextNextiF ia-1 theniF ia-1 then Print a,”Print a,”是素数。是素数。”EndifEndif【例例4 4】判断一自然数其是否为素数。判断一自然数其是否为素数。正常出口正常出口ia-1 素数素数非正常出口非正常出口i=a-1 不是素数不是素数VB程序设计循环结构名茂院2424学思考思考:1.1.在窗体上打印在窗体上打印1 1、3 3、5 5、7 7、9 9、NN。2.2.在窗体上显示在窗体上显示1 1到到500500之间所有能被之间所有能被3 3整除的数,每行整除的数,每行1010个数。个数。j=0j=0For i=3 To 500
24、For i=3 To 500 If(i Mod 3=0)Then If(i Mod 3=0)Then Print i;Print i;j=j+1 j=j+1 If j=10 Then j=0:Print If j=10 Then j=0:Print End If End IfNext iNext i3.3.在带水平滚动条文本框中显示在带水平滚动条文本框中显示1 1到指定到指定NN之间所有能被之间所有能被3 3和和7 7同时整除的数。同时整除的数。For i=21 to n step 1 For i=21 to n step 1?(If(i mod 21=0)print i;)(If(i mod
25、 21=0)print i;)及显示前边的内容及显示前边的内容VB程序设计循环结构名茂院2525学问题问题:求求1 12 2+2+22 2+3+32 2+4+42 2+小于某数小于某数NN的最大值,的最大值,NN由用户由用户 指定。指定。特点特点:已知循环条件、未知循环次数,用已知循环条件、未知循环次数,用Do LoopDo Loop循环循环 结构实现结构实现 3 DoLoop 3 DoLoop循环结构循环结构(循环次数未知循环次数未知)VB程序设计循环结构名茂院2626学1.1.格式格式格式一格式一:Do While Do While 1 Exit DoExit Do 2LoopLoop格式
26、二格式二:Do Until Do Until 1 Exit DoExit Do 2LoopLoop格式三格式三:DoDo 1 Exit DoExit Do 2Loop While Loop While 格式四格式四:DoDo 1 Exit DoExit Do 2Loop UntilLoop Until VB程序设计循环结构名茂院2727学2.2.功能功能 使用使用WhileWhile :条件为条件为TrueTrue时,执行循环体时,执行循环体 条件为条件为FalseFalse时,退出循环时,退出循环 使用使用UntilUntil :条件为条件为FalseFalse时,执行循环体时,执行循环体
27、条件为条件为TrueTrue时,退出循环时,退出循环 格式一、二格式一、二:在循环起始处判断条件在循环起始处判断条件,为当型循环为当型循环 格式三、四格式三、四:在循环终止处判断条件在循环终止处判断条件,为直到型循环为直到型循环VB程序设计循环结构名茂院2828学格式一格式一:Do While Do While 1 Exit DoExit Do 2LoopLoop格式二格式二:Do Until Do Until 1 Exit DoExit Do 2LoopLoopVB程序设计循环结构名茂院2929学格式三格式三:DoDo 1 Exit DoExit Do 2Loop While Loop Wh
28、ile 格式四格式四:DoDo 1 Exit DoExit Do 2Loop UntilLoop Until VB程序设计循环结构名茂院3030学3.3.说明说明(1)(1)Exit DoExit Do语句用于退出循环体语句用于退出循环体(即非正常出口即非正常出口)(2)(2)也可以在也可以在DoDo语句和语句和LoopLoop语句之后都没有条件语句之后都没有条件,这时在循环这时在循环体内必须有强行退出循环的语句如体内必须有强行退出循环的语句如:Goto:Goto语句语句(3)(3)多数情况下,当型循环和直到型循环可互相代替多数情况下,当型循环和直到型循环可互相代替【例【例4 4】求】求1 1
29、2 2+2+22 2+3+32 2+4+42 2+小于某数小于某数NN的最大值,的最大值,NN由用户指由用户指定。设计界面定。设计界面:Text1Text2Command1VB程序设计循环结构名茂院31 31学 Private Sub Command1_Click()Private Sub Command1_Click()Dim n&,S&n As Long,S As Long Dim n&,S&n As Long,S As Long N=Val(Text1.Text)N=Val(Text1.Text)i=0 i=0 S=0 S=0 Do While S NDo While S=N(Until
30、 S=N(格式二格式二)While S N(While S=N(Until S=N(格式四格式四)VB程序设计循环结构名茂院3232学Do Until S=N I=I+1 S=S+I*I LoopPrivate Sub Command1_Click()Private Sub Command1_Click()Dim N As Long,S As Long Dim N As Long,S As Long N N=Val(Text1.Text)=Val(Text1.Text)i i=0=0 S=0 S=0 Do While Do While S NS N i=i+1 i=i+1 S=S+i S=S+
31、i*i i Loop Loop Text2.Text=S Text2.Text=S i i*i iEnd SubEnd Sub【例【例4 4】求求1 12 2+2+22 2+3+32 2+小于某数小于某数NN的最大值,的最大值,NN由用户指定由用户指定Text1Text2Command1求求1 12 2+2+22 2+3+32 2+4+42 2+大于或等于某数大于或等于某数NN的最小值的最小值注意:两种格式中注意:两种格式中条件是互斥的条件是互斥的VB程序设计循环结构名茂院3333学【例【例5 5】求求2222n17151311直至最后一项的值直至最后一项的值10 10-4-4为止。为止。分析
32、分析:用用NN表示表示1 1、3 3、55 用用T T表示每一项的值表示每一项的值,则则T=1/NT=1/N2 2 用用SumSum表示累加之和表示累加之和 循环初始条件循环初始条件:N=1N=1,Sum=0 Sum=0 循环终止条件循环终止条件:T=0.0001T=0.0001 VB程序设计循环结构名茂院3434学Private Sub Form_Click()Private Sub Form_Click()N=1:Sum=0 N=1:Sum=0 DoDo T=1/(N T=1/(N*N)N)Sum=Sum+T Sum=Sum+T N=N+2 N=N+2 Loop Until T=0.000
33、1Loop Until T nm n;(2)(2)被除数被除数 mm除以除数除以除数n n 得余数得余数 r r;(3)(3)若若r=0r=0,则则 n n 为最大公约数结束为最大公约数结束 ;否则执行;否则执行(4)(4);(4)(4)m m n n,n n=r r,再重复执行再重复执行(2)(2)。最小公倍数为两个最小公倍数为两个数的积除以它们的数的积除以它们的最大公约数最大公约数设计界面如右图所示设计界面如右图所示:Tt1Tt2Lab3Lab4VB程序设计循环结构名茂院3636学Dim a As Integer,b%,m%,n%,r%Dim a As Integer,b%,m%,n%,r
34、%Private Sub Command1_Click()Private Sub Command1_Click()m=Val(Tt1.Text):N=Val(Tt2.Text)m=Val(Tt1.Text):N=Val(Tt2.Text)IF m n Then t=m:m=n:n=t IF m nmn a=m:b=n a=m:b=n r=m Mod n r=m Mod n 被除数被除数 mm除以除数除以除数n n 得余数得余数 r r Do While r 0Do While r 0 m=n m=n n=r n=r r=m Mod n r=m Mod n Loop Loop Lab3.Capt
35、ion=N Lab3.Caption=N 最大公约数最大公约数NN End SubEnd SubPrivate Sub Command2_Click()Private Sub Command2_Click()Lab4.Caption=a Lab4.Caption=a*b/n b/n 最小公倍数最小公倍数End SubEnd Sub m n rm n r14 6 214 6 2 6 6 2 2 0 0VB程序设计循环结构名茂院3737学?【例例7 7】给一个整数给一个整数n(n=3),n(n=3),判断它是否是素数判断它是否是素数 分析分析:将数将数N N 被被2 2 SQR(N)SQR(N)间
36、全部整数除,如果间全部整数除,如果都除不尽,则都除不尽,则NN是素数是素数;否则否则NN不是素数。不是素数。设设标志变量标志变量FlagFlag,只要有一个被整除,就置为只要有一个被整除,就置为1 1。VB程序设计循环结构名茂院3838学Private Sub Command1_Click()Private Sub Command1_Click()N=Val(Text1.Text):K=Int(Sqr(N):I=2 N=Val(Text1.Text):K=Int(Sqr(N):I=2 Flag=0 Flag=0 设标志变量设标志变量FlagFlag 只要有一个被整除就置为只要有一个被整除就置为
37、1 1 Do While I=K And Flag=0 Do While I=K And Flag=0 If N Mod I=0 Then Flag=1 Else I=I+1 If N Mod I=0 Then Flag=1 Else I=I+1 Loop Loop If Flag=0 Then If Flag=0 Then Label1.Caption=Label1.Caption=是素数是素数 ElseElse Label1.Caption=Label1.Caption=不是素数不是素数 End IfEnd IfEnd SubEnd SubVB程序设计循环结构名茂院3939学 含义:一个循
38、环体内又包含了一个完整的循环结构。含义:一个循环体内又包含了一个完整的循环结构。例例打印九九乘法表打印九九乘法表(两重循环两重循环).).4 4 循环的嵌套循环的嵌套VB程序设计循环结构名茂院4040学 例例打印九九乘法表打印九九乘法表(两重循环两重循环).).For i=1 To 9 For i=1 To 9 行行 For j=1 To 9 For j=1 To 9 列列 se=i&se=i&j&=&i&j&=&i*j j Print se;Print se;Next j Next j Print Print Next i Next i思考:打印下三角或上三角程序如何改动?思考:打印下三角或
39、上三角程序如何改动?For j =1 To iFor j =1 To iVB程序设计循环结构名茂院41 41学对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;不能从循环体外转向循环体内,反之则可以。不能从循环体外转向循环体内,反之则可以。正确正确 错误错误 For ii=1 To 10For ii=1 To 10 For jj=1 To 20 For jj=1 To 20 Next ii Next ii Next jj Next jj For
40、ii=1 To 10For ii=1 To 10 For ii=1 To 20 For ii=1 To 20 Next ii Next ii Next ii Next ii For ii=1 To 10For ii=1 To 10 For jj=1 To 20 For jj=1 To 20 Next jj Next jj Next ii Next ii For ii=1 To 10 For ii=1 To 10 Next ii Next ii For ii=1 To 10 For ii=1 To 10 Next ii Next ii VB程序设计循环结构名茂院4242学FORFOR循环有一个公
41、共端点循环有一个公共端点,可使用一个可使用一个NEXTNEXT语句,循环变语句,循环变量按从内到外排列量按从内到外排列For I=1 To 3For I=1 To 3 For J=5 To 7 For J=5 To 7 Print I,J Print I,JNext J,INext J,IFor I=1 To 3For I=1 To 3 For J=5 To 7 For J=5 To 7 Print I,J Print I,J Next J Next JNext INext I例例:n不能从循环体外转向循环体内,反之则可以。任何一层循环不能从循环体外转向循环体内,反之则可以。任何一层循环都可以
42、用都可以用Exit DoExit Do或或Exit For Exit For 退出本层的循环。退出本层的循环。VB程序设计循环结构名茂院4343学【例【例8 8】求求1+(1+2)+(1+2+3)+(1+2+3+1+(1+2)+(1+2+3)+(1+2+3+n)n),n n由用户输入。由用户输入。分析分析:Private Sub Form_Click()Private Sub Form_Click()N=Val(Text1.Text)N=Val(Text1.Text)Sum=0Sum=0 For I=1 To N For I=1 To N Sum1=0Sum1=0 For J=1 To I F
43、or J=1 To I Sum1=Sum1+J Sum1=Sum1+J 计算计算(1+2+3+(1+2+3+i i)Next J Next J Sum=Sum+Sum1 Sum=Sum+Sum1 计算总和计算总和 Next I Next I Text2.Text=Sum Text2.Text=SumEnd SubEnd Sub思考思考:1!+2!+N!1!+2!+N!VB程序设计循环结构名茂院4444学【例【例9 9】“百鸡问题百鸡问题”:公鸡:公鸡5 5个钱一只,母鸡三个钱一只、小个钱一只,母鸡三个钱一只、小鸡一个钱三只,要用鸡一个钱三只,要用100100个钱买个钱买100100只鸡,问公鸡
44、、母鸡、只鸡,问公鸡、母鸡、和小鸡各买几只?和小鸡各买几只?分析分析:设公鸡、母鸡、小鸡各为设公鸡、母鸡、小鸡各为x x、y y、z z只,列方程:只,列方程:x+y+z=100 x+y+z=100 5x+3y+z/3=100 5x+3y+z/3=100三个未知数,两个方程,有若干个解。解决此类问题采用三个未知数,两个方程,有若干个解。解决此类问题采用“穷穷举法举法”也称为也称为“枚举法枚举法”或或“试凑法试凑法”,把每一种情况都考,把每一种情况都考虑到。虑到。方法一方法一:最简单三个未知数利用三重循环来实现。最简单三个未知数利用三重循环来实现。方法二方法二:从三个未知数的关系,利用两重循环来
45、实现。从三个未知数的关系,利用两重循环来实现。VB程序设计循环结构名茂院4545学方法一方法一:Private Sub Form_Click()Private Sub Form_Click()Dim x%Dim x%,y%y%,z%z%For x=0 To 20 For x=0 To 20 公鸡公鸡 For y=0 To 33 For y=0 To 33 母鸡母鸡 For z=0 To 100 For z=0 To 100 Step 3Step 3 小鸡小鸡 If x If x*5+y5+y*3+z3=100 And x+y+z=100 Then3+z3=100 And x+y+z=100 T
46、hen Print x,y,z Print x,y,z End If End If Next z,y,x Next z,y,xEnd SubEnd SubVB程序设计循环结构名茂院4646学方法二方法二:x+y +z=100:x+y +z=100 鸡数满足的方程鸡数满足的方程Private Sub Form_Click()Private Sub Form_Click()Dim x%,y%,z%Dim x%,y%,z%For x=0 To 19 For x=0 To 19 公鸡公鸡 For y=0 To 33 For y=0 To 33 母鸡母鸡 z=100-x y z=100-x y 小鸡的个
47、数小鸡的个数 If x If x*5+y5+y*3+z3=100 Then 3+z3=100 Then 钱数的方程钱数的方程 Print x,y,z Print x,y,z End If End If Next y,x Next y,xEnd SubEnd SubVB程序设计循环结构名茂院4747学NoImageNoImageNoImageNoImageNoImageNoImage课堂练习课堂练习:求水仙花数求水仙花数 水仙花数是指一个水仙花数是指一个3 3位数,其各个数字的立方和等于数字位数,其各个数字的立方和等于数字本身。本身。VB程序设计循环结构名茂院4848学练习:输出下面形状练习:输
48、出下面形状*图图1 1*图图2 2*图图3 3*图图4 4VB程序设计循环结构名茂院4949学5 5 其他辅助控制语句其他辅助控制语句 1.1.Go To Go To 语句语句 形式形式:Go To Go To 标号标号|行号行号 作用:无条件地转移到标号或行号指定的那行语句。作用:无条件地转移到标号或行号指定的那行语句。标号是一个字符序列标号是一个字符序列,行号是一个数字序列。例子见后行号是一个数字序列。例子见后 2.2.ExitExit语句语句 多种形式:多种形式:Exit ForExit For、Exit DoExit Do、Exit SubExit Sub、Exit FunctionE
49、xit Function等等 作用:退出某种控制结构的执行。作用:退出某种控制结构的执行。3.3.EndEnd语句语句 多种形式:多种形式:EndEnd、End If End If、End Select End Select、End With End With、End Type End Type、End Sub End Sub、End Function End Function 作用:作用:EndEnd结束一个程序的运行;其余表示某个结构的结束与对应的结结束一个程序的运行;其余表示某个结构的结束与对应的结构语句配对出现。构语句配对出现。VB程序设计循环结构名茂院5050学4.IF4.IF语句语
50、句 +GoTo+GoTo语句构成循环语句构成循环 (循环结循环结 构补充构补充)【例】例】计算计算11001100的奇数和。的奇数和。Dim i%,s%Dim i%,s%Dim i%,s%Dim i%,s%s=0 s=0 s=0 s=0:i=1 i=1 For i=1 To 100 step 2 For i=1 To 100 step 2 re:If i=100 Then re:If i=100 Then s=s+i s=s+i i=s+i i=s+i Next i Next i i=i+2 i=i+2 GoTo re GoTo re End If End If 循环变量 0.00001Do