思路:按顺序对二维数组进行赋值,再将中间行的值进行左右交换,中间列的值进行上下交换即可
关于魔方阵的另外两种情况:
输出魔方方阵之偶魔方(阶数不为4的倍数)
魔方阵之奇魔方(阶数是奇数)
/*
时间:2020/08/15
目的:输出魔方阵之偶魔方(阶数为4的倍数)
功能:对于数组的一些操作
*/
#include<stdio.h>
#define N 4
int main()
{
int a[N][N],num=1,i,j,t;
for(i=0;i<N;i++){
for(j=0;j<N;j++){
a[i][j]=num;
num++;
}
}
//翻转中间行
for(i=N/4;i<N/4*3;i++){//[N/4,N/4*3)就是中间行
for(j=0;j<N/2;j++){//翻转半边列即可,全翻会翻回来
t=a[i][j];
a[i][j]=a[i][N-1-j];
a[i][N-1-j]=t;
}
}
//翻转中间列
for(j=N/4;j<N/4*3;j++){
for(i=0;i<N/2;i++){
t=a[i][j];
a[i][j]=a[N-1-i][j];
a[N-1-i][j]=t;
}
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
printf("%5d",a[i][j]);
}
printf("\n");
}
return 0;
}
/*
总结:进行值的交换时要注意从哪开始到哪结束
-----------------------
在dev中输出结果为
1 14 15 4
8 11 10 5
12 7 6 9
13 2 3 16 正确
-----------------------
*/