字母塔
【问题】输出由字母组成的“字母塔”。例如:输入C,则输出:
A
ABA
ABCBA
ABCDCBA
【参考程序】
var i,zimu,j,k:char;
begin
repeat
writeln('input a char:');
readln(zimu);
zimu:=upcase(zimu);
until
(zimu>='A') and (zimu<='Z');
for
i:='A' to zimu do begin
write(' ':(ord(zimu)-ord(i))+1);
{留空格}
for j:='A' to i do write(j);
{顺序写字母}
for j:=pred(i) downto 'A' do
write(j);
{逆序写字母}
if (ord(i)-64) mod 25=0 then readln
{如超一页,要暂停分页显示}
else writeln;
end;
end.
[题目]求数串的原始排列
前N个自然数排成一串:
X1,X2,X3.....Xn,先取出x1,将x2,x3移到数串尾,再取出x4,将x4,x6移到数串尾,.......
类推直至取完.取出的序列恰好是:1,2,3......n,要求输入N,求原来的数串的排列方式.
[参考程序]
var
a:array[1..1000] of word;
n,i,j,dep:word;
begin
write('N(1-1000)='); readln(n);
if (n=0) or (n>1000) then begin writeln('Input
error.'); readln; halt; end;
fillchar(a,sizeof(a),0); a[1]:=1; dep:=1;
for i:=2 to n do begin
j:=3; while (j>0) do begin
dep:=dep mod n+1;
if a[dep]=0 then dec(j);
end;
a[dep]:=i;
end;
for i:=1 to n do write(a[i]:5);
writeln; readln;
end.