为什么会这个样子?
void main(void){ int a[9][9];
int i,j,n,t;
do
{
printf("Input n:");
scanf("%d",&n);
clrscr();
}while(n<3||n%2==0||n>9); /* n为10以内的奇数 */
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0; /* 把数组每个元素赋0 */
j=n/2;
a[0][j]=1; /* 把1放在数组第一行的中间 */
for(t=2;t<=n*n;t++)
{
i--;
j++; /* 每次循环行数减1,列数加1,即把数字放在当前的右上角 */
if(i<0)i=n-1; /* 当行数为0时,下次行数为n-1 */
if(j>n-1)j=0; /* 当列数为n-1时,下次列数为0 */
if(a[i][j]) /* 如果右上角已有数字,那么把数字放在下面 */
{
i=(i+2)%n;
j=(j-1+n)%n; /* 控制转向 */ j=(j-1)%n;出错?这两个值一样的?
}
a[i][j]=t;
}
for(i=0;i<n;i++) /* 输出数组 */
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf("\n\n");
}
system("PAUSE");
}