方法一:当输入的数据不超过10的时候(因为超过10的话结果不一样了),可以用这样的方法实现:
var s:lint64;
i,n:integer;
begin
readln(n);
s:=0;
for i:=1 to n do
begin
s:=s*10+1;
writeln(' ':n-i+1,s*s);
end;
end.
方法一:
program x1;
var i,n,s:integer;
begin
readln(n);
s:=0;
for i:=1 to n do
begin
s:=s*10+1;
writeln(' ':n-i+1,s*s);
end;
end.
如果n≤9,这样就行了。。。
方法二:
program x2;
var
i,j,n,sn:integer;
s:string;
begin
readln(n);
str(n,s);
sn:=length(s)+1;
s:=' '; //这里是两个空格
for i:=1 to sn-2 do
s:=s+ ' ';//这里是一个空格
for i:=1 to n do
begin
for j:=1 to n-i do
write(s);
for j:=1 to i do
write(j:sn);
for j:=i-1 downto 1 do
write(j:sn);
writeln;
end;
readln;
end.
当n≥10时,这样应该就可以了(为了好看,我改了一下数字间的间隔)。。。。
program aaa;
var
n,i,j:longint;
begin
readln(n);
for i:=1 to n do
begin
write(' ':n-i+1);
for j:=1 to i do
write(j);
for j:=i-1 downto 1 do
write(j);
writeln;
end;
readln;
readln;
end.
n可以是任何一个小于maxlongint的数,但由于数一旦超过9,数位就发生了变化,效果就不够好了。
for i:=1 to 4 do
begin
for j:=1 to 5-i do write(' ');
for j:=1 to i do write(j);
for j:=i-1 downto 1 do write(j);
end;
我没有编译,大概是这个样子吧,纯模拟,小学难度?
program xx(input,output);
begin
writeln(' 1');
writeln(' 121');
writeln(' 12321');
writeln('1234321');
readln;
end.