永发信息网

pascal语言写蛇形矩阵出错

答案:1  悬赏:20  手机版
解决时间 2021-04-11 14:54
  • 提问者网友:一抹荒凉废墟
  • 2021-04-11 09:53

Description

小明玩一个数字游戏,取个n行n列数字矩阵(其中n不超过100),数字的填补方法为:从1开始以顺时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.

Input

n(即n行n列)

Output

n+1行,n行为组成的矩阵,最后一行为对角线数字之和

Sample Input

3

Sample Output

789

612

543

25

我写了一个程序,输入10以内的数没事,从10开始编译就返回201,请教高手

var
a:array[1..100,1..100] of longint;
n,i,j,sum,cishu,m:longint;
sum2:longint;
procedure paizhen(n:longint);
var s:integer;
begin
if n=1 then begin writeln(1);writeln(1);halt;end;
if n=2 then begin writeln(1,2);writeln(4,3);writeln(10);halt;end;
if (n mod 2)<>0 then begin i:=n div 2+1;j:=i;end
else begin i:=n div 2;j:=i;end;
a[i,j]:=1;a[i,j+1]:=2;a[i+1,j+1]:=3;
i:=i+1;j:=j+1;sum:=3;cishu:=3;m:=2;
while sum<n*n do
begin
case cishu of
1:begin
for s:=1 to m do
begin
j:=j+1;
sum:=sum+1;
a[i,j]:=sum;
end;
end;
2:begin
for s:=1 to m do
begin
i:=i+1;
sum:=sum+1;
a[i,j]:=sum;
end;
end;
3:begin
for s:=1 to m do
begin
j:=j-1;
sum:=sum+1;
a[i,j]:=sum;
end;
end;
4:begin
for s:=1 to m do
begin
i:=i-1;
sum:=sum+1;
a[i,j]:=sum;
end;
end;
end;
if cishu=2 then begin cishu:=cishu+1;m:=m+1;end
else if cishu=4 then begin cishu:=1;m:=m+1 end
else cishu:=cishu+1;
end;
end;
begin
readln(n);
paizhen(n);
if odd(n) then sum2:=-1 else sum2:=0;
for i:=1 to n do sum2:=sum2+a[i,i];
for i:=1 to n do sum2:=sum2+a[n-i+1,i];
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]);
writeln;
end;
writeln(sum2);
end.

最佳答案
  • 五星知识达人网友:玩家
  • 2021-04-11 11:15
看不下去
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯