资源简介 第10节 循环结构算法实现—Do While语句知识点目标考试要求算法的程序实现①循环语句②解析算法、枚举算法等常见算法的实现c必考+加试1.Do While 条件表达式语句块Loop2.在Do While 循环中,先给循环变量赋初值,在循环体中改变循环变量的值,否则会造成死循环。3.中途退出Do While循环的语句是Exit__Do。所有的For循环均可以转换成Do While循环。For循环中的Next语句,相当于循环变量+Step值语句的作用,Do While循环中,在Loop语句的上方或者循环体内部往往有一条改变循环变量值的语句,否则会造成死循环。当循环次数不能确定时,或者当循环条件有两个或两个以上时,往往用Do While 循环。关键要找到循环的条件,当条件满足时,反复执行循环体语句。【例1】 第1天存1元,第2天存2元,第3天存4元,第4天存8元,以此类推。在文本框Text1中输入所需储蓄的金额,单击“计算”按钮Command1,在文本框Text2中输出至少所需天数。程序运行的界面如下图所示:程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim n As Integer,p As Single,t As Single p=Val(Text1.Text) t=1 n=0 ____①____ Do While____②____s=s+t____③____n=n+1 Loop Text2.Text=Str(n)End Sub划线处代码为①____________________________________________________②________________________________________________________________③________________________________________________________________解析 本题考核的知识点是Do While循环的应用。通过输入、输出理解变量的含义,p是要达到的金额,n是所需天数。s=s+t,t是每天存的金额,s是总共存储的金额。循环的条件是存储金额没有达到预期金额。第1个t的值为1,因此s的初值为0。答案 ①s=0 ②s[方法与总结] 通过本题的练习,让学生理解什么时候用Do While循环,Do While 循环适合用于循环次数不确定的情况,要明确循环的条件及变量的含义,满足条件时,反复执行循环体语句。【变式训练】 某理财产品的月收益率为4.3%,现投资1万元,在文本框Text1中输入预期的本息合计金额(单位万元),单击“计算”按钮Command1,在文本框Text2中输出至少所需多少个月。程序运行的界面如下图所示:程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim n As Integer,p As Single,t As Single p=Val(Text1.Text) t=1 n=0 Do While____①____t=t*(1+0.043)____②____ Loop Text2.Text=Str(n)End Sub划线处代码为①___________________________________________________②_______________________________________________________________解析 变量t表示要达到的金额,n是所需月份,循环的条件是本息和没有达到预期的金额。答案 ①t【例2】 工作人员手中有人民币100、50、10和1元4个币种,在文本框Text1中输入一个金额,按最大票面优先兑换的原则,输出相应的人民币及张数。程序运行界面如下图所示:程序代码如下,请将空白处填写完整。Private Sub Command2_Click() Dim je As Single,n As Integer,t As Single,i As Integer Dim rmb As Integer je=Val(Text1.Text) i=1:n=0:rmb=100 Do While ____①____If je>=rmb Then____②____ n=n+1 ElseList1.AddItem ”面值”+Str(rmb)+”的张数为”+Str(n) ____③____ If i=2 Thenrmb=50 ElseIf i=3 Thenrmb=10 Elsermb=1 End If n=0End If Loop If n>0 Then List1.AddItem ”面值”+Str(rmb)+”的张数为”+Str(n)End Sub划线处代码为①___________________________________________________②_______________________________________________________________③_______________________________________________________________解析 本题考核的知识点是Do While循环的应用。je表示输入的金额,n出现在循环体中,因此是每一种币种的数量。循环的条件是金额全部兑换成人民币,就是金额不为0的时候。答案 ①je>0或 je<>0 ②je=je-rmb ③i=i+1[方法总结] 要牢牢把握循环的条件,什么时候循环。如果不能很好地找出来,那么可以从反面来理解,就是什么时候不循环。【变式训练】 用物理天平测量物体的质量。假设有质量为500、100、20和10克砝码若干,在文本框Text1输入物体的质量,单击“计算”按钮Command1,在列表框List1中输出每次所加砝码,在文本框Text2中输出所加砝码总数,程序运行界面如图所示。程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim n As Integer,t As Integer,zl As Integer,fama As Integer zl=Val(Text1.Text) n=0:i=1:fama=500 Do While zl>0If ____①____ Then List1.AddItem ”重量”+Str(zl)+”。所加砝码”+Str(fama) zl=zl-fama ____②____Else i=i+1 If i=2 Thenfama=100 ElseIf i=3 Thenfama=20 Elsefama=10 End IfEnd If Loop Text2.Text=Str(n)End Sub划线处代码为①__________________________________________________②______________________________________________________________解析 理解变量的含义,zl输入的物体质量,n所加砝码数量,i表示砝码的种类,fama表示砝码的质量。如果加上砝码后,质量减去所加砝码还没有达到0,反复加砝码。如果当前质量大于等于当前种类砝码质量,可以加,否则加下一种砝码。答案 ①zl>=fama ②n=n+11.有如下程序段。x=0:n=0Do While x<50 x=(x+2)*(x+3) n=n+1LoopText1.Text=Str(n)Text2.Text=Str(x)运行该程序后,文本框Text1、Text2上分别显示的是________、________。解析 通过表格的形式来分析变量的值。x<50?xn初始值00True61True722False答案 2 722.在文本框Text1中输入一个四位数,单击“判断”按钮Command1,在文本框Text2中输出该四位数是否是玫瑰花数。玫瑰花数指一个四位数的各个数字4次方之和等于他本身,程序运行的界面如下图所示。程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim n As Integer,t As Integer,s As Integer,temp As Integer n=Val(Text1.Text) If n>=1000 And n<=9999 Thens=0temp=nDo While ____①____ t=temp Mod 10 s=s+t^4 ____②____LoopIf n=s Then Text2.Text=”是玫瑰花数” Else Text2.Text=”不是玫瑰花数”End IfElseText2.Text=”输入的数不是4位数!”End IfEnd Sub划线处代码为①__________________________________________________②_______________________________________________________________解析 本题考核的知识点是对一个数各个位数进行分解。循环的条件是只要下一次分离的数不为0,继续分离。理解变量含义,n是输入的数,从输出来看,n要和4次方的和比较,因此用一个变量temp来代替n进行分解,t是分解后的个位数,玫瑰花数的条件是各个数的4次方和,分离出一个数后,要把该数去除。答案 ①temp>0 或temp<>0 ②temp=temp[ST03.对于任意一个正整数,如果是奇数,则乘以3加1,如果是偶数,则除以2,得到的结果再按上述的规则重复处理,最终总能够得到1。在文本框Text1中输入一个正整数,单击“计算”按钮Command1,在列表框List1中输出得到结果1的计算过程,在文本框Text2中输出所需步骤。程序运行界面如下。程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim n As Integer,s As Stringn=Val(Text1.Text)t=0 Do While ____①____s=Str(n)+”→”If ____②____Then n=n*3+1Else n=n 2End IfList1.AddItem s+Str(n)____③____ Loop Text2.Text=Str(t)End Sub划线处代码为①___________________________________________________②________________________________________________________________③________________________________________________________________解析 计算的条件是只要n不是1。理解变量含义,n是输入的数,t是所需步骤数,s是在列表框中显示的内容。答案 ①n>1或n<>1 ②n Mod 2=1 ③t=t+14.在文本框Text1中输入一个正整数,单击“判断”按钮Command1,在文本框 Text2中输出是否是素数,请把下列程序空白处填写完整。Private Sub Command2_Click() Dim i As Integer,n As Integer,flag As Boolean n=Val(Text1.Text) i=2 Do While ____①____i=i+1 Loop If ____②____ Then Text2.Text=”素数” Else Text2.Text=”非素数”End Sub划线处代码为①___________________________________________________②_______________________________________________________________解析 循环的条件是只要n没有被i除通,继续下个数除,当i加到n时,总会除通,就不循环了。因此判断是否是素数,从2除到n-1,若除到n-1还未除通,i将等于n。答案 ①n Mod i<>0 ②i=n5.判断是否是回文。一个字符串,从左到右读和从右到左读是完全一样的。在文本框Text1中输入文字,单击“检测”按钮Command1,在文本框Text2中输出结论,程序运行时界面如下:程序代码如下,请在空白处补充完整。Private Sub Command2_Click() Dim i As Integer,s As String,s1 As String,flag As Boolean s=Text1.Text i=1 j=Len(s) flag=True Do While is1=Mid(s,i,1)s2=Mid(s,j,1)If s1<>s2 Then ____①____i=i+1____②____ Loop If flag=True Then Label4.Caption=s+”是回文数” Else Label4.Caption=s+”不是回文数”End Sub划线处代码为①___________________________________________________②________________________________________________________________解析 循环的条件是字符串首尾各取一个字符,如果相等继续向中间移动再次取。变量含义,i表示头指针,j表示尾指针。s1表示从头部开始取出的字符,s2表示从尾部开始取出的字符,flag表示是否是回文数的标志,如果两者不相等,则不是回文数,退出循环,否则头指针向后称,尾指针向前移。答案 ①flag=False ②j=j-16.产生降序随机数列,在文本框Text1中输入一个正整数,单击“产生”按钮Command1,在标签Label2中显示从该数到1的降序数列,在文本框Text2中输出数列的项数。程序运行的界面如下图所示。(1)为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click() Dim x As Integer,n As Integer,s As String x=Val(Text1.Text) n=0 Do While____①____n=n+1____②____x=Int(Rnd()*x+1) Loop Label2.Caption=s+Str(x) Text2.Text=____③____End Sub划线处代码为①____________________________________________________②________________________________________________________________③_________________________________________________________________(2)该数列中,________(有/没有)可能存在两个相同的数。答案 (1)①x>1 ②s=s+Str(x) ③Str(n+1) (2)有7.单词倒序加密法。把明文中每个单词首尾颠倒进行加密,空格、标点等其他字符按原来顺序输出。在文本框Text1中输入密文,单击“解密”按钮Command1,按加密的规则,在文本框Text2中输出解密后的字符。程序运行时的界面如图所示:实现上述功能的VB程序如下,请在划线处填入合适代码。Private Sub Command1_Click() Dim i As Integer,s As String,ch As String,newch As String,s1 As String ____①____ newch=”” s1=”” i=1 Do While i<=Len(s)ch=Mid(s,i,1)If ch>=”A” And ch<=”Z” Or ch>=”a”And ch<=”z”Thens1=ch+s1Elsenewch=____②____s1=””End If ____③____Loop If s1<>”” Then newch=newch+s1 Text2.Text=newchEnd Sub划线处代码为①____________________________________________________②________________________________________________________________③________________________________________________________________答案 ①s=Text1.Text ②newch+s1+ch ③i=i+18.产生回文字母。在文本框Textl中输入一个字母,单击“产生回文字母”按钮Command1,在标签Label2中显示相应的回文字符串。例如:若输入的是大写字母“G”,则产生从“A”开始的回文字母“ABCDEFGFEDCBA”;若输入的是小写字母“g”,则产生从“a”开始的回文字母“abcdefgfedcba”。程序运行时的界面如图所示:实现上述功能的VB程序如下,请在划线处填入合适代码。Private Sub Command1_Click() Dim s1 As String,s2 As String,s3 As String Dim i As Integer,n As Integer,j As Integer s1=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz” s2=Text1.Text i=1 Do While Mid(s1,i,1)<>s2 And i<=Len(s1)i=i+1 Loop If____①____Then Label2.Caption=”输入的字符不是字母” Exit Sub End If If i>26 Then n=27 Else n=1s3=Mid(s1,i,1)For j=i-1 To n Step -1s3=____②____Next jLabel2.Caption=____③____End Sub划线处代码为①___________________________________________________②_______________________________________________________________③_______________________________________________________________答案 ①i=Len(s1)+1或i>Len(s1)或i>52 ②Mid(s1,j,1)+s3+Mid(s1,j,1) ③s39.n个1的平方是个回文数,11的平方是121,111的平方是12321。在文本框Text1中输入两个相同1组成数相乘的表达式,单击“计算”按钮Command1,在标签Label2中显示相应的回文字符串。程序运行时的界面如图所示:实现上述功能的VB程序如下,请在划线处填入合适代码。Private Sub Command1_Click() Dim s1 As String,i As Integer,n As Integer,str1 As String str1=”123456789” s1=Text1.Text ____①____ i=1 Do While Mid(s1,i,1)<>”*”And i<=n____②____ Loop i=i-1 If i<>n2 Or n>19 Or Mid(s1,1,i)<>Mid(s1,i+2,n-i+1) ThenLabel2.Caption=”输入的数据不符合要求!”Exit Sub End If For j=1 To 2*i-1If j<=i Thens2=s2+Mid(str1,j,1)Elses2=____③____End IfNext jLabel2.Caption=s2End Sub划线处代码为①___________________________________________________②_______________________________________________________________③________________________________________________________________答案 ①n=Len(s1) ②i=i+1 ③s2+Mid(str1,2*i-j,1)10.现有10种奖品分别用字母A至J表示,22位顾客分别用“甲乙丙丁戊己庚辛壬癸子丑寅卯辰巳午未申酉戌亥”表示。在文本框Text1中输入不大于10的中奖名额,单击“抽奖”按钮,抽出中奖顾客姓名,按中奖先后从A到J顺序依次发放奖品,每人只有一次抽中的机会,获奖信息显示在列表框List1中。程序运行界面如图所示:(1)实现上述功能的VB程序如下,请在划线处填入合适代码。Private Sub Command1_Click() Dim s1 As String,s2 As String Dim c1 As String,c2 As String Dim i As Integer,n As Integer List1.Clear s1=”p甲乙丙丁戊己庚辛壬癸子丑寅卯辰巳午未申酉戌亥p” s2=”ABCDEFGHIJ” n=Val(Text1.Text) If n>10 Or n<=0 Then List1.AddItem”输入的数据不合法!”:Exit Sub i=1 Do While i<=nx=Int(Rnd()*22+2)____①____If c1<>”p” Thenc2=____②____List1.AddItem ”顾客”+c1+”所中奖品为:”+c2i=i+1s1=Mid(s1,1,x-1)+”p”+Mid(s1,x+1,24-x)End If LoopEnd Sub划线处代码为①___________________________________________________②_______________________________________________________________(2)产生随机数x的范围是[,](3)语句s1=Mid(s1,1,x-1)+”p”+Mid(s1,x+1,24-x)的功能是将中奖用________来表示。答案 (1)①c1=Mid(s1,x,1) ②Mid(s2,i,1) (2)[2,23] (3)字母p11.在文本框Text1中输入一个二进制数,单击“换算”按钮Command1,在标签Lable2中显示换算成十六进制数的结果。程序运行界面如图所示:为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click() Dim s As String,n As Integer,i As Integer Dim ch As String,t As Integer Dim sum As Integer,s1 As String str1=”0123456789ABCDEF” s=Text1.Text n=Len(s) If n Mod 4=1 Thens=”000”+s ElseIf n Mod 4=2 Thens=”00”+s ElseIf n Mod 2=3 Thens=”0”+s End If sum=0 For i=1 To Len(s)ch=Mid(s,i,1)t=3-(i-1)Mod 4sum=____①____If i Mod 4=0 Then ____②____ sum=0End If Next i Label2.Caption=”二进制数”+s+”转换为十六进制的值为”+s1End Sub划线处代码为①___________________________________________________②_______________________________________________________________答案 ①sum+Val(ch)*2^t ②s1=s1+Mid(str1,sum+1,1)1.表达式为1+1/2+1/3+1/4+1/5+……,在文本框Text1中输入一个整数,单击“计算”按钮Command1,在文本框Text2中输出这个表达式的和超过该数的项数。程序运行界面如图所示。程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim i As Integer,s As Single p=Val(Text1.Text) i=1 s=0 n=0 Do While ____①____s=s+1/ii=i+1____②____ Loop Text2.Text=Str(n)End Sub划线处代码为①____________________________________________________②________________________________________________________________解析 循环的条件是累加的和不超过输入的数。理解变量的含义,i表示每一项的分母,s表示累加的和,n表示已经所加的项数。答案 ①s2.在文本框Text1中输入一个十进制整数,在文本框Text2中输入一个进制数R(2<=R<=16),单击“计算”按钮Command1,在文本框Text3中输出转换后的数。程序运行界面如下图所示程序代码如下,请将空白处填写完整。Private Sub Command2_Click() Dim n As Integer,t As Integer,s As String Dim r As Integer,ch As String s=”” n=Val(Text1.Text) r=Val(Text2.Text) ch=”0123456789ABCDEF” ′转换后的基数 If r>=2 And r<=16 ThenDo While n>0 t=____①____ s=____②____ ____③____ LoopText3.Text=s ElseText3.Text=”进制输入有误” End IfEnd Sub划线处代码为①___________________________________________________②_______________________________________________________________③_______________________________________________________________解析 循环条件是只要被除数不为0,继续除。题解变量的含义,n是要转换的数,t除r的余数,s是转换后的进制数。每次除后,除数作为新的被除数。答案 ①n Mod r ②Mid(ch,t+1,1)+s ③n=n r3.“质因数分解”的程序,程序的功能如下:在文本框Text1中输入一个大于1的正整数,单击“分解”按扭Command1后,则在文本框Text2中显示分解的质因子个数。程序运行的界面如下图所示。程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim i As Integer,n As Integer,s As String n=Val(Text1.Text) i=____①____ Do While ____②____If n Mod i=0 Then List1.AddItem Str(i) t=t+1 ____③____Else i=i+1End If Loop Text2.Text=Str(t)End Sub划线处代码为①___________________________________________________②_______________________________________________________________③________________________________________________________________解析 循环的条件是只要分解后的数不为1。变量的含义,n是待分解的数,i是质因子,最小的质因子是2,如果能被该数整除,整除后的余数作为新的分解数,若不能整除,找下一个因子。答案 ①2 ②n<>1或n>1 ③n=n/i或n=ni4.用递减法计算两个数m、n的最大公约数,d取m、n的最小值,如果m和n都被d整除了,d就是他们的最大公约数,否则d就减1,直到d等于1为止。在文本框Text1、Text2中分别输入两个正整数,单击“计算”按钮Command1,在文本框Text3中输出他们的最大公约数。程序运行的界面如下图所示。程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim m As Integer,n As Integer,d As Integer,t As Integer m=Val(Text1.Text) n=Val(Text2.Text) If ____①____ Then t=m:m=n:n=t d=n Do While d>1If ____②____ Then Exit DoElse d=d-1End If Loop Text3.Text=Str(d)End Sub划线处代码为①___________________________________________________②_______________________________________________________________解析 循环的条件是从两个数中较小数开始找,如果都能被两个数整除,则他就是最大公约数。理解变量的含义,m、n是输入的两个数,同时保证m>n,d是尝试的最大公约数。也可以改为下列结构。Do While m Mod d<>0 And n Mod d<>0d=d-1Loop当最后d减至1时,总会除通。答案 ①m5.在文本框Text1中输入一个电子邮箱名称,单击“分解”按钮Command1,在文本框Text2中输出主机名,在文本框Text3中输出域名。程序运行的界面如下图所示。程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim s As String,ch As String,i As Integer Dim zjm As String,ym As String,t As Integer s=Text1.Text:i=1 ch=mid(s,i,1) Do While ____①____ And i<=Len(s)i=i+1ch=mid(s,i,1) Loop Text2.Text=____②____ Text3.Text=____③____End Sub划线处代码为①____________________________________________________②________________________________________________________________③________________________________________________________________解析 循环条件是没有找到@符号。变量含义,s输入的电子邮箱名称,ch分离出的字符,i分离的位置。若不满足条件时,该位置就是@符号所在位置。答案 ①ch<>”@” ②Mid(s,l,i-1) ③Mid(s,i+1,Len(s)-i)6.在文本框Text1中输入一个二进制数,单击“换算”按钮Command1,在标签Lable2中显示换算成十进制数的结果。程序运行界面如图所示:为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click() Dim s As String,n As Integer,i As Integer Dim ch As String,t As Integer s=Text1.Text i=1 Do While i<=Len(s)ch=Mid(s,i,1)t=Len(s)-i____①____i=i+1 Loop For i=1 To Len(s) ch=Mid(s,i,1)Label2.Caption=”二进制数”+____②____+”转换为十进制的值为”+Str(n)End Sub划线处代码为①__________________________________________________②_______________________________________________________________答案 ①n=n+Val(ch)*2^t ②s7.对英文字母进行加密的规则:用26个互不重复的ASCII字符作为密钥。单击“产生密钥”按钮Command1,在文本框Text1中输出产生的密钥。运行界面如下图所示。为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click() Dim s As String,i As Integer,x As Integer,my As String s=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789” i=1 Do While i<=26t=63-ix=____①____my=____②____List1.AddItem Str(x)+sIf x=1 Thens=Mid(s,2,t-1)ElseIf x=t Thens=Mid(s,2,t-1)Else____③____End Ifi=i+1 Loop Text1.Text=myEnd Sub划线处代码为①___________________________________________________②_______________________________________________________________③_______________________________________________________________答案 ①Int(Rnd()*(t+1)+1) ②my+Mid(s,x,1) ③s=Mid(s,1,x-1)+Mid(s,x+1,t-x)8.小明站在高楼上,拿一个质量为1千克的弹簧球做自由落体,由于受空气阻力的影响,弹簧球每次下落到地面和反弹到最高点的过程中都要损失10%的机械能,当机械能小于1焦耳时,认为小球已经静止了。为了模拟和计算弹簧球落地的次数,编写了VB程序,在文本框Text1中输入楼房的高度,单击“运行”按钮Command1,在列表框List1中输出每次反弹的高度,在文本框Text2中输出落地的次数。程序运行的界面如下图所示。为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click() Dim h As Single,m As Integer,g As Integer,n As Integer,e As Single m=1 g=10 n=1 h=Val(Text1.Text) e=m*g*h*0.9 ′弹簧球第一次落地时,损失10% 的能量 Do While____①____e=e*0.9 ′弹簧球在反弹过程中损失的能量h=Int(e/m/g*100)List1.AddItem”第”+Str(n)+”次反弹的高度”+Str(h)+”厘米”____②____n=n+1 Loop Text2.Text=____③____End Sub划线处代码为①__________________________________________________②______________________________________________________________③______________________________________________________________答案 ①e>=1 ②e=e*0.9 ③Str(n)9.1位十进制数转换为4位2421BCD码方法。若该数小于5,BCD码的最高位(左边第1位)值为0,并把该数转换成3位二进制数,不足3位补0。若该数大于等于5,则第1位值为1,并把该数减去5后的值转换成3位二进制数,不足3位补0。在文本框Text1中输入1位十进制数,单击“转换”按钮Command1后,在文本框Text2输出相应BCD码的。程序运行界面如图所示:(1)为实现上述功能,请在划线处填入合适的代码。Private Sub Command1_Click() Dim s As String,t As Integer,i As Integer,n As Integer,p As Integer ____①____t=Val(Text1.Text) If t<5 Then p=t Else p=t-2 i=0 Do While p<>0n=p Mod 2If n=1 Then s=”1”+s Else s=”0”+sp=p2i=i+1 Loop If____②____t<5 Then s=”0”+s Else s=”1”+s If i=0 Thens=Mid(s,1,1)+”000” ElseIf i=1 Then ____③____s=Mid(s,1,1)+”00”+Mid(s,2,1) ElseIf i=2 Thens=Mid(s,1,1)+”0”+Mid(s,2,2) End IfText2.Text=sEnd Sub划线处代码为①________________________________________________②_____________________________________________________________③______________________________________________________________(2)若输入的十进制数为5,则相应的BCD码_________________________答案 (1)①t=Val(Text1.Text) ②t<5 ③s=Mid(s,1,1)+”00”+Mid(s,2,1) (2)1011课件18张PPT。第10节 循环结构算法实现—Do While语句1.Do While ____________ 语句块 Loop2.在Do While 循环中,先给循环变量赋初值,在循环体中改变__________的值,否则会造成死循环。3.中途退出Do While循环的语句是_________。条件表达式循环变量Exit Do所有的For循环均可以转换成Do While循环。For循环中的Next语句,相当于循环变量+Step值语句的作用,Do While循环中,在Loop语句的上方或者循环体内部往往有一条改变循环变量值的语句,否则会造成死循环。当循环次数不能确定时,或者当循环条件有两个或两个以上时,往往用Do While 循环。关键要找到循环的条件,当条件满足时,反复执行循环体语句。【例1】 第1天存1元,第2天存2元,第3天存4元,第4天存8元,以此类推。在文本框Text1中输入所需储蓄的金额,单击“计算”按钮Command1,在文本框Text2中输出至少所需天数。程序运行的界面如下图所示:程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim n As Integer,p As Single,t As Single p=Val(Text1.Text) t=1 n=0 ① Do While ② s=s+t ③ n=n+1 Loop Text2.Text=Str(n)End Sub划线处代码为①_____________________________________②_________________________________________________③_________________________________________________解析 本题考核的知识点是Do While循环的应用。通过输入、输出理解变量的含义,p是要达到的金额,n是所需天数。s=s+t,t是每天存的金额,s是总共存储的金额。循环的条件是存储金额没有达到预期金额。第1个t的值为1,因此s的初值为0。答案 ①s=0 ②s[方法与总结] 通过本题的练习,让学生理解什么时候用Do While循环,Do While 循环适合用于循环次数不确定的情况,要明确循环的条件及变量的含义,满足条件时,反复执行循环体语句。【变式训练】 某理财产品的月收益率为4.3%,现投资1万元,在文本框Text1中输入预期的本息合计金额(单位万元),单击“计算”按钮Command1,在文本框Text2中输出至少所需多少个月。程序运行的界面如下图所示:程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim n As Integer,p As Single,t As Single p=Val(Text1.Text) t=1 n=0 Do While ① t=t*(1+0.043) ② Loop Text2.Text=Str(n)End Sub划线处代码为①______________________________________②__________________________________________________解析 变量t表示要达到的金额,n是所需月份,循环的条件是本息和没有达到预期的金额。答案 ①tPrivate Sub Command2_Click() Dim je As Single,n As Integer,t As Single,i As Integer Dim rmb As Integer je=Val(Text1.Text) i=1:n=0:rmb=100 Do While ① If je>=rmb Then ② n=n+1 ElseList1.AddItem "面值"+Str(rmb)+"的张数为"+Str(n) ③ If i=2 Thenrmb=50 ElseIf i=3 Thenrmb=10 Elsermb=1 End If n=0End If Loop If n>0 Then List1.AddItem "面值"+Str(rmb)+"的张数为"+Str(n)End Sub划线处代码为①_______________________________________②___________________________________________________③___________________________________________________解析 本题考核的知识点是Do While循环的应用。je表示输入的金额,n出现在循环体中,因此是每一种币种的数量。循环的条件是金额全部兑换成人民币,就是金额不为0的时候。答案 ①je>0或 je<>0 ②je=je-rmb ③i=i+1[方法总结] 要牢牢把握循环的条件,什么时候循环。如果不能很好地找出来,那么可以从反面来理解,就是什么时候不循环。【变式训练】 用物理天平测量物体的质量。假设有质量为500、100、20和10克砝码若干,在文本框Text1输入物体的质量,单击“计算”按钮Command1,在列表框List1中输出每次所加砝码,在文本框Text2中输出所加砝码总数,程序运行界面如图所示。程序代码如下,请将空白处填写完整。Private Sub Command1_Click() Dim n As Integer,t As Integer,zl As Integer,fama As Integer zl=Val(Text1.Text) n=0:i=1:fama=500 Do While zl>0If ① Then List1.AddItem "重量"+Str(zl)+"。所加砝码"+Str(fama) zl=zl-fama ② Else i=i+1 If i=2 Thenfama=100 ElseIf i=3 Thenfama=20 Elsefama=10 End IfEnd If Loop Text2.Text=Str(n)End Sub划线处代码为①_______________________________________②___________________________________________________解析 理解变量的含义,zl输入的物体质量,n所加砝码数量,i表示砝码的种类,fama表示砝码的质量。如果加上砝码后,质量减去所加砝码还没有达到0,反复加砝码。如果当前质量大于等于当前种类砝码质量,可以加,否则加下一种砝码。答案 ①zl>=fama ②n=n+1 展开更多...... 收起↑ 资源列表 第二章 第10节.doc 第二章 第10节.ppt