问题:
解决方法:
x = (x - 1 + m) % m;
y = (y + 1 + m) % m;
1.直接找到了超出魔方阵的(-1,X),(X,-1)(-1,-1)格。而不用if else实现。
2.
#include<stdio.h>
#define M 20
void Init (int SHUZU[M][M],int m)
{
int i,j;
for(i = 0;i < m;i++)
for(j = 0;j < m;j++)
SHUZU[i][j] = 0;
}
void mofang(int SHUZU[M][M],int m)
{
int x,y,i;
i = 1;
x = 0;
y = m / 2;
SHUZU[x][y] = i;
for(i = 2;i <= m * m;i++)
{
x = (x - 1 + m) % m;
y = (y + 1 + m) % m;
if(SHUZU[x][y] != 0)
{
x = (x + 2 + m) % m;
y = (y - 1 + m) % m;
}
SHUZU[x][y] = i;
}
}
void Output (int SHUZU[M][M],int m)
{
int i,j;
for(i = 0;i < m;i++)
{
for(j = 0;j < m;j++)
printf("%003d ", SHUZU[i][j]);
printf("\n");
}
}
int main(void)
{
int SHUZU[M][M];
int m;
scanf("%d",&m);
Init (SHUZU,m);
mofang(SHUZU,m);
Output(SHUZU,m);
}