请教高手:编写魔方阵遇到的问题
大家好,用下面这段代码打印魔方阵,当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); }