请教高手:编写魔方阵遇到的问题
大家好,用下面这段代码打印魔方阵,当N设置为9时会出现“"0x00000052"引用的"0x00000052"内存。该内存不能为"read"”的提示,但换用更大或更小的奇数(如5或11)都没有,是怎么回事呢?用 Cfree 编程
程序代码:#include<stdio.h>
#define N 11
main()
{
int a[N][N],l=0,r,i=1,k=0;
for(l=0;l<N;l++)
for(r=0;r<N;r++) a[l][r]=0;
r=(int)N/2;
l=0;
a[l][r]=i; //1居上行正中央
while(i<=N*N)
{
i++;
if(l==0&&r!=N-1) {l=N-1;r=r+1;} //上出框往下写
else if(r==N-1&&l!=0) {r=0;l=l-1;} //下出框时左边放
else if((a[l-1][r+1]!=0)||(l==0&&r==N-1)) l=l+1; //重复便在下格填,右上重复一个样
else {l=l-1;r=r+1;} //依次斜填切莫忘
a[l][r]=i;
}
for(l=0;l<N;l++)
for(r=0;r<N;r++) if(l==r) k=k+a[l][r];
printf("这是一个 %d 阶魔方阵):\n\n",N);
for(l=0;l<N;l++)
{
for(r=0;r<N;r++) printf("%5d",a[l][r]);
printf("\n");
}
printf("\n%d 阶魔方阵的常数为:%d\n",N,k);
}









