回覆列表
  • 1 # 使用者9639739024251

    program test;

    const

    n=5;

    var

    i,j,k:integer;

    a:array [1..n] of array [1..n] of integer;

    begin

    k:=1;

    i:=1;

    j:=1;

    a[i,j]:=k;

    for k:=2 to (n*n) do

    begin

    if j=n

    then begin

    j:=i+1;

    i:=n;

    end

    else if i=1

    then begin

    i:=j+1;

    j:=1;

    end

    else begin

    i:=i-1;

    j:=j+1;

    end

    a[i.j]:=k;

    end

    for i:=1 to n do

    begin

    for j:=1 to n do

    write(a[i,j]," ");

    writeln;

    end;

    end.

    抱歉,我很久沒程式設計了,pascal還是初中學的,不知道能不能執行透過。大體應該是不錯的,細節可能存在問題。

    稍微解釋一下,思路就是調整陣列的下標,給陣列中元素一次賦值1,2,3,。。。直到n*n停止。改變下標的原則是:

    1.先判斷有沒有到列末尾(j=n),

    1.1 到了就j:=i+1;i:=n;

    1.2 不到就判斷有沒有到第一行(i=1),

    1.2.1 到了就i:=j+1; j:=1;

    1.2.2 不到就i:=i-1;j:=j+1;

    然後給a[i,j]賦值。

  • 中秋節和大豐收的關聯?
  • 老人指定一個女兒單獨贍養,其他兒女應該怎麼辦?