最新06第六课 循环结构程序设计(全课)解析_第1页
最新06第六课 循环结构程序设计(全课)解析_第2页
最新06第六课 循环结构程序设计(全课)解析_第3页
最新06第六课 循环结构程序设计(全课)解析_第4页
最新06第六课 循环结构程序设计(全课)解析_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六课循环结构程序设计概念n在程序设计中,经常需要将一些功能按一定要求反复执行多次,我们将这一过程称为循环。一个循环控制结构需指明以下三件事情中的两件:1、被重复执行的语句(循环体)2、是否重复的条件3、详细指明重复方式步长型循环(for语句)nfor 语句用来描述已知重复次数的循环结构。for 语句有两种形式:(1) for 循环变量:初值to终值do语句;(2) for 循环变量:初值downto终值do语句;第一种形式的for 语句是递增循环。首先将初值赋给控制变量,接着判断控制变量的值是否小于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值改为它的后继值,并重新判

2、断是否小于或等于终值。当控制变量的值大于终值时,退出for循环,执行for语句之后的语句。第二种形式的for 语句是递减循环。首先将初值赋给控制变量,接着判断控制变量的值是否大于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的前趋值,并重新判断是否大于或等于终值。当控制变量的值小于终值时,退出for循环,执行for语句之后的语句。说明n循环控制变量必须是顺序类型。例如,可以是整型、字符型等,但不能为实型。循环控制变量的值递增或递减的规律是:选用to则为递增;选用downto则递减。 循环体可以是一个基本语句,也可以是一个复 合语句。循环控制变量的初值和终值一经确定

3、,循环次数就确定了。但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。建议不要在循环体中随意修改控制变量的值。例:计算1+2+3+99+100的和nprogram jia; var i,n,sum:integer;begin sum:=0; for i:=1 to 100 do sum:=sum+i; writeln(sum); readln;end. 不允许在循环体内再对循环控不允许在循环体内再对循环控制变量赋值。制变量赋值。 na:=10;b:=50; for k:=a to b do begin k:=k+1;这一句是错误的!writeln (k); end; n当

4、循环初值或循环终值中包含变量时,允许在循环体内改变这些变量的值,并不改变原定的循环次数。例:a:=1;b:=10; for i:=a to b do begin a:=5;b:=4;end; 在上面例子中,a,b的值在循环的内部发生了变化,但并不影响循环的次数,依然是10次。 输出1100之间的所有偶数。 nvar i:integer;beginfor i:=1 to 100 do if i mod 2=0 then write(i:5);end. 思考:还有什么办法完成?求n!123n ,这里n不大于10。 nvar n,i : integer;i为循环变量s : longint;s作为累乘

5、器begin write(enter n=);readln(n);输入n s:=1; for i:=2 to n do从2到n累乘到s中 s:=s*i; writeln(n,!=,s);输出n!的值end. 循环嵌套 n当一个循环的循环体中又包含循环结构程序时,我们就称之为循环嵌套 。n求1!+2!+10!的值。分析:这个问题是求10自然数的阶乘之和,可以用for 循环来实现。程序结构如下:for n:=1 to 10 dobeginn!的值t累加n!的值tend显然,通过10次的循环可求出1!,2!,10!,并同时累加起来, 可求得s的值。而求t=n!,又可以用一个for循环来实现:程序n

6、program ex4_5;var t,s:real; i,j,n:integer;begins:=0;for n:=1 to 10 do begin t:=1; for j:=1 to n do t:=t*j; s:=s+t; end;writeln(s=,s:0:0);end.程序改进n program ex4_5;var t,s:real;i,j,n:integer;begins:=0;t:=1;for n:=1 to 10 dobegint:=t*n;s:=s+t;end;writeln(s=,s:0:0);end.例n一个炊事员上街采购,用500元钱买了90只鸡,其中母鸡一只15元,

7、公鸡一只10元,小鸡一只5元,正好把钱买完。问母鸡、公鸡、小鸡各买多少只?分析:设母鸡i只,公鸡j只,则小鸡为90-i-j只,则15*i+ 10* j+(90-i-j)*5=500,显然一个方程求两个未知数是不能直接求解。必须组合出所有可能的i,j值,看是否满足条件。这里i的值可以是0到33,j的值可以0到50。源程序 nprogramr ex4_6;var i,j,k:integer;beginfor i:=0 to 33 do for j:=0 to 50 dobegink:=90-i-j;if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);end

8、;end. 问题描述:求整数n的值,使 11/2+1/3+1/n的值不大于10。 for循环通常在已知循环次数的情况下使用,有时候我们无法预知循环次数的情况下,就无法用for循环来实现。当(while)语句其作用是,当布尔表达式的值为 true时,才会运行语句序列(循环体),否则循环将不会被执行,即从循环头部就退出,而转向执行 end后的语句2。 n当语句的语法格式是:while 布尔表达式 do begin语句序列;(循环体) end; 语句2程序框图n从框图中可以看出,要使用循环语句时,必须要确定循环体及条件(布尔表达式)两个重要因素,亦即首要考虑的是:我要重复执行哪些语句,我要重复到什么

9、时候为止!while语句的执行过程为:n判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;执行循环体语句(do后面的语句);返回步骤1;结束循环,执行while的下一个语句。n这里while和do为保留字,while语句的特点是先判断,后执行。 当布尔表达式成立时,重复执行do后面的语句(循环体)。while语句用于“当满足某一条件时进行循环”的情况,为了能使为了能使while重复能终止,循环前应给重复能终止,循环前应给循环控制变量赋上适当的值,循环体中一定要有影循环控制变量赋上适当的值,循环体中一定要有影响布尔表达式的操作,否则该循就是一个死循环。响布尔表达式的操作,否则该循就是

10、一个死循环。例:计算 18! x 例题n从键盘上输入两个整数 m, n,求它们的最大公约数。 分析:我们只需从 m, n中更小的一个数开始,每次让其减 1,直到这个数能同时被 m和 n数整除为止。程序 var m,n,x:integer;begin write(please input 2 numbers:) readln(m,n);if mn then x:=n else x:=m;while (n mod x0) or (m mod x0) do begin x:=x-1;end;writeln(x);end. repeat-until语句(直到循环) nrepeat 语句用于重复执行循环

11、体,一直到指定的条件为真时为止。语法格式为:repeat语句1; 语句n;until布尔表达式;其中repeat、until是pascal保留字,repeat与until之间的所有语句称为循环体。求sum=1+2+3+.+n 的和 nprogram he; var n,i,sum:integer;begin write(n=); readln(n); sum:=0; i:=1; repeat sum:=sum+i; i:=i+1; until in; writeln (sum=,sum); readlnend. 注意nrepeat语句的特点是:先执行循环,后判断结束条件,因而至少要执行一次循环

12、体。repeat-until是一个整体,它是一个(构造型)语句,不要误认为repeat是一个语句,until是另一个语句。repeat语句在布尔表达式的值为真时不再执行循环体,且循环体可以是若干个语句,不需用begin和end把它们包起来, repeat 和until已经起了begin和end的作用。while循环和repeat循环是可以相互转化的。当循环和直到循环的区别n1、在repeat语句的结构中,布尔表达式求值在计算操作之后,而while语句中,布尔表达式求值在计算操作之前,也就是说repeat至少执行一次循环体。n2、while语句的成分语句只能是一个语句。因此,当重复动作包含多个语

13、句时,要用begin和end ,使它变成一个复合语句。而repeat语句的保留字repeat和until已经起语句括号作用,可以包含多个语句而无须begin和end。当循环和直到循环的区别n3、repeat语句中,当布尔表达式为true时结束循环,而while语句中,是当表达式为false时才结束循环。当描述由计算操作后的情况确定重复是否继续进行的计算时,通常用repeat语句描述。简单练习n求1-100之间所有数的和。n求0-100之间所有奇数的积。n输入本班50个同学的某科成绩,求平均分数。练习n输入一整数a,判断它是否质数。(提示:若从2到a的平方根的范围内,没有一个数能整除a,则a是质

14、数。) n求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a3+b3+c3=abc,则abc是水仙花数。 n计算11000之间能同时被3和5整除的整数的和。 练习n求0-100这间所有奇数的积。n编程计算11+22+33+99的值。n宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么? 作业n

15、1、输入一整数a,判断它是否质数。(提示:若从2到a的平方根的范围内,没有一个数能整除a,则a是质数。)n2、已知四位数3025有一个特殊性质: 它的前两位数字30和后两位数字25的和是 55, 而55的平方刚好等于该数(55*55=3025). 试编一程序打印所有具有这种性质的四位数.n3、如果一个数从左边读和从右边读都是同一个数, 就称为回文数. 例如: 686就是一个回文数. 编程找出所有既是回文数又是素数的三位数. 作业n1、“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只? n2、输入一个正整数n,把它分解成质因子相乘的形式。 如:36=1 x 2 x 2 x 3 x 3; 19=1 x 19(提示:设因子为i,从2开始到n,让n重复被i除,如果能整除,则用商取代n,i为一个因子;如果不能整除

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论