打印以下图形!!PASCAL

来源:百度知道 编辑:UC知道 时间:2024/07/02 11:13:44
(1)
1
6 2
10 7 3
13 11 8 4
15 14 12 9 5
(2)
11
7 12
4 8 13
2 5 9 14
1 3 6 10 15

第一个:
var
e,d,n,c,i:integer;
a:array[1..100,1..100] of integer;
begin
readln(n);
i:=0;
for c:=0 to n-1 do
for d:=1 to n do begin
e:=c+d;
if e<=n then begin
inc(i);
a[e,d]:=i;
end;
end;
for c:=1 to n do begin
for d:=1 to n do if a[c,d]<>0 then write(a[c,d],' ');
writeln;
end;
end.
第二个:
var
e,d,n,c,i:integer;
a:array[1..100,1..100] of integer;
begin
readln(n);
i:=0;
for c:=n-1 downto 0 do
for d:=1 to n do begin
e:=c+d;
if e<=n then begin
inc(i);
a[e,d]:=i;
end;
end;
for c:=1 to n do begin
for d:=1 to n do if a[c,d]<>0 then write(a[c,d],' ');
writeln;
end;
end.
这两个的区别只是循环,第一个是正向的循环,第二个是逆向的循环,总感觉我的程序方法比较麻烦,不过肯定是对的,不知道有没有更简单的方法,如果有的话,还请各位大牛们指点~~~~~~~~~~`