2 qq 15070525 qq_15070525 于 2015.06.01 16:27 提问

关于4阶魔阵的写法,即16宫格

16宫格的做法是,1到16依次写进4阶方阵中,然后将位置(1,1)与位置(4,4)上的对换,(2,2)与(3,3)上的对换。再将(1,4)与(4,1)对换,(2,3)与(3,2)对换。
基于这种思想我给出了一个程序,但是好像没有输出正确的结果。
#include

int main() {
int A[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j;
for (i = 0; i < 2; i++) {
*(&A[0][0] + i * 4 + (i - 1)) = *(&A[0][0] + (4 - i) * 4 + (4 - i));//斜率为-1的对角线上数,(1,1)位子与(4,4)位子互换,(2,2)与(3,3)互换
*(&A[0][0] + i * 4 + (4 - i)) = *(&A[0][0] + (4 - i) * 4 + i);//斜率为1的对角线上的数,(1,4)与(4,1)互换,(2,3)与(3,2)互换,其他不变
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++)
printf("%3d ", *(&A[0][0] + i * 4 + j));
printf("\n");
}
return 0;
}

1个回答

devmiao
devmiao   Ds   Rxr 2015.06.01 16:33
已采纳
Csdn user default icon
上传中...
上传图片
插入图片