- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)