不是VIP会员,不能显示答案

题目解答

题目:
第1题:幻方
把1至n×n的正整数填在n行n列的表格内,使每一行、每一列和二条多角线上n个数之和都相等。这样的正方形表格叫做幻方。如右图所示是一个3行3列的幻方。
下面的程序生成一个行(列)数为奇数的幻方。如果输入的行列数n是偶数,输出字符串”not odd number!”,否则按一下的方法生成幻方:
1. 第一个数1填入第一行最中间的一列;
2. 以后每次填下一个数时,填入的位置为:
(1) 如果已填的数的个数为n的倍数,则填入下一行;
(2) 否则填入上一行右一列。如果向上越界,则填至最后一行;如果向右越界,填至第一列。生成的数字保存在二维数组a中,程序输出n行,每行n个数据。

【样例输入】
3
【样例输出】
8 1 6
3 5 7
4 9 2
请将程序补充完整。
program xx2011_5;
const maxn=1001;
var n,i,j,p:longint;
   a:array[1..maxn,1..maxn]of longint;
begin
  readln(n);
  if n mod 2=0 then begin
     wrtieln(‘not odd number!’);
           exit    ;
 end;
 i:=1;
        j:=(n+1) div 2    ;
 for p:=1 to n*n do begin
a[i,j]:=p;
if      p mod n=0  then i:=i+1
  else begin
   i:=i-1;j:=j+1;
   if   i<1  then  i:=n;
   if j>n  then  j:=1;
 end;
end;
for i:=1 to n do begin
   for j:=1 to n-1 do
      write(a[i,j],’ ‘);
       writeln(a[i,n])     ;
  end;
end.
考点:
分析:
解答:
评论:
老师: