主题:各位大侠,急救呀!
超级编程菜鸟
[专家分:0] 发布于 2005-03-16 15:06:00
编程画图(用循环语句控制)
a
bbb
ccccc
ddddddd
ccccc
bbb
a
怎么实现呀[em18]
回复列表 (共7个回复)
沙发
超级编程菜鸟 [专家分:0] 发布于 2005-03-18 09:02:00
哪位高手指点一下,图显示的有问题,字母是一中间线为准,两边上下字母对齐的!
板凳
jtchang [专家分:5370] 发布于 2005-03-18 16:57:00
哎!这道题目我是第n次看到求救。几句就可以搞定。给你程序,你的老师要是问你是怎么算出来的,你就跟他说是从BBS上抄下来的。呵呵!(^_^)
告诉你怎么实现:
要打7行;
每行先打空格;
再打字母;
换行;
完了!
Const Line = 7;
Mid = Line div 2 + 1;
Var
c : Char;
i,j : Integer;
Begin
for i:=1 to Line do
Begin
for j:=1 to abs(i-Mid) do Write(' ');
c:=chr(ord('a')+i-1-(i div Mid)*(i mod Mid)*2);
for j:=1 to 2*i-1-(i div Mid)*(i mod Mid)*4 do Write(c);
Writeln;
End;
End.
3 楼
xuzhenyi [专家分:850] 发布于 2005-03-18 22:40:00
按照你的说法写的
var j,k,i:integer;
begin
for i:=1 to 4 do
begin
for k:=1 to 4-i do
write(' ');
for k:=1 to 2*i-1 do
begin
write(chr(96+i));
end;
writeln;
end;
for i:=1 to 4-1 do
begin
for k:=1 to i do
write(' ');
for k:=1 to (4-1)*2-(2*i-1) do
write(chr(96+4-i));
writeln;
end;
end.
进一步拓展 我们可以随意输入数字
var j,k,i:integer;
begin
readln(j);{MAX LENGTH}
for i:=1 to j do
begin
for k:=1 to j-i do
write(' ');
for k:=1 to 2*i-1 do
begin
write(chr(96+i));
end;
writeln;
end;
for i:=1 to j-1 do
begin
for k:=1 to i do
write(' ');
for k:=1 to (j-1)*2-(2*i-1) do
write(chr(96+j-i));
writeln;
end;
end.
给分吧
我要纷纷
4 楼
faintzw [专家分:2660] 发布于 2005-03-18 23:48:00
var
i,j:integer;
begin
for i:=-3 to 3 do
begin
for j:=1 to abs(i) do write(' ');
for j:=1 to 7-abs(i*2) do write(chr(100-abs(i)));
writeln;
end;
end.
这类的问题见太多了会烦的……呵呵
2楼的麻烦了点。
var
i,j,n:integer;
begin
write('n=');readln(n);
for i:=-n to n do
begin
for j:=1 to abs(i) do write(' ');
for j:=1 to 2*n+1-abs(i*2) do write(chr(97+n-abs(i)));
writeln;
end;
end.
这个是扩展后的……只是改了一些东西而已……楼主的例子是当n=3时的结果。
5 楼
xuzhenyi [专家分:850] 发布于 2005-03-19 16:28:00
绝对值阿 我知道
6 楼
faintzw [专家分:2660] 发布于 2005-03-19 18:13:00
但是你的程序让我感觉不到你知道
7 楼
xuzhenyi [专家分:850] 发布于 2005-03-26 21:23:00
对不起阿
不是我做的
我来回复