ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:47.37KB ,
资源ID:4214004      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4214004.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(9 循环结构.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

9 循环结构.docx

1、9 循环结构循环结构循环结构就是重复结构,是指某些语句需要重复执行而设定的程序结构。在 PASCAL语言中,共有三种重复结构语句,功能各有不同。直到循环(REPEAT-UNTIL)类型直到循环语句的语法格式是:repeat语句序列; (循环体) until 布尔表达式; 其作用是:重复执行语句序列(循环体),直到布尔表达式的值为 TRUE为止。即,当执行完一次语句序列后,布尔表达式的值已经为 TRUE了,这时循环将不会再被执行,而转向执行 UNTIL语句以下的语句。例:计算 M=1+2+3+4+,直到 M的值大于 5050为止。 例: 5、 1var m,I:integer;begin m:=

2、0; I:=0; Repeat I:=I+1; M:=m+I; Until m5050; Writeln(I, ,m);End.在上述程序中,我们使用了 PASCAL中的两个作用强大的概念:累加和循环。累加:我们在上述程序中没定了两个累加器: I, M。累加器初值我们在第一句中设定了为 0,之后每次运行一次 I: =I+1后, I的值就比原来大 1。每运行一次 M: =M+I后, M的值就被 M+I所替代。循环:这里我们使用的是直到循环,即重复执行循环体中的两个语句,直到 M5050这个条件满足为止(即这个布尔表达式的值为 TRUE为止)。上述程序运行后,会在输出屏幕上显示两个值: 101 5

3、151。即当 I的值为 101时,这时所算得的 M的值为 5151。亦即, 1+2+3+ 101=5151。象上述这种 X=1+2+3+这种加法,我们就把它叫累加,这里的 X就是累加器,一般初值为 0。而 N=1*2*3*4*5*6*这种乘法我们把它叫累乘,这里 N就是累乘器,一般初值为 1(为什么?)。一般的: 1*2*3* N,我们把这个式子的结果叫做 N的阶乘( N!)。如: 4! =1*2*3*4。例:计算 ! 例 5、 2var I:integer; x:longint;begin I:=0; X:=1; Repeat I:=I+1; X:=x*I; Until I=18; Writ

4、eln(x);End.当程序开始时, I的初值被定为 0, X的初值被定为 1(累乘器)。然而开始进入循环,每次 I的值比原来增加 1,然后再乘进 X中去,直到 I等于 20时,最后一次把 I乘进 X后,这时 I=20这个条件已经满足( I=20的值已经为 TRUE),所以循环就被退出,而程序转向执行 UBTIL以后的语句: WRITELN( X);。请大家想一想,为什么 X要定义为 LONGINT型。练习:1、输入一个正整数N,把它分解成质因子相乘的形式。 如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19 (提示:设因子为I,从2开始到N,让N重复被I除,如果能整除,则用商

5、取代N,I为一个因子;如果不能整除,再将I增大,继续以上操作,直到I等于N。)当(WHILE)语句当语句的语法格式是:while 布尔表达式 do begin语句序列;(循环体)end; 其作用是,当布尔表达式的值为 TRUE时,才会运行语句序列(循环体),否则循环将不会被执行,即从循环头部就退出,而转向执行 END后的语句。例:计算 ! 例 5、 3var I:integer; x:longint;begin I:=0; X:=1; While In then x:=n else x:=m; While (n mod x0) or (m mod x0) do begin x:=x-1; En

6、d; Writeln(x);End. 上述程序如果改用 REPEAT语句来做的话,程序为:uses crt;var m,n,x:integer;begin write(Please input 2 numbers:) Readln(m,n); If mn then x:=n+1 else x:=m+1; Repeat X:=x-1; Until (m mod x=0) and (n mod x=0); Writeln(x);End.请大家考虑上述两个程序为何会有这样有不同之处。练习题1、计算下列式子的值: (1)1+3+99 (2)1+2+4+8+128+2562、输入一个整数,计算它各位上数

7、字的和。(注意:是任意位的整数)3、输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。)4、求两个数的最小公倍数和最大公约数。(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。)5、编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字1代替字母A,数字2代替字母B,26代替字母Z,如遇空格则打印一个星号*,英文句子以.结束。6、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a3+b3+c3=abc,则abc是水仙花数。 7、“百钱买百鸡”是我国

8、古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有鸡兔同笼问题。FOR循环语句 前面所计的两个语句都是在未知循环次数的情况下而用的循环语句,但在程序中,如果我们已经知道循环的次数而来编程序的话,就可以使用 FOR循环语句,这也是 PASCAL及其它高级语言中用得最多的语句。其语法格式有两种,如下:(1) 增量为 1:for 变量名:=初值 to 终值 do begin语句序列(循环体);end;(2) 增量为 -1:for 变量名:=初值 downto 终值 do begin语

9、句序列(循环体);end;变量名的类型由程序头部中定义,而其初值、终值必须和它是同一类型。该变量的类型是能是有序数据类型。上述两种格式都是用变量的初值与终值来规定循环的次数。如以下两个小程序:Var I:integer;BeginFor I:=1 to 5 do beginWrite(I);End;End.运行结果:12345Var I:integer;BeginFor I:=5 downto 1 do beginWrite(I);End;End.运行结果:54321由上可以看出 FOR循环的作用。例 5、 5:从键盘输入一个字符串,把它按正序及逆序分别输出:uses crt;var s:st

10、ring;l,I:integer;beginclrscr;write(Please input the string:);readln(s);l:=length(s);for I:=1 to l do beginwrite(sI);end;writeln; for I:=l downto 1 do beginwrite(sI);end;end.例 5、 6计算 uses crt;var s,a:integer;beginclrscr;s:=0;for a:=1 to 10 do begins:=s+a*a;end;writeln(s);end.例 5、 7:计算: 1+3+5+7+ 101的值

11、:uses crt;var m,n:integer;beginclrscr;m:=0;for n:=0 to 50 do beginm:=m+(2*n+1);end;writeln(m);end.请大家注意上述程序中的几个小技巧,一个是 FOR N: =0 TO 50,共循环 51次;一个是 M: =M+( 2*N+1),其是的 2*N+1得到的是一序列的奇数。多重循环语句 多重循环语句即循环嵌套,也就是一个循环语句的循环体中还有循环语句。例 5、 8编程序打印九九乘法表:uses crt;var I,j:integer;beginclrscr;for I:=1 to 9 do beginfo

12、r j:=1 to 9 do beginwrite(j:1,*,i:1,=,I*j:2);end;writeln;end;end.运行结果:1*1= 12*1= 23*1= 34*1= 45*1= 56*1=67*1= 78*1= 89*1= 91*2=22*2= 43*2= 64*2= 85*2=106*2=127*2=148*2=169*2=181*3=32*3= 63*3= 94*3=125*3=156*3=187*3=218*3=249*3=271*4=42*4= 83*4=124*4=165*4=206*4=247*4=288*4=329*4=361*5=52*5=103*5=154

13、*5=205*5=256*5=307*5=358*5=409*5=451*6=62*6=123*6=184*6=245*6=306*6=367*6=428*6=489*6=541*7=72*7=143*7=214*7=285*7=356*7=427*7=498*7=569*7=631*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=649*8=721*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81注意:循环有嵌套时,必须分清层次,切不可把循环进行交叉。例 5、 9编程序分别打印以下三图:(1)Uses

14、 crt;Var I,j:integer;BeginClrscr;For I:=1 to 5 do beginFor j:=1 to 5 do beginWrite(*);End;Writeln;End;End.(2)Uses crt;Var I,j:integer;BeginClrscr;For I:=1 to 5 do beginWrite( :20+i);For j:=1 to 5 do beginWrite(*);End;Writeln;End;End.(3)Uses crt;Var I,j:integer;BeginClrscr;For I:=1 to 5 do beginWrite

15、( :20-I);For j:=1 to 5 do beginWrite(*);End;Writeln;End;End.请大家注意看清上述三个小程序,其功能是分别打印出上述三个由“ *”组成的小图形。三个图形的不同之处是:第一个直上直下,是个矩形;第二个是左斜的平行四边形;第三个是右斜的平行四边形。所以三个对应的程序也就有所不同,第( 2)、( 3)个程序比第( 1)个多了一句,即显示红色的那一句。这两句的作用是使每一行开头打印几个空格,即让图形左或右斜。 WRITELN的作用是打印完一行后换行。例 5、 10编程打印下列图形:Uses crt;Var I,j:integer;BeginClr

16、scr;For I:=1 to 5 do beginWrite( :20-I);For j:=1 to 2*I-1 do beginWrite(I:1);End;Writeln;End;End.清屏打印每一行前的 20-I个空格,这样每行都比上一行左移每一行打印 2*I-1列打印该行行数例 5、 11打印 1 100间的所有素数:素数,即为除了 1和它本身外没有另外的因数的整数。所以我们判断一个数 N是否素数,可以用 2至 N-1所有数去除 N,如果没有一个数能被 N整除,则 N为素数。当然,其实我们可以不用用 2至 N-1这第多的数去除,而只需用 2至不大于 N的平方根的整数去除 N即可(为

17、什么)?这里我们的程序就用 2至 TRUNC( SQRT( N)来判断,到后面我们还会谈到:如果要判断一个数是否素数,可只用小于 TRUNC( SQRT( N)的所有素数去除即可。Var I,j:integer;P:boolean;BeginFor I:=2 to 100 do beginP:=true;For j:=2 to trunc(SQRT(I)) do beginIf I mod j=0 then p:=false;End;If p then write(I:5);End;End.循环从 2至 100再判断 I是否素数前,先把判断器 P的值设为 TRUE用 2至 trunc(SQRT

18、( I) )的数来除 I如果 I能整除 J,则 P的值改为 FALSE如果 P的值仍为 TRUE,则 I就是素数,打印出来例 5、 12以下是 A, B, C三人说的话:A:“ B在说谎”; B:“ C在说谎”; C:“ A、 B都在说谎”。现在问,到底谁说真话,谁说谎?分析: A、 B、 C三人,要么说谎,要么说真话,即三个的状态要么为 FALSE,要么为 TRUE,所以,可让 A、 B、 C三个变量进行循环,循环初值为 TRUE,终值为 FALSE。而三个人所说的话即为三个逻辑表达式,其值也为 TRUE或 FALSE,并且与 A、 B、 C的值是有关系的。 A、 B、 C三个所说的话转化为

19、逻辑表达式即为:A: B=FLASE;B: C=FALSE;C:( A=FALSE) AND ( B=FALSE)以上三个逻辑表达式的值中, TRUE的个数应该与 A、 B、 C三个变量中 TRUE的个数相同。并且,每一个变量的值应该与其对应的话的逻辑表达式的值相等。如: A应该等于( B=FALSE)这个逻辑表达式。程序如下:Var a,b,c:boolean;Begin For a:=false to true do begin For b:=false to true do begin For c:=false to true do begin If (a=(b=false) and (

20、b=(c=false) and (c=(a=false) and (b=false) then Begin Writeln(a:10,b:10,c:10); End; End;End; End;End.练习:1、计算下列式子的值: (1)1+2+100 (2)1+3+5+97+992、输入一个四位数,求它各位上数字的和。 3、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a3+b3+c3=abc,则abc是水仙花数。4、宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了

21、:第一格一粒,第二格两粒,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么?练习1、 随机产生一些1100之间的整数,直到产生的数为50为止。2、 计算11000之间能同时被3和5整除的整数的和。3、 打印下列图形:4、 一百匹马驮一百块瓦,一匹大马可以驮3块,一匹母马可驮2块,小马2匹可驮1块。试编程求需要各种马多少匹?5、 有三种纪念邮票,第一种每套一张售价2元,第二种每套一张售价4元,第三种每套9张售价2元。现用100元买了100张邮票,问这三种邮票各买几张?6、 赵、钱、孙、李、

22、周五人围着一张圆桌吃饭。饭后,周回忆说:“吃饭时,赵坐在钱旁边,钱的左边是孙或李”;李回忆说:“钱坐在孙左边,我挨着孙坐”。结果他们一句也没有说对。请问,他们在怎样坐的?7、找数。一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字之和不是质数。编程找出所有符合条件的三位数。注:1. 不能手算后直接打印结果。2. “质数”即“素数”,是指除1和自身外,再没有其它因数的大于1的自然数。8、选人。一个小组共五人,分别为A、B、C、D、E。现有一项任务,要他们中的3个人去完成。已知:(1)A、C不能都去;(2)B、C不能都不去;(3)如果C去了,D、E就只能去一个,且必

23、须去一个;(4)B、C、D不能都去;(5)如果B去了,D、E就不能都去。编程找出此项任务该由哪三人去完成的所有组合。9、输入一个字符串,内有数字和非数字字符。如A123X456Y7A,302ATB567BC,打印字符串中所有连续(指不含非数字字符)的数字所组成的整数,并统计共有多少个整数。10、A、B、C三人进入决赛,赛前A说:“B和C得第二,我得第一”;B说:“我进入前两名,丙得第三名”;C说:“A不是第二,B不是第一”。比赛产生了一、二、三名,比赛结果显示:获得第一的选手全说对了,获得第二的选手说对了一句,获得第三的选手全说错了。编程求出A、B、C三名选手的名次。11、甲、乙、丙、丁四人共

24、有糖若干块,甲先拿出一些糖分给另外三人,使他们三人的糖数加倍;乙拿出一些糖分给另外三人,也使他们三人的糖数加倍;丙、丁也照此办理,此时甲、乙、丙、丁四人各有16块,编程求出四个人开始各有糖多少块。12、截数问题: 任意一个自然数,我们可以将其平均截取成三个自然数。例如自然数135768,可以截取成13,57,68三个自然数。如果某自然数不能平均截取(位数不能被3整除),可将该自然数高位补零后截取。现编程从键盘上输入一个自然数N(N的位数12),计算截取后第一个数加第三个数减第二个数的结果。13、从键盘输入一段英文,将其中的英文单词分离出来:已知单词之间的分隔符包括空格、 问号、句号(小数点)和

25、分号。例如:输入:There are apples; oranges and peaches on the table.输出:thereareapplesorangesandpeachesonthetable14、山乡希望小学收到一箱捐赠图书,邮件上署名是“兴华中学高二班”,山乡希望小学校 长送来了感谢信,可是兴华中学高二年级有四个班,校长找来了四个班的班长,问他们是哪 个班做的这件好事。一班的班长说:“是四班做的。”二班的班长说:“是三班做的好事。”三 班的班长说:“不是我们班。” 四班的班长说:“三班的班长说的不对。” 四个班的班长都说不是自己班做的,这就难坏了校长,后来得知四个班的班长中

26、有两个 说得是真话,有两个没有说真话,请你利用计算机的逻辑判断编一个程序,找出究竟是哪个 班做了这件好事。不能手算后直接打印结果。15、A,B,C,D,E五个人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树丛中找地 方睡着了,日上三竿,E第一个醒来,他将鱼数了数,平分成五分,把多余的一条扔进河中, 拿走一份回家去了,D第二个醒来,他并不知道有人已经走了,照样将鱼平分成五分,又扔 掉多余的一条,拿走自己的一份,接着C,B,A依次醒来,也都按同样的办法分鱼(平分成 五份,扔掉多余的一条,拿走自己的一份),问五人至少合伙捕到多少条鱼。也许你能用数学办法推出鱼的条数,但我们的要求你编出一个程序,让计算机帮你算出鱼的总数。16、试编程找出能被各位数字之和整除的一切两位数。17、一个正整数的个位数字是6,如果把个位数字移到首位,所得到的数是原数的4倍,试编程找出满足条件的最小正整数。18、某本书的页码从1开始,小明算了算,总共出现了202个数1,试编程求这本书一共有多少页?19、从键盘上输入两个不超过32767的整数,试编程序用竖式加法形式显示计算结果。例如: 输入 123, 85显示: 123+ 85-208 20、有30个男人女人和小孩同在一家饭馆进餐,共花了五十先令,其中男宾3先令,女宾2先令,小孩1先令。试编程求出男人女人小孩各多少人?

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2