编程输出下列图形,行数从键盘读入 当n=5时,* *** ***** *** *
1个回答

注意,我的比1、2、3楼的都简单,还是pascal

var

n,k,p,i,j:integer;

begin

readln(n);

k:=n div 2; //初始空格数

p:=1; //初始打印字数

for i:=1 to (n div 2) do //先做前一半行的打印

begin

for j:=1 to k do write(' '); //输出空格

for j:=1 to p do write('*'); //输出星号

writeln; //输出回车

dec(k); inc(p,2); //相当于k:=k-1; p:=p+2;

//因为每增加一行,空格减少一个,星号也增加两个

end;

for i:=1 to n do write('*'); //输出中间的星号

writeln; //输出回车

//因为打印是对称的,所以不用初始化k,p

for i:=1 to (n div 2) do //再做后一半行的打印

begin

for j:=1 to k do write(' '); //输出空格

for j:=1 to p do write('*'); //输出星号

writeln; //输出回车

inc(k); dec(p,2); //相当于k:=k+1; p:=p-2;

//因为每增加一行,空格增加少一个,星号也减少两个

end;

end.