回 帖 发 新 帖 刷新版面

主题:小学题,用PASCAL难哪

打印数字三角形:
     从键盘读入数字三角形层数L,(1<=L<=24), 按下图规律在屏幕上输出数字三角形。每个数字所占宽度不作严格要求,但要求:  1.全部输出必须在一屏之内,不能滚屏;  2.不同数字间至少空一格; 3.编程解决此问题,不能直接打印输出答案。
     例:              L=3                         L=5
    
                       1                           1   
                     2   6                       2   12  
                   3   4   5                   3   13   11  
                                             4   14    15  10  
                                           5   6    7    8    9  

回复列表 (共11个回复)

沙发

小学题目就这样`~~~郁闷``~哪个小学生那么铁`~做的出来`~偶顶他(她)@@@@~~~~!@@!!

板凳

program sanjiao;
  var i,j,k,n,f:integer;
      g:longint;
      a,b:array[1..100,1..100]of integer;
  begin
  writeln('input in lou shu:');
  readln(n);
  k:=1;
  f:=1;
  g:=n*n;
  for i:=1 to n do
    for j:=1 to i do a[i,j]:=g;
  i:=0;
  j:=1;
  while k<=n*(n+1)/2 do
    begin
      case f of
      1:begin inc(i);a[i,j]:=k;inc(k);if a[i+1,j]<>g then f:=2;end;
      2:begin inc(j);a[i,j]:=k;inc(k);if a[i,j+1]<>g then f:=3;end;
      3:begin dec(i);dec(j);a[i,j]:=k;inc(k);if a[i-1,j-1]<>g then f:=1;end;
    end;
  end;
  for i:=1 to n do
    begin
    write('':n-i+1);
     for j:=1 to i do
      begin
      write(a[i,j]:4);
      end;
     writeln;
    end;
     readln;
  end.
小子不才`~~~~!~~~用的方法很烦 大家不要介意呀`~~~随便看看啦~~~ 楼主加分``给我点成就感~~嘿嘿~

3 楼

您忘了说明三角形边长的范围吧[em12]

4 楼

二维数组 可以解决

5 楼

建议:用数组比较快!

6 楼

说得没错

7 楼

var
  i,j,l,p,q,s,t:integer;
  a:array[1..100,1..100] of integer;
  begin
    readln(l);
    s:=0;p:=0;q:=1;
    for i:=1 to l do
    for j:=1 to l-i+1 do
    begin
      if i mod 3=1 then p:=p+1;
      if i mod 3=2 then q:=q+1;
      if i mod 3=0 then begin p:=p-1; q:=q-1; end;
      inc(s);
      a[p,q]:=s;
    end;
  t:=l+1;
  for i:=1 to l do
  begin
    write(a[i,1]:t-i);
    for j:=2 to i do
    begin
      write(a[i,j]:3);
    end;
    writeln;
  end;
end.
[em9][em9][em9][em9][em9][em9][em9][em9]

8 楼

这是小学生做的吗

9 楼


[em18]谢了,你的程序,谁还有讲解的——学编程的小学生[em18]

10 楼

用递归写怎么样?

我来回复

您尚未登录,请登录后再回复。点此登录或注册