问一下哈,小问题
要求,建立并输出魔方阵,大小自定。运行了program,在合法输入范围没啥问题,但是越了界(出界的奇数)却没有像预想的让你重新输入,而是崩溃。不知道为啥,求问#include <stdio.h>
int main(void)
{
int a[16][16];
int i,j,k,p,m,n;
/*初始化*/
p=1;//
while(p==1)//p的作用是在输入条件不满足时重新输入的开关
{printf("请输入n.(0<n<=15,n是奇数)\n");
scanf("%d",&n);//确定魔方阵的大小
if((n!=0)&&(n<=15)&&(n%2!=0))//判断条件是否满足
{printf("矩阵阶数是:%d\n",n);
p=0;}//满足条件则终止循环
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;//给二维数组赋值
}
/*建立魔方阵*/
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{i=i-1;j=j+1;
if((i<1)&&(j>n))
{i=i+2;j=j-1;}
else
{if(i<1) i=n;
if(j>n) j=1;}
if(a[i][j]==0)a[i][j]=k;
else {i=i+2;j=j-1;a[i][j]=k;}}
/*输出*/
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n");}
}