1 / 3
文档名称:

PASCAL09-循环结构2.doc

格式:doc   大小:31KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

PASCAL09-循环结构2.doc

上传人:zbfc1172 2018/9/8 文件大小:31 KB

下载得到文件列表

PASCAL09-循环结构2.doc

相关文档

文档介绍

文档介绍:循环结构的程序设计(二)

——FOR循环的嵌套及举例
例一:打印出如下由数字组成的三角形:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
…………………………………………….
{1 2 3……………………N ………………………3 2 1}
分析:N行,每行从1到N,再从N-1到1,前面再加上若干空格(数目从多到少)。
程序段:
CONST N=9;
VAR I,J,K,SPACE:INTEGER;
BEGIN
SPACE:=40;
FOR I:= 1 TO N DO
BEGIN
WRITE(‘□’:SPACE);
FOR J:= 1 TO I DO WRITE(J:2);
FOR K:=I-1 DOWNTO 1 DO WRITE(K:2);
WRITELN;
SPACE:=SPACE – 2
END
END.
例二:求S=11+22+33+44+……+NN
程序段:
WRITE(‘PLEASE INPUT N= ’);
READLN(N);
SUM:=0;
FOR I:=1 TO N DO
BEGIN
T:=1;
FOR J:=1 TO I DO T:=T*J;
SUM:=SUM + T
END;
WRITELN(‘ S= ’,SUM);
例三:某人想将手中的一张面值100元的人民币换成5元、,但要求换正好100张,且每种票子至少一张。问:有几种换法?
分析:设5元票I张,1元票J张,,则:
I+J+K=100
3个变量2个方程不能直接出解,也不唯一。
5I+J+K/2=100
程序段:
WRITELN(I:8,J:8,K:8);
FOR I:=1 TO 100 DO
FOR J:=1 TO 100 DO
FOR K:=1 TO 100 DO
BEGIN
SUM:=I+J+K;
实数的比较
可用CONST
TOTAL:=2*I+J+K/2;
IF (SUM=100)AND(ABS(TOTAL – 100)<)
THEN WRITELN(I:8,J:8,K:8);
END
优化:循环次数太多(100*100*100次),实数的比较,其实为了满足100张的要求,5元票子最多11张(因为假如换12张,则去掉60元,,共计92张),1元的最多换99-I张,-I-J张。即:
FOR I:= 1 TO 11 DO
FOR J:= 1 TO 99-I DO
IF 10*I + 2*J + (100-I-J) = 200 {扩大2倍解决了实数的比较问题}
THEN WRITELN(I