//打印魔方矩阵
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#define N 5//5阶魔方矩阵
//模仿矩阵即 每一行之和 和 每一列之和 和 对角线之和 相等
//8 1 6
//3 5 7
//4 9 2 3阶魔方矩阵 每一行之和 和 每一列之和 和 对角线之和 均等与15
//实现时应注意:1. 将数字1 放在第一行的中间
// 2. 从数字2开始每一个数在前一个数的右上角
// 3. 行越界(i<0),则将行置为最后一行
// 4. 列越界(j>N),则将列置为第一列
// 5. 若上一个数为N的倍数,则这个数放在它前一个数的下方
int main()
{
int num = 0;
int arr[N][N] = { 0 };
int i = 0, j = N / 2;
arr[i][j] = 1;//将数字1 放在第一行的中间
for (num = 2; num <=N*N; num++)
{
if ((num - 1) % N == 0)
{//若上一个数为N的倍数,则这个数放在它前一个数的下方
i = i + 1;
}
else
{
if (i == 0)
{//行越界(i<0),则将行置为最后一行
i = N - 1;
}
else
{
i = i - 1;
}
j = (j + 1) % N;
//列越界(j>N),则将列置为第一列
}
arr[i][j] = num;
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
printf("%3d ", arr[i][j]);
}
printf("\n");
printf("\n");
}
fflush(stdin);
getchar();
return 0;
}
打印魔方矩阵
最新推荐文章于 2024-10-15 16:10:23 发布