|| 返回 || 本站首页 ||奥赛信息||计算机基础||pascal基础||数据结构||经典算法||试题汇编||校本教程||自主练习||

|| 自主练习>> 字母塔

双击自动滚屏 

   

字母塔

【问题】输出由字母组成的“字母塔”。例如:输入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.

 
 

 

 
 
 

制作与维护:重庆市忠县中学 谭海