ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:115.74KB ,
资源ID:10839078      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10839078.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第六节循环结构.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第六节循环结构.docx

1、第六节 循环结构第六节 循环结构在用计算机处理问题时,除了分支问题外,还有不少是需要重复执行某一组操作的问题。这就要采用循环结构,VB中提供了两种语句实现循环结构:For-Next语句和Do-Loop语句。【例6-6-1】求s=1+2+3+100利用赋值语句可写出如下形式的代码:sum=0sum= sum+1sum= sum+2sum=sum+3sum=sum+100很显然,使用这种形式也能得到结果,但程序很冗长。观察上面的代码可以发现,这段代码实际上重复了同一个操作:sum=sum+i,只不过是每次相加的自然数不同而已。使用VB提供的循环语句可以很容易实现这种重复操作功能。具体算法如下:设s

2、um=0;设i=1;若ib)的最大公约数的算法见例6-1-3,流程图见图6-3,程序代码如下:求最大公约数Private Sub cmdCalcu_Click() Dim a As Integer Dim b As Integer Dim r As Integer a = Val(txta.Text) b = Val(txtb.Text) r = a Mod b Do While r 0 a = b b = r r = a Mod b Loop txtDivisor.Text = Str(b)End SubPrivate Sub cmdEnd_Click() EndEnd Sub格式二:Do

3、循环体 Loop Until 条件这种循环的执行过程如图6-28所示。进入循环体后,先执行一次循环体A,然后再检查条件P是否成立。如果不成立,就重复执行循环体A,直到条件P成立退出循环,这种循环结构称为直到型循环。【例6-6-4】 如果我国人口以每年平均1.5%的速度增长,问多少年后我国人口达到或超过15亿?设现在人口为12.3亿。解决这个问题的思路是:设现在人口为p0=12.3亿,人口增长率r=1.5%=0.015,则一年后人口为p1=p0+p0r=p0(1+r),看它是否达到或超过15亿;如果未达到,再算二年后的人口p2=p1+p1r=p1(1+r);如果未达到,再计算三年后的人口,直到n

4、年后的人口数达到或超过15亿。流程图见图6-29,程序代码如下:直到型循环Private Sub Form_Click() Dim p As Single Dim r As Single Dim n As Integer p = 1230000000# r = 0.015 n = 0 Do p= p * (1 + r) n = n + 1 Loop Until p = 1500000000# Print n; 年后, 人口=; pEnd Sub运行结果如下; 14年后 人口=1.51506E+09三、循环的嵌套在一个循环中又完整地包含另一个循环,称为循环的嵌套。前面介绍的几种类型的循环可以互相

5、嵌套,例如可以在一个For-Next循环中包含另一个For-Next循环,也可以在一个Do-Loop循环中包含一个For-Next循环。【例6-6-5】设计一个程序,打印如下所示的图案。 * * * * * *为解决这个问题,可以采用如下的算法:使用双重For-Next循环,外循环确定行数和各行起始打印位置,内循环用来确定各行打印的个数。设外循环的循环变量为i,内循环的循环变量为j 。由于图案上下对称,上下两半对应行的起始位置和字符个数完全一致,所以i的取值也应对称:i=-3 To 3。设i=0行的起始打印位置为5,则第i行的起始打印位置为Tab(Abs(i)+5),第i行的字符的个数为2*(

6、4-Abs(i)-1。流程图如图6-30所示,程序代码如下:打印菱形图案Private Sub Form_Click() Dim i As IntegerDim j As Integer For i = -3 To 3 Print Tab(Abs(i) + 5); 确定每行的起始位置 For j = 1 To 2 * (4 - Abs(i) - 1 Print *; Next j Print 换行 Next iEnd Sub【例6-6-6】求3到100之间的全部质数。质数是除了1和它本身之外,不能被其它任何整数整除的大于1的自然数。要验证一个自然数n是否为质数,方法很多。我们采用的算法是:一个

7、数n是否是质数,只需将n被2 间全部整数除,如果都除不尽,n就是质数。图6-31先计算出k= ,然后将n被i=2k除。Flag是个“标志变量”,初始时Flag=0,表示n未被任何一个整数整除,如果在某一次n被一个整数i整除,则Flag改变为1,表明该数不是质数。如果n不被任何一个i整除,则Flag始终保持为0。因此,在结束循环后根据Flag的值为0或1,来判断一个数是否为质数。求3到10之间的全部质数Private Sub Form_Click() Dim n As Integer, i As Integer Dim flag As Integer Dim k As Integer For n

8、 = 3 To 100 Step 2 k = Int(Sqr(n) i = 2 flag = 0 Do While i = k If n Mod i = 0 Then flag = 1 n能被某一个数整除 End If i = i + 1 Loop If flag = 0 Then Print n Next nEnd Sub运行结果为: 357 89 97 说明:由于偶数决不会是质数,不必对偶数进行测试,因此外循环的增量为2; 内循环中n Mod i=0中的Mod为取余运算,若n能被i整除,则余数为0;实践与探索请考察程序的内循环部分,如果n是一个质数,如n=11,则内循环结束时标志变量fla

9、g的值仍为0;如果n不是一个质数,如n=63,则进行第二次循环时n能被3整除,此时flag的值为1,已经可以判断出n不是质数,但程序中的内循环仍然要执行6次,程序的效率不高。请问该如何修改程序,当flag的值为1时直接结束循环。练 习 比较三种循环结构: For-Next、Do While-Loop、Do-Loop Until,指出各在什么情况下使用?Do While-Loop与Do-Loop Until 之间又有什么区别? 写出下列程序的执行结果。 Private Sub Form_Click() Dim x As Integer Dim n As Integer n = 0 For x =

10、 3 To 11 Step 2 n = n + 1 Print x =; x Next x Print n=; n Print x=; x End Sub Private Sub Form _Click() Dim a As Integer Dim b As Integer Dim c As Integer a = 1b = 1c = 1 Do While a + b + c Sqr(y) End Sub Private Sub Form _Click() Dim k As Integer Dim t As Integer Dim s As Integer s = 0t = 1 For k =

11、 2 To 4 s = s + k t = t * k Next k Print s=; s, t=; t End Sub Private Sub Form _Click() Dim a As Integer Dim b As Integer Dim c As Integer Dim s As Integer Dim i As Integer a = 2b = 1s = 0 For i = 10 To 6 Step -1 s = s + a c = a + b a = b b = c Next i Print s=; s End Sub Private Sub Form _Click() Di

12、m i As Integer Dim j As Integer Dim y As Integer Dim s As Integer s = 1y = 1 For i = 2 To 4 For j = 1 To 2 y = y * j Next j s = s + y Next i Print s=; s End Sub Private Sub Form _Click() Dim i As Integer Dim j As Integer For i = 1 To 6 For j = 1 To i Print ; Next j Print Next iEnd Sub 编写计算下列各式的程序: P

13、=n!(n!=n*(n-1)*(n-2)*(n-3)*1,n由键盘输入) S=1-1/2+1/3-1/4+1/6-1/6+1/99-1/100 S=1!+2!+3!+4!+10! 某工厂1997年总产值为200万元,若总产值以每年5%的速度增长,问多少年后总产值翻一番? 编写求下式中n最大值的程序,画出流程图。 12+22+32+n2=1000 编写程序打印下列图形: * * * * * * * * * * 设计一个界面如图6-32所示的程序,图中上排的两个文本框用于输入一个分数的分子分母,中排有一个结果框,用于显示计算结果,下排为“计算”和“退出”按钮。单击“计算”钮时,在中间框中立即显示出该分数的化简结果,单击“退出”钮时,结束程序。要求写出完成该程序所要绘制的控件及需要重新设置的属性,并编写程序。化简分数的算法如下: 求分子与分母的最大公约数; 将分子、分母分别用最大公约数相除; 用上步求出的两个数组成化简分数,送到结果框显示。例如:分子框输入126,分母框输入210,单击“计算”按钮后,化简分数框显示3/5。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1