资源预览内容
第1页 / 共48页
第2页 / 共48页
第3页 / 共48页
第4页 / 共48页
第5页 / 共48页
第6页 / 共48页
第7页 / 共48页
第8页 / 共48页
第9页 / 共48页
第10页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
循环控制语句是基本流程控制语句之一。 VB提供三种不同风格的循环语句:4.4.1 ForNext循环 4.4.4 循环的嵌套 4.4.3 DoLoop循环4.4.2 WhileWend循环4.4 循环结构程序设计4.4.1 For-Next循环结构u 通常用于事先已知循环次数,可使用For-Next循环结构u 形式如下:For v=e1 To e2 Step e3 Exit For Next vv是循环控制变量,整型或单精度型; e1 e2 e3是控制循环的参数.e1为初值,e2为终值,e3为步 长.当e3为1时,step e3部分可以省略. For语句和Next语句之间的诸语句称为循环体.执行循环体循环变量超过终值循环变量赋初值计算初值、终值及步长变量=变量+步长TFFor i=1 to 10 step 2print i; Next i print “i=“; iFor i=9 to 1 step -2print i; Next i print “i=“; i循环次数:?次 退出循环后循环变量值?3)循环变量的初值、终值及步长只在进入For 循环时计算一次。 例题:a=5:b=10:c=2 For k=a to b step cc=3 print k Next k2)For-Next循环的正常循环次数可用以下公式 :正常指在循环体内不给循环变量重新赋值。循环次数=Int(终值-初值)/步长)+1 对上例循环体中加条语句i=i+1 则属于非正常执行循环体循环变量超过终值循环变量赋初值计算初值、终值及步长变量=变量+步长TF4)循环变量和循环参数(初值、终值或步长) 的类型不一致,先将表达式的最后结果转换为 循环变量的类型,再执行循环。 单精度实数赋给整型变量-四舍五入Dim x as integerFor x=1.6 to 7.4 step 2.8print xNext x读 程 序 时 注 意: 循环变量的变化 循环体语句的执行次数 终止循环时循环变量的值 结果的显示输出Private Sub Command1_Click()Dim i As Integer, n As IntegerFor i = 0 To 50i = i + 3n = n + 1If i 10 Then Exit forNextText1.Text = Str(n) End SubPrivate Sub Command1_Click()Dim StrN As String, Str1 As String, Str2 As StringDim i As IntegerStr1 = “AaBbCc“For i = Len(Str1) To 1 Step 2Str2 = Mid(Str1, i - 1, 2)StrN = StrN p End SubFOR k=1 TO 3SELECT CASE kCASE 1a = 3CASE 2a = 2CASE 3a = 1END SELECTPRINT a; NEXT k PRINT k请大家自己读程序并验证结果是否正确.编程题(忌记录代码,应跟着思考)【例2】 用FOR循环求1+2+3+100【例1】输输出所有的水仙花数。要求按以 下格式将结结果显显示在列表框中:【例3】猴子吃桃问题。猴子第一天摘下若 干个桃子,当即吃了一半,还不过瘾,又多 吃了一个。第二天早上又将剩下的桃子吃掉 一半,又多吃了一个。以后每天早上都吃了 前一天剩下的一半零一个。到第10天早上想 再吃时,就只剩一个桃子了。求第一天共摘 了多少桃子。【例4】编定程序计算一个给定的数的所有 因子并在当前窗体上输出所有因子和。因子 指能够被这个数整除的数。(包含1和该数 本身)。要求完成以下两小题:(1)在文本框1中输入整数n;在文本框2 中以一个因子占一行的格式输出所有因子。(2)使用InputBox输入n,在列表框中显 示所有因子。重点:在文本框中换行应如何实现?【例5】编写程序,随机生成100个两位整数,并 统计出小于等于40、大于40小于等于70及大于70 的数据个数。【例6】编写程序,随机生成100个两位正整数,将 其中的偶数与奇数分别以5个一行的形式输出到两个 图片框中。 【例7】逆序输出由字母数字组成的字符串. 要求:由文本框1接收用户输入的任一字符串文本 框2中显示倒置字符串。这是一个有趣的古典数学问题:有一对兔子这是一个有趣的古典数学问题:有一对兔子 ,从出生后第,从出生后第3 3个月起每个月都生一对兔子。小个月起每个月都生一对兔子。小 兔子长到第兔子长到第3 3个月后每个月又生一对兔子。假设个月后每个月又生一对兔子。假设 所有兔子都不死,问前所有兔子都不死,问前2020个月的兔子总数分别个月的兔子总数分别 为多少为多少-每行输出每行输出9 9个数?个数?这个数列有如下特点:第这个数列有如下特点:第1 1,2 2两个数为两个数为1 1,1 1。 从第从第3 3个数开始,该数是其前面两个数之和。即个数开始,该数是其前面两个数之和。即: :f1=1 (n=1) f1=1 (n=1)f2=1 (n=2) f2=1 (n=2)fn=fn-1+fn-2 (n3) fn=fn-1+fn-2 (n3)【例8】 设计程序输出Fibonacci数列的前20项【例9】给定正整数m,判定其是否为素数。素数:除了1和该数本身之外,不能被其他任何整数 整除的数。 方法:将m作为被除数,将2到(m-1)各个整 数轮流作为除数,如果都不能被整除, 则m为素数。将m作为被除数,只需被2到m的开方 间整数除即可。第二次循环课第二次循环课算法可以表示如下: S1:输入m的值 S2:i=2(i作为除数) S3:m被i除,得余数r S4:若r=0,表示m能被i整除,不 需要再除下去,结束循环,转到S7;否则执行S5 S5:i=i+1 S6:若isqrt(m),返回S3; S7:若isqrt(m),则打印 n “是素数”,否则打 印n “不是素数”。方法二: 通过标记变量来判断是否为素数 .9【例10】 编写程序,判断某正整数是否为回文数.回文数是指左右数字完全对称的自然数,如 121,15651,8888等。 思路:依次比较对称位置的数字是否相 同,若相同,则继续比下去,若不同, 则终止比较。 当事先未知循环的次数而根据条件来决定是否 继续执行循环体时,可以使用While-Wend语 句。也可用于已知次数。 一般形式为:While e循环体语句Wend4.4.2 While-Wend循环结构【例1】求1+2+3+4+100的值。 循环体语句(重复?) 循环条件e(加数满足?时重复) 死循环的产生(注意循环条件中涉及的循环变量的更改)循环次数已知的情况 分析:重复执行的为求和(累加每一项)循环条件-某一项不小于0.0001设某一项为t,则t=1/(2n-1)【例2】求1+1/3+1/5+1/(2n-1)的值,要 求最后一项的值不小于0.0001。循环次数不定的情况4.4.3 Do-Loop循环 循环是指重复地执行某些操作. VB中提供的循环结构语句有:计数型循环结构语句:For-Next条件型循环结构语句:While-WendDo-Loop循环次数已知;循环次数未知 两种基本循环结构: v 当型循环 v 直到型循环Do-Loop循环结构语句一、Do-Loop 循环结构语句有四种形式:(1) 当型结构 (当条件为真循环)形式1:先判断再执行 Do While eExit DoLoope1ATFIf e2 then Exit DoBDo语句与Loop语句之间的语句即 为循环体语句。 程序执行到Exit Do语句,就会退出 循环,转而执行Loop语句的下一条 语句.当型结构形式2:Do Exit Do Loop While e 先循环再判断TFAe1If e2 then Exit DoB 执行以下程序代码,在窗体上显示的结果?Private Sub Form_Click()Dim X As Integer, Y As IntegerX = 5: Y = 5Do While X + Y 4Print x,yWhile语句的应用【例4】用公式求的近似值,直到最后一项的 绝对值小于10-6为止。 注意变量类型的定义。整型,长整型,单精度型,双精度型。【例5】将十进制整数转化为二进制数.【例6】输入一个正整数,将其各位数字按逆序输出. 例如输入1234,输出4321。 问题:如何获得四/五位整数的各位数字?DoLoop 表示无条件循环,此时在循环体内应该有Exit Do 语句,否则为死循环 不循环 Do while false 循环条件永远不满足 死循环 Do while 1 循环条件永远满足【例7】读程序x=0 Dox=x+1If x10 Then Exit Do Loop Print x【例8】设计采用欧几里德算法求两个 自然数最大公约数的程序欧几里德算法/辗转相除法 S1.输入自然数M,N; S2.求M除以N的余数R; R=M MOD N S3.使M=N,即用N代换M;M=N S4.使N=R,即用R代换N;N=R S5.若R0,则重复执行S2、S3、S4(循环), 否则转S6; S6.输出M,M即为M和N的最大公约数.Do whileIf m n Then t = m: m = n: n = tDo/循环体语句Loop While (?) Print “最大公约数=“, ?请大家思考若将while放在Do后面,应对程序作 怎样的更改?最大公约数应是?Do UntilDo/循环体语句 Loop Until ? 最大公约数为?Do LoopDor = m Mod nIf ? Then Exit Dom = nn = rLoop 最大公约数为n最小公倍数与最大公约数的关系?求最大公约数及最小公倍数的方法二4.4.4 循环的嵌套【例1】读程序 Private Sub Command1_Click()Dim i As Integer, j As IntegerFor i = 1 To 5For j = 1 To 4Print i, jNextNext End Sub【例】读程序For i = 1 To 4x = 4For j = 1 To 2x = x + 6Next Next Print x【例】读程序For i = 1 To 4x = 4For j = 1 To 3x = 3For k = 1 To 2x = x + 6NextNext Next Print x【例2】求100200之间的所有素数 ,以5个一行的形式输出。【例3】 分析每一行中包括的空格个数,*个数,找出 它们之间的关系。 i(行) j(空格个数) k(*个数)1 3 12 2 33 1 54 0 7 先输出第一行的空格及*,再输出第二行的空 格及* ;内循环控制变量变化快,外循环变 量变化慢。【例4】 :百钱买百鸡问题 公元前5世纪,我国古代数学家张丘建在
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号