名称 | 信息技术基础第二章:第10节 循环结构算法实现—Do While语句课件(18张幻灯片)+试题 | | |
格式 | zip | ||
文件大小 | 5.1MB | ||
资源类型 | 教案 | ||
版本资源 | 通用版 | ||
科目 | 信息技术(信息科技) | ||
更新时间 | 2019-05-23 14:20:53 |
[方法与总结] 通过本题的练习,让学生理解什么时候用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中输入一个金额,按最大票面优先兑换的原则,输出相应的人民币及张数。程序运行界面如下图所示: 2.在文本框Text1中输入一个十进制整数,在文本框Text2中输入一个进制数R(2<=R<=16),单击“计算”按钮Command1,在文本框Text3中输出转换后的数。程序运行界面如下图所示 [方法与总结] 通过本题的练习,让学生理解什么时候用Do While循环,Do While 循环适合用于循环次数不确定的情况,要明确循环的条件及变量的含义,满足条件时,反复执行循环体语句。【变式训练】 某理财产品的月收益率为4.3%,现投资1万元,在文本框Text1中输入预期的本息合计金额(单位万元),单击“计算”按钮Command1,在文本框Text2中输出至少所需多少个月。程序运行的界面如下图所示:程序代码如下,请将空白处填写完整。 Private Sub Command2_Click()
程序代码如下,请将空白处填写完整。
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
Else
List1.AddItem ”面值”+Str(rmb)+”的张数为”+Str(n)
____③____
If i=2 Then
rmb=50
ElseIf i=3 Then
rmb=10
Else
rmb=1
End If
n=0
End 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>0
If ____①____ Then
List1.AddItem ”重量”+Str(zl)+”。所加砝码”+Str(fama)
zl=zl-fama
____②____
Else
i=i+1
If i=2 Then
fama=100
ElseIf i=3 Then
fama=20
Else
fama=10
End If
End If
Loop
Text2.Text=Str(n)
End Sub
划线处代码为①__________________________________________________
②______________________________________________________________
解析 理解变量的含义,zl输入的物体质量,n所加砝码数量,i表示砝码的种类,fama表示砝码的质量。如果加上砝码后,质量减去所加砝码还没有达到0,反复加砝码。如果当前质量大于等于当前种类砝码质量,可以加,否则加下一种砝码。
答案 ①zl>=fama ②n=n+1
1.有如下程序段。
x=0:n=0
Do While x<50
x=(x+2)*(x+3)
n=n+1
Loop
Text1.Text=Str(n)
Text2.Text=Str(x)
运行该程序后,文本框Text1、Text2上分别显示的是________、________。
解析 通过表格的形式来分析变量的值。
x<50?
x
n
初始值
0
0
True
6
1
True
72
2
False
答案 2 72
2.在文本框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 Then
s=0
temp=n
Do While ____①____
t=temp Mod 10
s=s+t^4
____②____
Loop
If n=s Then
Text2.Text=”是玫瑰花数”
Else
Text2.Text=”不是玫瑰花数”
End If
Else
Text2.Text=”输入的数不是4位数!”
End If
End Sub
划线处代码为①__________________________________________________
②_______________________________________________________________
解析 本题考核的知识点是对一个数各个位数进行分解。循环的条件是只要下一次分离的数不为0,继续分离。理解变量含义,n是输入的数,从输出来看,n要和4次方的和比较,因此用一个变量temp来代替n进行分解,t是分解后的个位数,玫瑰花数的条件是各个数的4次方和,分离出一个数后,要把该数去除。
答案 ①temp>0 或temp<>0 ②temp=temp[ST0
3.对于任意一个正整数,如果是奇数,则乘以3加1,如果是偶数,则除以2,得到的结果再按上述的规则重复处理,最终总能够得到1。在文本框Text1中输入一个正整数,单击“计算”按钮Command1,在列表框List1中输出得到结果1的计算过程,在文本框Text2中输出所需步骤。程序运行界面如下。
程序代码如下,请将空白处填写完整。
Private Sub Command1_Click()
Dim n As Integer,s As String
n=Val(Text1.Text)
t=0
Do While ____①____
s=Str(n)+”→”
If ____②____Then
n=n*3+1
Else
n=n 2
End If
List1.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+1
4.在文本框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=n
5.判断是否是回文。一个字符串,从左到右读和从右到左读是完全一样的。在文本框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 i
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-1
6.产生降序随机数列,在文本框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”Then
s1=ch+s1
Else
newch=____②____
s1=””
End If
____③____
Loop
If s1<>”” Then newch=newch+s1
Text2.Text=newch
End Sub
划线处代码为①____________________________________________________
②________________________________________________________________
③________________________________________________________________
答案 ①s=Text1.Text ②newch+s1+ch ③i=i+1
8.产生回文字母。在文本框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=1
s3=Mid(s1,i,1)
For j=i-1 To n Step -1
s3=____②____
Next j
Label2.Caption=____③____
End Sub
划线处代码为①___________________________________________________
②_______________________________________________________________
③_______________________________________________________________
答案 ①i=Len(s1)+1或i>Len(s1)或i>52 ②Mid(s1,j,1)+s3+Mid(s1,j,1) ③s3
9.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) Then
Label2.Caption=”输入的数据不符合要求!”
Exit Sub
End If
For j=1 To 2*i-1
If j<=i Then
s2=s2+Mid(str1,j,1)
Else
s2=____③____
End If
Next j
Label2.Caption=s2
End 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<=n
x=Int(Rnd()*22+2)
____①____
If c1<>”p” Then
c2=____②____
List1.AddItem ”顾客”+c1+”所中奖品为:”+c2
i=i+1
s1=Mid(s1,1,x-1)+”p”+Mid(s1,x+1,24-x)
End If
Loop
End 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)字母p
11.在文本框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 Then
s=”000”+s
ElseIf n Mod 4=2 Then
s=”00”+s
ElseIf n Mod 2=3 Then
s=”0”+s
End If
sum=0
For i=1 To Len(s)
ch=Mid(s,i,1)
t=3-(i-1)Mod 4
sum=____①____
If i Mod 4=0 Then
____②____
sum=0
End If
Next i
Label2.Caption=”二进制数”+s+”转换为十六进制的值为”+s1
End 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/i
i=i+1
____②____
Loop
Text2.Text=Str(n)
End Sub
划线处代码为①____________________________________________________
②________________________________________________________________
解析 循环的条件是累加的和不超过输入的数。理解变量的含义,i表示每一项的分母,s表示累加的和,n表示已经所加的项数。
答案 ①s
程序代码如下,请将空白处填写完整。
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 Then
Do While n>0
t=____①____
s=____②____
____③____
Loop
Text3.Text=s
Else
Text3.Text=”进制输入有误”
End If
End Sub
划线处代码为①___________________________________________________
②_______________________________________________________________
③_______________________________________________________________
解析 循环条件是只要被除数不为0,继续除。题解变量的含义,n是要转换的数,t除r的余数,s是转换后的进制数。每次除后,除数作为新的被除数。
答案 ①n Mod r ②Mid(ch,t+1,1)+s ③n=n r
3.“质因数分解”的程序,程序的功能如下:在文本框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+1
End If
Loop
Text2.Text=Str(t)
End Sub
划线处代码为①___________________________________________________
②_______________________________________________________________
③________________________________________________________________
解析 循环的条件是只要分解后的数不为1。变量的含义,n是待分解的数,i是质因子,最小的质因子是2,如果能被该数整除,整除后的余数作为新的分解数,若不能整除,找下一个因子。
答案 ①2 ②n<>1或n>1 ③n=n/i或n=ni
4.用递减法计算两个数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>1
If ____②____ Then
Exit Do
Else
d=d-1
End If
Loop
Text3.Text=Str(d)
End Sub
划线处代码为①___________________________________________________
②_______________________________________________________________
解析 循环的条件是从两个数中较小数开始找,如果都能被两个数整除,则他就是最大公约数。理解变量的含义,m、n是输入的两个数,同时保证m>n,d是尝试的最大公约数。也可以改为下列结构。
Do While m Mod d<>0 And n Mod d<>0
d=d-1
Loop
当最后d减至1时,总会除通。
答案 ①m
程序代码如下,请将空白处填写完整。
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+1
ch=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 ②s
7.对英文字母进行加密的规则:用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<=26
t=63-i
x=____①____
my=____②____
List1.AddItem Str(x)+s
If x=1 Then
s=Mid(s,2,t-1)
ElseIf x=t Then
s=Mid(s,2,t-1)
Else
____③____
End If
i=i+1
Loop
Text1.Text=my
End 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<>0
n=p Mod 2
If n=1 Then s=”1”+s Else s=”0”+s
p=p2
i=i+1
Loop
If____②____t<5 Then s=”0”+s Else s=”1”+s
If i=0 Then
s=Mid(s,1,1)+”000”
ElseIf i=1 Then
____③____s=Mid(s,1,1)+”00”+Mid(s,2,1)
ElseIf i=2 Then
s=Mid(s,1,1)+”0”+Mid(s,2,2)
End If
Text2.Text=s
End 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 ____________
语句块
Loop
2.在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
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
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
Else
List1.AddItem "面值"+Str(rmb)+"的张数为"+Str(n)
③
If i=2 Then
rmb=50 ElseIf i=3 Then
rmb=10
Else
rmb=1
End If
n=0
End 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>0
If ① Then
List1.AddItem "重量"+Str(zl)+"。所加砝码"+Str(fama)
zl=zl-fama
② Else
i=i+1
If i=2 Then
fama=100
ElseIf i=3 Then
fama=20
Else
fama=10
End If
End If
Loop Text2.Text=Str(n)
End Sub
划线处代码为①_______________________________________
②___________________________________________________
解析 理解变量的含义,zl输入的物体质量,n所加砝码数量,i表示砝码的种类,fama表示砝码的质量。如果加上砝码后,质量减去所加砝码还没有达到0,反复加砝码。如果当前质量大于等于当前种类砝码质量,可以加,否则加下一种砝码。
答案 ①zl>=fama ②n=n+1