循环结构1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一节for 循环

for循环是一种自动计数型循环。

[例3.1] 试打印出1~20的自然数。

解:①用a代表1~20各数,同时也用a兼作计数,以控制循环次数;

②让a从1开始;

③输出a;

④a自动计数(加1),如果未超越所规定的循环范围则重复步骤③,否则结束循环。

Pascal程序:

Program Exam12;

Var a: byte;

Begin

for a:=1 to 20 do

Writeln (a);

Readln

End.

程序中for a:=1 to 20 do Writeln (a);是for循环语句。

for 循环语句有两种格式:

(1) for循环变量:=初值To 终值do 语句;

(2) for循环变量:=初值downto 终值do 语句;

第(1)种格式的初值小于等于终值,循环变量值按自动加1递增变化;

第(2)种格式的初值大于或等于终值,循环变量值按自动减1递减变化。for 循环是(以递增1或以递减1) 计数型循环。

比如: 若将[例3.1]程序改为倒计数(递减)循环,则输出20~1的自然数数:

Program Exam31;

Var a: byte;

Begin

for a:=20 downto 1 do

Writeln(a) ;

Readln

End.

[例3.2]打印出30至60的偶数。]

解:

方法一:

= 1 \* GB3 ①设a表示30至60的所有的数,可用for循环列出;

= 2 \* GB3 ②用式子 a mod 2=0筛选出其中的偶数并输出。

Pascal程序:

Program ex32;

Var a : integer;

Begin

For a := 30 to 60 do

If (a mod 2=0) then writeln(a);

Readln;

End.

在这个程序中,for循环后的循环语句是一个条件分支语句。

方法二:我们知道,在式子a=2*n中,若n取自然数1、2、3、…,时,则a依次得到偶数2、4、6、…。因此要想得到30至60的偶数,就可以让上面式子中的n取15至30的自然数就可以了。所以本题还可以按以下步骤处理:

= 1 \* GB3 ①设n表示15至30的所有自然数,可用for循环列出;

= 2 \* GB3 ②用式子 a := 2*n求出其中的偶数;

= 3 \* GB3 ③将结果输出至屏幕。

Pascal程序:

Program ex32;

Begin

For n := 15 to 30 do

Begin

a := 2*n;

Writeln(a);

End;

Readln;

End.

[例3.3]自然数求和:编一个程序,求从1至100的自然数的和。

解:①令S=0;

②令a表示1至100的自然数,用循环列出;

③将这些自然数用公式S:=S+a 逐一累加到S中去;

= 4 \* GB3 ④循环结束后,S即为1至100的自然数的和,输出即可。

Pascal程序:

Program ex33;

var s,a : integer;

Begin

S := 0;

For a := 1 to 100 do

S := S+a;

Writeln(‘S=’,S);

Readln;

End.

[例3.4]一个两位数x,将它的个位数字与十位数字对调后得到一个新数y,此时y恰好比x大36,请编程求出所有这样的两位数。

解:①用for循环列举出所有的两位数,x为循环变量;

②用公式a:= x div 10分离出x的十位数字;

③用公式b:= x mod 10分离出x的个位数字;

④用公式y:= b*10+a合成新数y;

= 5 \* GB3 ⑤用式子y-x=36筛选出符合条件的数x并输出。

Pascal程序:

Program ex34;

Begin

For x := 10 to 99 do

Begin

a := x div 10;

b := x mod 10;

y := b*10+a;

if y-x=36 then writeln(x);

End;

Readln;

End.

[例3.5] 把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方,(30+25)2=3025计算结果又等于原数。求所有符合这样条件的四位数。

解:设符合条件的四位数为N,它应当是一个完全平方数,用(a*a)表示。

①为了确保N=(a*a)在四位数(1000~9999)范围内,可确定a在32~99循环;

②计算N=a*a;将四位数N拆分为两个数n1和n2;

③若满足条件(n1+n2)*(n1+n2)=N 就输出N 。

Pascal程序:

Program Exam35;

Var N,a,x,n1,n2: Integer;

Begin

for a:=32 to 99 do

begin

N:=a*a;

n1:= N div 100;{拆取四位数的前两位数}

n2:= N-n1*100;{拆取四位数的后两位数}

X:=n1+n2;

if x*x=N then writeln (N);

end;

Readln

End.

[例3.6]用“*”号打印出如下的长方形图案。

*********

*********

*********

*********

解:①上面给出的图例共有4行,我们可以用一个循环控制行的变化;

②在每行中又有9列,我们可以在前面控制行的循环中再套一个循环来控制列的变化。

Pascal程序:

Program ex36;

相关文档
最新文档