#include <stdio.h>
#include <string.h>
void rubikCube(int n) {
int cube[n][n],k,i,j;
for (i=0; i<n; i++) { //初始化数组赋0值
for (j=0; j<n; j++) {
cube[i][j]=0;
}
}
i=0; //确定1的下标
j=n/2; //1固定在第一行的中间列
for (k=1; k<=n*n; k++) { //依次录入所有数共n*n个
cube[i][j]=k;
if (cube[(i-1+n)%n][(j+1+n)%n]==0) { //判断移动的下一个格是否有数字
i=(i-1+n)%n;
j=(j+1+n)%n;
}
else { //位置上已有数字的情况 就将新的数放在当前数的下一行
i=(i+1+n)%n;
}
}
for (i=0; i<n; i++) { //魔方阵打印输出
for (j=0; j<n; j++) {
printf("%d\t",cube[i][j]);
}
printf("\n");
}
printf("\n");
}
int main()
{
int num;
printf("请输入一个奇数:");
scanf("%d",&num);
rubikCube(num);
return 0;
}