第三章循环程序.

上传人:汽*** 文档编号:562856496 上传时间:2023-06-25 格式:DOC 页数:16 大小:273KB
返回 下载 相关 举报
第三章循环程序._第1页
第1页 / 共16页
第三章循环程序._第2页
第2页 / 共16页
第三章循环程序._第3页
第3页 / 共16页
第三章循环程序._第4页
第4页 / 共16页
第三章循环程序._第5页
第5页 / 共16页
点击查看更多>>
资源描述

《第三章循环程序.》由会员分享,可在线阅读,更多相关《第三章循环程序.(16页珍藏版)》请在金锄头文库上搜索。

1、第三章循环程序在编程中经常遇到需要多次规律相同的重复处理,这就是循环问题。Turbo Pascal采用不同的循环方式来实现,常用的环循有三种:for、repeat、while.第一节 for循环for循环是一种自动计数型循环。例3.1试打印出120的自然数。解: 用a代表120各数,同时也用a兼作计数,以控制循环次数; 让a从1开始; 输出a; a自动计数(加1),如果未超越所规定的循环范围则重复步骤,否则结束循环。Pascal 程序:Program Exam12 ;Var a: byte;Begi nfor a:=1 to 20 doWritel n (a);ReadlnEnd.程序中 fo

2、r 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程序改为倒计数(递减)循环,则输出201的自然数数:Program Exam31 ;Var a: byte;Begi nfor a:=20 dow nto 1 doWriteln(a);R

3、eadlnEnd.例3.2打印出30至60的偶数。解:方法一:=1 * GB3设a表示30至60的所有的数,可用for循环列出; =2 * GB3用式子a mod 2=0 筛选出其中的偶数并输出。Pascal 程序:Program ex32;Var a: in teger;Begi nFor a := 30 to 60 doIf (a mod 2=0) then writel n( a);Readl n;End.在这个程序中,for循环后的循环语句是一个条件分支语句。方法二:我们知道,在式子 a=2*n中,若n取自然数1、2、3、,时,则a依次得到 偶数2、4、6、。因此要想得到30至60的偶

4、数,就可以让上面式子中的 n取15至30的自然 数就可以了。所以本题还可以按以下步骤处理:=1 * GB3设n表示15至30的所有自然数,可用for循环列出;=2 * GB3用式子a := 2*n 求出其中的偶数;=3 * GB3将结果输出至屏幕。Pascal 程序:Program ex32;Begi nFor n := 15 to 30 doBegi n a := 2*n; Writel n(a);En d;Readl n;End.例3.3自然数求和:编一个程序,求从1至100的自然数的和。解:令S= 0; 令a表示1至100的自然数,用循环列出; 将这些自然数用公式 S:=S+a逐一累加到

5、S中去;=4 * GB3 循环结束后,S即为1至100的自然数的和,输出即可。Pascal 程序:Program ex33;var s,a : in teger;Begi nS := 0;For a := 1 to 100 doS := S+a;Writeln( S= ,S);Readl n;End.例3.4 个两位数x,将它的个位数字与十位数字对调后得到一个新数y,此时y恰好比x大36,请编程求出所有这样的两位数。解: 用for循环列举出所有的两位数,x为循环变量; 用公式a:= x div 10分离出x的十位数字; 用公式b:= x mod 10分离出x的个位数字; 用公式y:= b*10

6、+a合成新数y;=5 * GB3 用式子y-x=36筛选出符合条件的数 x并输出。Pascal 程序:Program ex34;BeginFor x := 10 to 99 doBegina := x div 10;b := x mod 10;y := b*10+a;if y-x=36 then write In (x);En d;Readl n;End.例3.5把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方, (30+25) 2=3025计算结果又等于原数。求所有符合这样条件的四位数。解:设符合条件的四位数为N,它应当是一个完全平方数,用(a*a)表示。 为了确保N=(a

7、*a)在四位数(10009999)范围内,可确定 a在3299循环; 计算N=a*a ;将四位数N拆分为两个数n1和n2; 若满足条件(n1+n2)*(n 1+ n2) = N就输出 N。Pascal 程序:Program Exam35 ;Var N , a, x, n1, n2: Integer ;Begi nfor a:=32 to 99 dobeginN:=a*a ;n1:= N div 100 ;拆取四位数的前两位数n2:= N-n1*100 ;拆取四位数的后两位数X:=n1+ n2 ; if x*x=N then writeln (N);en d;ReadlnEnd.例3.6用“ *

8、”号打印出如下的长方形图案。*解: 上面给出的图例共有4行,我们可以用一个循环控制行的变化;在每行中又有9列,我们可以在前面控制行的循环中再套一个循环来控制列的变化。Pascal 程序:Program ex36;Begi n外循环控制行的变化内循环控制列的变化输出一行的* ”后换行For a := 1 to 4 doBegi nFor b := 1 to 9 do write( * );Writel n;En d;Readl n;End.for a将内循程序中的循环对于 a的每个值都包含着一个b=(19)次的内循环。外循环环for b包含在里面,称为for循环的嵌套。嵌套形式如:for a:=

9、n1 to n2 dofor b:=m1 to m2 do 循环体语句;例3.7打印出九九乘法表解:设a为被乘数,范围为19);b为乘数,范围为1a;乘式为a*b=(a,b的乘积),则a=1b=1丿a1*1=1a=2b=1丿a2*1=22*2=4a=3b=1丿a3*1=33*2=63*3=9a=4b=1丿a4*1=44*2=84*3=134*4=16a=9b=12 a9*1=99*2=189*9=81从上面分解的横仃中看到共有9行,这里的“行”数变化与a的变化从19相同,可用a控制行”的循环;每“行”里面相乘的次数与b的范围相关,由b控制每“行”里面的“内部”循环;内循环被包含在最里层,执行完

10、每“行”的内部循环,就到下一“行”去执行新“行”里面的循环,每“行”都拥有形式相同的(b=1a )内循环。即每到一“行”都要执行该“行”的内循环。这里所指的“行”可以理解成抽象的行, 不一定是实际上具体对应的行,可以是一个处理“块”。Pascal 程序:Program Exam37;Var a, b: byte;Begi nfor a:=1 to 9 do外循环for b:=1 to a do内循环write(a, * , b, = , a*b, :3);writel nen d;ReadlnEnd.根据这种格式还可以实现多层循环嵌套,例如:for a:=n1 to n2 dofor b:=m

11、1 to m2 dofor c:=k1 to k2 do循环体语句;例3.8从七张扑克牌中任取三张,有几种组合方法?请编程输出所有组合形式。解:设每次取出三张分别为a,b, c。用三重循环分别从17的范围里取值;为了排除取到重号,用(a-b)*(b-c)*(a-c) 0 进行判断。Pascal 程序:program Exam38;const n=7;var a,b,c,t: in teger;Begi nt:=0;for a:=1 to n dofor b:=1 to n dofor c:=1 to n doif (a-b) * (b-c) * (a-c) 0 the nBegininc (t

12、);write In (a:3, b:3, c:3)En d;writel n (total:, t :5);readlnEnd.例3.9数学上把除了 1和它本身,没有别的数能够整除它的自然数叫做素数(或质数)。现在由键盘输入一个自然数N,编程判断N是否是素数,是则输出“ Yes”,否则输出“ No”。解:根据定义,对于给定的自然数N,只需判断除1和它本身外,还有没有第三个自然数即可。 令K从1循环至N ; 根据N mod K是否为0可统计K的约数的个数; 若N的约数的个数超过2个,则判定N不是素数。Pascal 程序:Program Exam39;Var n, m, k, t: intege

13、r;Begi nwrite( N=);ReadL n(N);t:=0 ;for k:=1 to N do外循环if N mod k=0 then t :=t+1;如果N是奇数if t2 then writel n( No)else write ln(Yes);Readl n;End.程序中的变量yse为布尔(或逻辑)类型(Boolean)。布尔值只有两个:True(真)False(假)布尔值与条件判断结果为真(条件成立)或为假(条件不成立)的作用相同,常用于条件语句和循环语句中。上面程序中用if yes and (t mod 7=0) then writeln ;实现每行打印七个素数换行,程序

14、中布尔变量yes为真,在逻辑上表示是素数;关系式(t mod 7=0)的值为真时,表示该行输出 素数巳是7个;用 and将这两个“条件”连起来是作一种布尔(逻辑)运算。Pascal共有四种逻辑运算符: and (与)两条件都为True时,其结果值为 True;否则为False; or (或)两条件中只要有一个为True ;其结果值为True ;否则为False; xor (异或)两条件的逻辑值不相同时,其结果值为True;否则为False; not (非) 条件为True时,其结果值为 False;否则为True;(取反)习题3.1:1. 打印出1至20的平方数表。2. 打印出100至200之间的奇数。3. 鸡兔同笼(用for循环程序完成)4. 一辆快车和一辆

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号