第3章 循环结构程序设计【荐】.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第章 循环结构程序设计for语句显然不行,因为我们不知道循环的次数。下面我们用当型循环(while/do语句)来编写程序。 农场主的预算可以描述如下: 月份:=1; 兔子数:=1; { 预定义第一个月的兔子数是1对} while 兔子数1000 do{当兔子数小于1000对时进入循环} begin 月份:=月份+1; 兔子数:=兔子数*2; end; 【程序设计】 [程序清单] program p4-1(input,output); var month, rabbit: integer; begin month:= 1; rabbit:= 1; while rabbit1000 do begin month:=month + 1; rabbit:= rabit * 2; end; writeln(‘The months is :’,month); end. 【知识拓展】 1.while循环语句 当型循环(while语句)是这样描述循环的:当指定条件成立时,重复执行指定的语句。 格式:while 布尔表达式 do 语句; ?????? 例如: ???? k:=10; ???? WHILE k0 DO ???? BEGIN ???? ????Writeln (k); ???? ???? k:=k-1 ???? END; ???? 其中 ???? (1)WHIlE 和DO是PASCAL保留关键字,是WHILE循环语句的组成部分。 ???? (2)保留关键字DO后面的“语法”只能是一条语句,称为“循环体”;如果循环体中需要包含多个语句则应该如上例所示,采用一条复合语句。2.WHILE循环的执行功能当执行到WHILE语句时求出布尔表达式的值(2)若布尔表达式的值为真,则执行循环体内的语句;若为“假”,执行步骤4 (3)重复步骤1和2 (4)循环结束,执行循环后面的语句。hile循环的结构化流程图如下: 【同步练习】 1.周末小明遇到一个有趣的题目: 找出四位整数abcd中满足下述关系的数:( ab + cd )( ab + cd )= abcd 请你帮小明编写一个程序,找出满足条件的所有的数。 问题分析: 这道题属于搜索问题,因为是四位整数,不难看出范围是从1000~9999,所求的数究竟在哪里,无法确定,只有在这个范围内从小到大一个一个进行搜索,对每一个数看它的高两位数与低两位数和的平方是否与该数相等。ab和cd 两个数可以在abcd中将高两位与低两位分离开来。我们可以这样考虑,将abcd整除100,可得到高两位ab。如: abcd=1234 , 1234 div 100 = 12。 有了ab,也就可用下面的式子把低两位cd分离出来: abcd - ab × 100 = abcd - ab00 = cd 如: 1234 - 12 × 100 = 1234 - 1200 = 34 同学们仔细想想,在求解的过程中,条件都是一样的,只是abcd这个数不同。实际上是在反复做同一个步骤。下面我们用当型循环来解这道题。 [程序清单] Program xuhuan(input,output); Var i,m,n,k:integer; Begin I:=1000;{给I赋值,即abcd假设一个数;} While I=9999 do {判断I(即abcd)的值是否超出范围,;如果超过则不执行循环 Begin 体中的语句,结束循环;} M:=I div 100; {分离出ab和cd两个数,如果符合条件,就写出来;} N:=I - m*100; K:=(m+n)*(m+n); If k=I then Writeln(‘符合条件的四位整数是:’,I); I:=I+1 { I的值加1;} End; End. [运行示例] 符合条件的四位整数是:2025 符合条件的四位整数是:3025 符合条件的四位整数是:9801 2.从n个数中挑选出最大的数。 问题分析:本题可以借助于古代比武的“打擂台”来比喻: 先有任意一人站在擂台上,然后第二个人上来与它比武,胜者留在台上,如此反复进行下去,直到第n个人比完为止(要注意:一共比n-1次),这样最后留在台上的人肯定是最强者。 设计算法: 从n个数中任选一数放在变量X中,并设一计数器m=0(这里变量X就是比武的擂台,m=0表示尚未进行比较); 将下一个数与X中的数进行比较; 使m的值加1(计一次数); 若m的值小于(n-1),则重新进行第②步,否则执行下一步⑤; 输出此时X的值,即为n个数中的最大者; 结束。 [程序清单] PRO

文档评论(0)

wulf + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档