delphi语法基础-循环嵌套.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文档。上传文档
查看更多
delphi语法基础-循环嵌套循环嵌套用于一个循环的循环体中又包含循环结构程序时。 例5_6、1!+2!+…+10!的值。    分析:这个问题是求1到10自然数的阶乘之和。   var s,t: longint;     i,j:integer;   begin    s:=0;    for i:=1 to 10 do     begin      t:=1;      for j:=1 to i do t:=t*j;??? { 求N!的值t }    ?? s:=s+t;????????????????????? { 累加N!的值t }     end;    writeln(s=,s);   end.   以上的程序是一个二重for循环嵌套。这是比较容易想到的方法,但实际上对于求n!,可以求出的(n-1)!再乘上n即可得到,而无需重新从1再累乘到n。程序可改为:   var s,t:longint;     i:integer;   begin    S:=0; t:=1;    for i:=1 to 10 do   ?  begin t:=t*i; s:=s+t end;    writeln(s=,s);   end.   显然程序二的效率要比程序一高得多。程序一要进行1+2+…+10=55次循环,而程序二进行10次循环。 ?例5_7、上街采购,用500元钱买了90只鸡, 其中母鸡一只15元,公鸡一只10元,小鸡一只5元,正好把钱买完。问母鸡、公鸡、小鸡各买多少只?   var i,j,k:integer;   begin    for i:=1 to 33 do    ? for j:=1 to 50 do     ? begin      ? k:=90-i-j;      ? if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);      end;   end. 例5_8、求100-200之间的所有素数。   分析:我们可对100-200之间的每一整数进行判断,判断它是否为素数,是则输出。而对于任意整数i,根据素数定义,我们从2开始到找到i的第一个约数。若找到第一个约数,则i必然不是素数。否则i为素数。   var i,x : integer; begin    for i:=101 to 200 do     begin      x:=2;      while (x=trunc(sqrt(i))) and (i mod x0) do       begin  x:=x+1;      ??? if xtrunc(sqrt(i)) then write(i:6)  end;     end;? writeln   end.? 将for循环改为while循环可以减少循环次数。例5_9、输出下面的数字图形:????? 1 ??????????? 222 ???????? 33333 ??????? 4444444 ???????? 555555555 var row,column,n,d:integer; begin ? writeln(n= );? readln(n); ? d:=20; ? for row:=1 to n do ??? begin ????? write( :d-row); ????? for column:=1 to 2*row-1 do? write(row); ????? writeln; ??? end end. 例5_10、三人对ABCD的比赛名次预测如下: A? B? C? D ??????? 甲?? 1? 3 ??????? 乙???????? 1? 4 ??????? 丙?? 3??????? 2 比赛结果,三人都只说对了一个,问A、B、C、D的实际名次。 var a,b,c,d:shortint; begin ??? for a:=1 to 4 do ???? for b:=1 to 4 do if ab then for c:=1 to 4 do if (ac) and (bc) then ??? begin ???? d:=10-a-b-c; if (ord(a=1)+ord(b=3)=1) and (ord(c=1)+ord(d=4)=1) and (ord(a=3)+ord(d=2)=1) then writeln(A=,a, B=,b, C=,c, D=,d) ? end; end.? 五、用GOTO语句实现循环? 例5_11、两个正整数的最大公约数,可用GOTO实现循环 label a;   var m,n,r : integ

文档评论(0)

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

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

1亿VIP精品文档

相关文档