L10:j=(n/2)+1; n的中間元素是(n/2)+1,但是在數組當中的位置應該是(n/2) //別忘了位置0存第壹個
L18,L20 不等號這裏不能取等
L32: 輸出格式改了壹下,為了好看而已
改後程序
#include"stdio.h"
void main()
{
int a[15][15]={0};
int n,i,j,k,p,q;
printf("請輸入魔方陣的階(僅限奇數階)\n");
scanf("%d",&n);
i=0;
j=(n/2);
a[i][j]=1;
for(k=2;k<=n*n;k++)
{
p=i;
q=j;
i--;
j++;
if(i<0)
i=n-1;
if(j>n-1)
j=0;
if(a[i][j]!=0)
{
i=p+1;
j=q;
}
a[i][j]=k;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf(" %3d ",a[i][j]);
printf("\n");
}
}