用循环语句设计程序的途径.docVIP

  • 8
  • 0
  • 约 4页
  • 2017-09-30 发布于广东
  • 举报
用循环语句设计程序的途径 我们知道编写程序的基本方法是“自上而下,逐步求精”,即先把一个复杂的大问题分解为若干相对独立的小问题,然后对每一个小问题编写出一个功能相对独立的程序块,最后再统一组装,这样编写的程序具有结构清晰的特点。而在程序设计中,我们经常会遇到需要对一条或一组语句重复执行多次,以最终完成某项任务的问题,对这类题处理的一个特点是对不同的运算对象进行若干次相同的运算或处理,这种处理模式在程序设计中是用循环结构来实现的,那么怎样才能用循环语句实现这种程序设计,下面介绍几个常用方法。 一 列举法 这种方法就是根据提出的问题,列举所有可能的情况,并用问题提出的条件检验哪些是需要的,哪些是不需要的,对需要的保留,对不需要的剔除。对于不定方程的求解常用列举法。 例1、在《张丘建算法》中有一个很有影响的不定方程问题,即“百钱买百鸡”,其意思是:一只公鸡价为5钱,一只母鸡价为3钱,三只小鸡价为1钱,要想用100钱买100只鸡,问公鸡、母鸡、小鸡可各买几只? 分析:(1)先建方程:设 x , y, z 分别代表公鸡,母鸡,小鸡数, x + y +z =100 则 5x+3y+z/3=100 (2)确定变量范围:若100钱全买公鸡最多买20只,所以 ?x∈[0,20] 且x ∈N。 同理,y ∈[0,33] 且y∈N,x, y 确定后小鸡的只数 z=100-x-y 也确定。 (3)解不定方程,应先固定一个变量的值,然后其他两个变量的值一一列举 如 x=0 , y=0 , z=100 y=1, z=99 … … y=33 , z=67 当x=1时,再对y,z的值进行一一列举,直到y,z的值一一列举完,再取x =2,重复进行上述过程。这时x, y ,z是一组满足“百鸡”的解是否也满足“百钱”还当检验,满足则为解,否则删除。 解:程序如下: x = 0 while x =20 y=0 while y =33 z=100 – x –y if 5*x+3*y+z/3=100 then print (o/oio(2),x , y , z) end end end 框图: Y N Y N Y N 评:本题是解一个不定方程问题,在先确定x值后,列举出 y,、z 的所有可能情况,重复进行检验x、y、z 的值是否满足 5x+3y+z/3=1=100,满足则为解,否则不是。 二 递推法 所谓递推就是在一系列数中,已知第一个数,则其后的每一个数都可利用递推公式有前数推出,并且能重复进行,因此可用循环结构来处理, 例2、:裴波那契数列表示这样一系列数:0 ,1 ,1,2,3,5,8 … 后一项等于前一项的和,请设计一个算法框图,输出这个数列的前100 项并编写程序 分析:如设 分别表示该数列中连续的三项,则有 由这个递推关系可知,只要已知这个数列的前2项,就可重复利用这个递推关系,将后面所有的项递推出来。因为算法中,反复计算和输出的步骤是一样的,因此可以用循环结构来解决。 框图: 解:程序: then print end Y N 评:本题是先寻找出递推公式,也就是找出循环体, 再确定循环变量的初试值和终止值,由于递推公式 重复运用才能由前项推得后项,因此可用循环语句来处理。 三 迭代法 所谓迭代就是一个不断用新值取代变量的旧值或由旧值递推出变量的新值的过程。 例3、计算: 分析:其迭代方法

文档评论(0)

1亿VIP精品文档

相关文档