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