2.3.2 循
环
语
句
学案
[读教材·填要点]
1.For语句
(1)格式:
For循环变量=初始值To终值
循环体Next
(2)适用于预先知道循环次数的循环结构.
2.Do
Loop语句
(1)格式:
(2)适用于预先不知道循环次数的循环结构.
[小问题·大思维]
1.For语句与Do
Loop语句有什么区别?
提示:两种循环语句的区别是For语句是先从循环变量的初值开始执行第一次循环体,直到循环变量取到其终值结束循环,适用于预先知道循环次数的循环结构;而Do
Loop语句则是先判断条件,当条件为真时,执行循环体,否则结束循环,适用于那些预先不知道循环次数的循环结构.
2.何时才能用到循环语句?
提示:在问题处理中,经常要对某一步骤或若干步骤重复执行多次,即对不同的运算对象进行若干次的相同运算或处理,这种模式就对应程序设计中的循环结构,在算法中的循环结构就是由循环语句来实现的.
[研一题]
[例1] 画出计算12+32+52+…+9992的算法框图,并用For语句写出相应的程序.
[自主解答] 算法框图如下:
S=0
For i=1
To
999
step
2
S=S+i
i
Next
输出S.
[悟一法]
1.For语句适合预先知道循环次数的循环结构,利用For语句表示循环结构时首先要确定循环变量的初始值和终值,然后确定循环体.
2.在For循环语句中,我们默认循环变量每次的增量为1.如果需要考虑增量不为1的情况,需要使用参数Step.
例如,“输出1到100内的所有奇数”的算法语句为:
For
i=1
To
100
Step
2.
[通一类]
1.用For语句设计算法,计算3+6+9+…+150的值.
解:S=0
For i=1
To
50
S=S+3]
Next
输出S.
[研一题]
[例2] 设计一个求满足1+3+5+…+n>500的最小自然数n的算法框图,并用Do
Loop语句描述这个算法.
[自主解答] 算法框图如下:
Do
Loop语句
i=1
S=0
Do
S=S+i
i=i+2
Loop
While
S<=500
i=i-2
输出i
[悟一法]
Do
Loop语句,先执行一次循环体,若符合条件,继续执行循环体;当不符合条件时,跳出循环,执行Do
Loop语句后的语句.
[通一类]
2.将求1×2×3×4×5×6×7×8×9×10的程序补充完整:
a=10
b=1
Do
b=b
a
__(1)__
Loop
While
__(2)__
输出b
解:a的初始值为10,故循环体中的值应该逆减,即a从10减小到1,循环体的条件应为a≥1.
答案:a=a-1 a≥1
[研一题]
[例3] 用循环语句表示求a1,a2,a3,a4的最大值的一个算法.
[自主解答]
输入a1,a2,a3,a4;
M=a1,
i=2
Do
If
ai>M Then
M=ai
i=i+1
Else
i=i+1
End
If
Loop
While i<=4
输出M.
[悟一法]
循环语句格式严格、条件准确,不能有半点马虎,一点不对,全题皆错.当循环语句中有嵌套条件语句时要先确定外层的循环语句,再逐步确定内层的条件语句.
[通一类]
3.给出以下10个数:4,10,70,33,95,74,29,17,60,30.要求将大于40的数找出来,画出求解该问题的算法框图,并写出程序.
解:算法框图如图所示:
i=1
Do
输入x
If x>40 Then
输出x
End
If
i=i+1
Loop
While i<=10.
用基本语句写一个算法,计算2+4+6+…+20.
[解] 法一:用语句描述为:
i=2
S=0
Do
S=S+i
i=i+2
Loop
While i<=20
输出S.
法二:用语句描述为:
S=0
For i=2
To
20
Step
2
S=S+i
Next
输出S.
1.关于Do
Loop循环语句叙述正确的是( )
A.总是执行循环体
B.执行一次循环体
C.满足条件时执行循环体
D.遇到Do
Loop就结束
解析:对于Do
Loop循环语句,先执行循环体,再根据条件是否成立来确定执行循环体.
答案:C
2.下列程序输出的结果是( )
i=1
S=0
Do
S=S
2+1
i=i+1
Loop While i<=4
输出S.
A.3 B.7 C.15 D.19
解析:由程序语句可知,该循环体共循环4次,分别为S=2×0+1=1,S=2×1+1=3,S=2×3+1=7,S=2×7+1=15.
答案:C
3.下列问题可以用循环语句设计程序的有( )
①求1+3+32+…+39的和;
②比较a,b两个数的大小;
③对于分段函数,要求输入自变量,输出函数值;
④求平方值小于100的最大自然数.
A.0个
B.1个
C.2个
D.3个
解析:①④可以用循环语句设计程序;②③要用条件语句设计程序.
答案:C
4.给出下列方程,若运行程序后输出的结果是1
320,则循环执行的“条件”应为________.
i=12
S=1
Do
S=S
i
i=i-1
Loop
While条件
输出S
答案:i>=10
5.下面程序语句输出的S值是________.
i=1
S=0
For i=1 To 5
S=S+i
Next
输出S
解析:S=1+2+3+4+5=15.
答案:15
6.已知函数f(x)=,实数a1=f(1),a2=f(a1),…,an+1=f(an),试写出用循环语句表示的求a8的算法,并画出框图.
解:用语句描述为:
A=1
n=1
For n=1 To 8
A=A/(1+A)
Next
输出A.
框图:
一、选择题
1.以下程序
s=0
For x=-1 To 11
s=x
x
Next
输出s.
该程序输出结果是( )
A.-1
B.11
C.100
D.121
解析:由For语句的算法特点可知,s=11×11=121.
答案:D
2.下列程序的运行结果为( )
i=0
S=0
Do
i=i+1
S=S+i
Loop
While
S<=20
输出i
A.5
B.6
C.7
D.8
解:由于0+1+2+3+4+5=15,0+1+2+3+4+5+6=21,∴i=6.
答案:B
3.下列程序中的For语句终止循环时,S等于( )
S=1
For M=1
To
13
Step
3
S=S+M
Next
输出S.
A.1
B.5
C.10
D.35
解析:S=1+4+7+10+13=35.
答案:D
4.下列算法的运行结果是( )
S=0
For
i=1
To
5
S=S+1/i
Next
输出S.
A.
B.
C.
D.3
解析:本算法是求1++++的和.
答案:A
5.下列算法运行后的输出结果为( )
i=1
Do
i=i+2
S=3+2
i
I=i+1
Loop
While
i<8
输出S.
A.17
B.19
C.21
D.23
解析:这是用Do
Loop语句编写的算法,按Do
Loop语句的运行程序可知最后一次执行循环体时S=3+2×(7+2)=21.
答案:C
二、填空题
6.S=0
For
i=0
To
10
000
Step2
S=S+i
Next
输出S
则循环10次的结果是________.
解析:算法程序实际是在计算S=0+2+4+…+10
000如果循环10次,则有S=0+2+4+6+8+…+18=90.
答案:90
7.S=0
For
i=1
To
100
S=S+i
i
Next
输出S
则该语句的算法功能为______________.
解析:S=12+22+…+1002.
答案:计算12+22+…+1002的值
8.如图,把求+++…+的值的程序补充完整,则(1)____________;(2)____________.
i=1
S=0
Do
Loop
While
__(2)__
输出S
答案:(1)S=S+1/i
(i+3)
(2)i<=50
三、解答题
9.据下列框图写出对应算法语句.
解:S=0
i=1
Do
S=S+i
i=i+1
Loop
While
i<=1
000
输出S.
10.猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃前一天剩下的一半零一个,到第十天早上想吃时,见只剩一个桃子了,求第一天共摘了多少桃子?画出算法框图,并用语句描述.
解:算法框图如图所示.
程序如下:
s=1
For
i=1
To
9
s=2
(s+1)
Next
输出S