《《循环结构续》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《循环结构续》PPT课件.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、复习复习 变量超过终值?循环变量加上步长(Next语句)语句块(循环体)NoYesNext的下条语句如果在循环体中遇到 Exit For 语句,则强行中止循环循环变量保存终值和步长(For语句)For =to step Next 第1章 VB.NET集成开发环境 1一个炊事员上街采购一个炊事员上街采购,用用500500元钱买了元钱买了9090只鸡只鸡,其中其中母鸡一只母鸡一只1515元元,公鸡一只公鸡一只1010元元,小鸡一只小鸡一只5 5元元,正好把正好把钱买完。问母鸡、公鸡、小鸡各买多少只?钱买完。问母鸡、公鸡、小鸡各买多少只?分析:设母鸡分析:设母鸡I I只只,公鸡公鸡J J只只,则小鸡
2、为则小鸡为90-I-J90-I-J只只,则则15*I+10*J+(90-I-J)*5=500,15*I+10*J+(90-I-J)*5=500,显然一个方程求两显然一个方程求两个未知数是不能直接求解。必须组合出所有可能的个未知数是不能直接求解。必须组合出所有可能的i,ji,j值,看是否满足条件。这里值,看是否满足条件。这里I I的值可以是的值可以是0 0到到3333,J J的值可以的值可以0 0到到5050。第1章 VB.NET集成开发环境 2第1章 VB.NET集成开发环境 3Dim i,jDim i,j ForFor i=0 i=0 ToTo 33 33 ForFor j=0 j=0 To
3、To 50 50 IfIf i*15+j*10+(90-i-j)*5=500 i*15+j*10+(90-i-j)*5=500 ThenThen Label1.Text=Label1.Text&vbCrLf&Label1.Text=Label1.Text&vbCrLf&母鸡母鸡&i&i&只只&Space(2)&Space(2)&公鸡公鸡&j&j&只只&Space(2)&Space(2)&小小鸡鸡&90-i-j&90-i-j&只只“NextNext NextNext第1章 VB.NET集成开发环境 4【编程:水仙花数问题编程:水仙花数问题】所谓水仙花数,是指一个所谓水仙花数,是指一个3 3位数,
4、其各位数字立方和等于该位数,其各位数字立方和等于该数字本身。例如,数字本身。例如,153153是水仙花数,因为是水仙花数,因为153=13+53+63 153=13+53+63。n方法方法1 1:利用三重循环,将三个个位数连接成一个利用三重循环,将三个个位数连接成一个3 3位数进位数进行判断。例如,将行判断。例如,将i,j,ki,j,k三个个位数连成一个三位数的表达三个个位数连成一个三位数的表达式为:式为:i*100+j*10+ki*100+j*10+k,判断,判断i*100+j*10+k=i3+j3+k3i*100+j*10+k=i3+j3+k3n方法方法2:2:对对100-999100-9
5、99的每个数分别判断是不是水仙花数:将数的每个数分别判断是不是水仙花数:将数分解成个位,十位,百位,进行判断分解成个位,十位,百位,进行判断第1章 VB.NET集成开发环境 5Dim i,j,k,str,aDim i,j,k,str,a For i=1 To 9 For i=1 To 9 For j=0 To 9 For j=0 To 9 For k=0 To 9 For k=0 To 9If(i*100+j*10+k)=(i 3+j 3+k 3)If(i*100+j*10+k)=(i 3+j 3+k 3)Then Then a=a&i&j&k&Space(2)a=a&i&j&k&Space(
6、2)End If End If Next Next Next Next Next Next MessageBox.Show(a)MessageBox.Show(a)第1章 VB.NET集成开发环境 6Dim i,a,b,c,strDim i,a,b,c,str For i=100 To 999 For i=100 To 999 a=Mid(i,1,1)a=Mid(i,1,1)b=Mid(i,2,1)b=Mid(i,2,1)c=Mid(i,3,1)c=Mid(i,3,1)If a 3+b 3+c 3=i Then If a 3+b 3+c 3=i Then str=str&i&Space(2)s
7、tr=str&i&Space(2)End If End If Next Next MessageBox.Show(str)MessageBox.Show(str)第1章 VB.NET集成开发环境 7例题:例题:效果演示效果演示 编程实现以下功能,按下键盘编程实现以下功能,按下键盘wsadwsad键控制图片上下左右移动,键控制图片上下左右移动,思考:一般情况下图片应该放在哪个控件?设置什么属性?思考:一般情况下图片应该放在哪个控件?设置什么属性?按下键盘是什么事件按下键盘是什么事件 怎么返回按下的键?怎么返回按下的键?如何改变图像的位置如何改变图像的位置 keypressPicturebox,i
8、mage属性e.keycharLeft,top第1章 VB.NET集成开发环境 8 Private Sub Private Sub Button1_KeyPressButton1_KeyPress(ByVal sender As Object,ByVal(ByVal sender As Object,ByVal e e As As)Handles Button1.KeyPress)Handles Button1.KeyPress a=e.KeyChara=e.KeyChar Select Case a Select Case a Case w Case w Button1.Top=Button
9、1.Top-1 Button1.Top=Button1.Top-1 Case s Case s Button1.Top=Button1.Top+1 Button1.Top=Button1.Top+1 Case a Case a Button1.Left=Button1.Left-1 Button1.Left=Button1.Left-1 Case d Case d Button1.Left=Button1.Left+1 Button1.Left=Button1.Left+1 Case Else Case ElseMessageBox.Show(“MessageBox.Show(“请用请用wsa
10、dwsad键控制图片上下左右移动键控制图片上下左右移动)End Select End Select第1章 VB.NET集成开发环境 9n例题例题程序填空,编程实现右图效果程序填空,编程实现右图效果Dim I As Integer,J As IntegerDim I As Integer,J As IntegerFor I=1 To 5For I=1 To 5 TextBox1.Text=TextBox1.Text&Space(8-I)TextBox1.Text=TextBox1.Text&Space(8-I)For J=1 To For J=1 To()TextBox1.Text=TextBo
11、x1.Text&()TextBox1.Text=TextBox1.Text&()Next J Next J TextBox1.Text=TextBox1.Text=()Next I Next I End Sub End Sub2*I-1Chr(Asc(A)+I-1)TextBox1.Text&vbCrLf第1章 VB.NET集成开发环境 10n继续继续思考:如何打印出倒三角的效果来思考:如何打印出倒三角的效果来 Dim a,i,jDim a,i,j For i=()For i=()TextBox1.Text=TextBox1.Text&Space(8-i)TextBox1.Text=TextB
12、ox1.Text&Space(8-i)For j=()For j=()TextBox1.Text=TextBox1.Text&TextBox1.Text=TextBox1.Text&Next j Next j TextBox1.Text=TextBox1.Text&vbcrlf TextBox1.Text=TextBox1.Text&vbcrlf Next i Next i4 To 1 Step-14 To 1 Step-11 To 2*i-11 To 2*i-1 Chr(Asc(A)+i-1)第1章 VB.NET集成开发环境 11【读程序,写结果读程序,写结果】TextBox1.Text=T
13、extBox1.Text=n=5 n=5 a=(n+1)/2 a=(n+1)/2 For i=1 To n For i=1 To n b=Math.Abs(a-i)b=Math.Abs(a-i)TextBox1.Text=TextBox1.Text&Space(b+1)TextBox1.Text=TextBox1.Text&Space(b+1)For j=1 To n-2*b For j=1 To n-2*b textBox1.Text=TextBox1.Text&*textBox1.Text=TextBox1.Text&*Next j Next j TextBox1.Text=TextBox
14、1.Text&vbCrLf TextBox1.Text=TextBox1.Text&vbCrLf Next i Next i第1章 VB.NET集成开发环境 12【编写程序编写程序】在标签在标签label1label1上输出下图效果上输出下图效果Dim i,j For i=1 To 5 For j=1 To i Label1.Text=Label1.Text&j Next Label1.Text=Label1.Text&vbCrLf Next第1章 VB.NET集成开发环境 13输入字符串,要求将字符顺序倒置。例如,输入输入字符串,要求将字符顺序倒置。例如,输入“ABCDEFG”ABCDEFG
15、”,输出,输出“GFEDCBA”GFEDCBA”。Private Sub Form1_Click(ByVal sender As Object,ByVal e As Private Sub Form1_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles MyBase.ClickSystem.EventArgs)Handles MyBase.Click Dim a$,i%,c$,d$,n%Dim a$,i%,c$,d$,n%a=InputBox$(a=InputBox$(请输入:请输入:)n=n=(1)(1)For i
16、=1 To For i=1 To (2)(2)c=Mid(a,i,1)c=Mid(a,i,1)Mid(a,i,1)=Mid(a,i,1)=(3)(3)(4)(4)=c=c Next Next MsgBox(a)MsgBox(a)End Sub End SubInt(n2)Mid(a,n-i+1,1)Len(a)Mid(a,n-i+1,1)第1章 VB.NET集成开发环境 14n条件循环控制语句条件循环控制语句 在无法预先确定循环次数的情况下,可采用条件循环控制。在无法预先确定循环次数的情况下,可采用条件循环控制。n格式格式1 1(当型循环结构当型循环结构)Do Do 语句块语句块 (循环体)(
17、循环体)Loop While Loop While 条件条件当条件满足,重复执行循环体内的语句当条件满足,重复执行循环体内的语句n格式格式2 2(直到直到型循环结构型循环结构)Do Do 语句块语句块 Loop until Loop until 条件条件重复执行循环体内的语句,直到条件成立(条件值为重复执行循环体内的语句,直到条件成立(条件值为TrueTrue)就跳出循环。就跳出循环。3.3.3 3.3.3 循环结构语句循环结构语句 APFT第1章 VB.NET集成开发环境 15 例:该程序段将反复执行,直到输入正确的密码例:该程序段将反复执行,直到输入正确的密码“ABCD”ABCD”后循环结
18、束。后循环结束。用用loop while,loop untilloop while,loop until分别实现分别实现 DoDo PW=InputBox(PW=InputBox(输入密码输入密码)Loop While PWABCDLoop While PWABCD DoDoPW=InputBox(PW=InputBox(输入密码输入密码)Loop until PW=ABCDLoop until PW=ABCD3.3.3 3.3.3 循环结构语句循环结构语句 注注意意:DoLoop DoLoop WhileWhile语语句句与与DoLoop DoLoop UntilUntil语语句句对条件的逻
19、辑设置相反对条件的逻辑设置相反。第1章 VB.NET集成开发环境 16n格式格式3 3:Do While Do While 条件条件 语句块语句块 LoopLoop首先判断首先判断Do WhileDo While语句后的条件若条件成立,则重复执行循环。语句后的条件若条件成立,则重复执行循环。n格式格式4 4:Do Until Do Until 条件条件 语句语句 LoopLoop首先判断首先判断Do untilDo until语句后的条件,若不成立,则重复执行循环。语句后的条件,若不成立,则重复执行循环。3.3.3 3.3.3 循环结构语句循环结构语句 第1章 VB.NET集成开发环境 17例
20、:例:PW=InputBox(PW=InputBox(输入密码输入密码)Do While PWABCDDo While PWABCD PW=InputBox(PW=InputBox(输入密码输入密码)Loop Loop n该程序段首先判断变量该程序段首先判断变量PWPW的值是否为的值是否为“ABCD”ABCD”,若不是若不是“ABCD”ABCD”则执行循环,直到输入则执行循环,直到输入“ABCD”ABCD”后循环结束。后循环结束。PW=InputBox(PW=InputBox(输入密码输入密码)Do Until PW=ABCDDo Until PW=ABCD PW=InputBox(PW=In
21、putBox(输入密码输入密码)LoopLoop3.3.3 3.3.3 循环结构语句循环结构语句 第1章 VB.NET集成开发环境 183.3.3 3.3.3 循环结构语句循环结构语句 条件语句块Loop的下条语句条件语句块Loop的下条语句YesYesNoNo至少执行一次前测型前测型 Do While Do While Loop Loop后测型后测型 DoDo Loop While Loop While (先判后做先判后做)(先做后判先做后判)第1章 VB.NET集成开发环境 19n条件循环控制的几个问题条件循环控制的几个问题 (1 1)在)在Do WhileDo While或或 Do Un
22、tilDo Until语句之前,一般应先确定循环语句之前,一般应先确定循环控制变量的初值。控制变量的初值。例如:例如:s=InputBox(s=InputBox(请输入:请输入:)Do While s9999Do While s9999 Sum=sum+s Sum=sum+s s=InputBox(s=InputBox(请输入:请输入:)LoopLoop3.3.3 3.3.3 循环结构语句循环结构语句 第1章 VB.NET集成开发环境 20n条件循环控制的几个问题条件循环控制的几个问题 (2)2)避免死循环避免死循环-重复不停地执行循环体重复不停地执行循环体 k=10k=10 Do While
23、 k0 Do While k0 a=a+1 a=a+1 b=b+1 b=b+1 Loop Loop修改方法:在修改方法:在LoopLoop语句前可增加一个诸如语句前可增加一个诸如 k=k-1 k=k-1 的语句。的语句。(3)(3)使用使用 Exit Do Exit Do 语句,以退出循环。语句,以退出循环。3.3.3 3.3.3 循环结构语句循环结构语句 第1章 VB.NET集成开发环境 21【例【例322322】计算并显示满足下列不等式的调和级数的项数:计算并显示满足下列不等式的调和级数的项数:1+1/2+1/3+1/1+1/2+1/3+1/n En E【例例325325】从键盘输入任意正
24、数】从键盘输入任意正数m m,编程计算第一个不小于编程计算第一个不小于m m的的FibonacciFibonacci数及其项号(即最小数及其项号(即最小n n和和F Fm m,使使F Fn nmm)。)。已已知知FibonacciFibonacci数列定义如下:数列定义如下:F F0 0=0=0,F F1 1=1=1,F F2 2=1=1,F Fn+2n+2=F=Fn+1n+1+F+Fn n(n(n0)0)3.3.3 3.3.3 循环结构语句循环结构语句 第1章 VB.NET集成开发环境 22【例【例322322】1+1/2+1/3+1/1+1/2+1/3+1/n En E Dim c As
25、Integer,e1 As Single,s As Single Dim c As Integer,e1 As Single,s As Single e1=InputBox(e1=InputBox(请输入数据:请输入数据:)Do Do c=c+1 c=c+1 s=s+1/c s=s+1/c Loop Until s e1 Loop Until s e1 MessageBox.Show(c=&c)MessageBox.Show(c=&c)3.3.3 3.3.3 循环结构语句循环结构语句 第1章 VB.NET集成开发环境 23【例【例325325】m=InputBox(m=InputBox(请输入
26、一个正整数:请输入一个正整数:)fst=0:snd=1:n=2 fst=0:snd=1:n=2 Do UntilDo Until snd=m snd=m trd=snd+fst:fst=snd:snd=trd trd=snd+fst:fst=snd:snd=trd n=n+1 n=n+1 Loop LoopMessageBox.Show(m=&m&vbCrLf&MessageBox.Show(m=&m&vbCrLf&第第&n&n&项是项是第一个不小于第一个不小于&m&m&的数,的数,&数值是数值是&snd)&snd)3.3.3 3.3.3 循环结构语句循环结构语句 第1章 VB.NET集成开发
27、环境 24【编程【编程】设计一程序,对整数进行因式分解。比如输入设计一程序,对整数进行因式分解。比如输入-12-12,输出,输出-12=-2*2*3*112=-2*2*3*1思路:思路:输入num,求绝对值;i=2Num mod i=0Num=numiCh=ch&i&“*”TFi=i+1?TF输出ch第1章 VB.NET集成开发环境 25【编程】:从键盘输入字符串,试编程删除【编程】:从键盘输入字符串,试编程删除括号中的字符,然后输出。括号中的字符,然后输出。第1章 VB.NET集成开发环境 26【编程】:从键盘输入字符串,试编程删除【编程】:从键盘输入字符串,试编程删除括号中的字符,然后输出
28、。括号中的字符,然后输出。是否找到查找(的位置a查找)的位置b重新连接字符串查找下一个(的位置a第1章 VB.NET集成开发环境 27Abc(abc)sf(ff)faAbc(abc)sf(ff)fa3.3.3 3.3.3 循环结构语句循环结构语句 (1 1)从字符串的一个位置起找第)从字符串的一个位置起找第1 1个个“(”的位置,假如是的位置,假如是a a(2 2)从找到的左括号的位置)从找到的左括号的位置a a起找第起找第1 1个个“)”,假如位置是,假如位置是b b(3 3)删除括号内的字符,实际就是把)删除括号内的字符,实际就是把a a位置左边的字符和位置左边的字符和b b位位置右边的字
29、符重新链接起来(置右边的字符重新链接起来(&)abAbcsf(ff)fa第1章 VB.NET集成开发环境 28【编程:猴子吃桃问题编程:猴子吃桃问题】猴子第一天摘下若干个桃子,当即吃了一半,还猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上将剩下的桃子不过瘾,又多吃了一个。第二天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下桃子的一半零一个。到第一天剩下桃子的一半零一个。到第9 9天早上想再吃天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃时,见只剩下一个桃子了。求第一天共摘了多少桃子。子。第1章 VB.NET集成开发环境 29提示:假设第提示:假设第N N天桃子为天桃子为a a,则前一天的桃子为,则前一天的桃子为M=M=(a+1a+1)*2 2,以此类推,可知第八天桃子为以此类推,可知第八天桃子为4 4,第七天桃子为,第七天桃子为1010。Dim m,n As Integer n=9 m=1 Do Until n=1 m=(m+1)*2 n=n-1 MsgBox(第&n&天,有&m&个桃子!)Loop第1章 VB.NET集成开发环境 30
限制150内