VB程序设计课件第10讲循环嵌套.ppt
第10讲 嵌套循环,编程小贴士设置属性确定事件;构思算法草拟代码;多写注释调整思路;全面检查就这一招!,编程思想:“初始化输入处理输出”,2,本讲内容:循环的嵌套,小强:我们做个游戏吧!小白:什么游戏?小强:咱吃一口饭唱一句歌,直到吃饱。小白:为什么呢?,3,循环体中包含循环,称循环嵌套,或称多重循环嵌套一层称为二重循环多重循环中遇Exit For(Do),只跳出当前一层循环,多重循环控制,4,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 iNext j,错误,内外循环不要交叉,正确,5,For i=1 To 10 For i=1 To 10 Next iNext i,For i=1 To 10 Next iFor i=1 To 10 Next i,内外循环变量不应同名,错误,正确,6,00 Dim i%,j%,k%10 For i=1 To 12 Step 3 20 For j=6 To 2 Step-2 30 k=j 40 Label1.Text=i&j 50 Next j 60 Next i 70 Label1.Text=i&j&k,分析第20、30句执行的次数,70句输出结果,7,例:循环嵌套 九九乘法表,P.165,8,素数是一个大于2,且只能被1和本身整除的整数判别某数m是否为素数的方法:对于m 从 i=2,3,m-1判别m能否被i整除,只要有一个能整除,m不是素数,否则m是素数。,1.素 数,常用算法:,9,判断某数m是否为素数,For i=2 to m-1 if m mod i=0 then Exit For 被整除Next i,Exit For 退出当前循环,If i=m then Label1.Text=“m是素数”Else Label1.Text=“m非素数”End if,10,For m=3 To 99 Step 2 Next m,【例】显示3100之间的所有素数,For i=2 To Int(Math.Sqrt(m)If m Mod i=0 Then Exit For Next iIf i Int(Math.Sqrt(m)Then Label1.Text&=m,11,【例】100元买100只鸡,公鸡每只5元,母鸡每只3元,小鸡3只1元,可买公、母、小鸡各多少只?设公鸡X只,母鸡Y只,小鸡Z只,列出方程:X+Y+Z=100 5X+3Y+Z/3=100可穷举X、Y、Z的每一种取值,符合就是其中一种方案,2.穷举法,穷举法:列举所有可能方案,找出符合要求的,12,Z=100-X-Y求得,因此可改为二重循环For X=0 To 100 For Y=0 To 100 Z=100-X-Y If 5*X+3*Y+Z/3=100 _ Then Label1.Text&=X&Y&Z Next YNext X,事实上X和Y的循环可分别为0到20和0到33,13,若干数求最大值,先假设一较小数为初值,若无法估计较小数,则取第一个数为最大值初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。求最小值应设置一较大数为初值。,3.求最大或最小值,14,例 随机产生10个100200之间的数,求最大值。,x=Int(Rnd*101+100)max=x For i=1 To 9 x=Int(Rnd*101+100)If x max Then max=x Next i Label1.Text=最大值=&max,15,1内外循环之间的联系2.素数、穷举、最大最小值,内 容 小 结,