题目描述:
用数组实现7阶魔方矩阵。所谓的N阶魔方矩阵是指把1~N*N的自然数按一定方法排列成N*N的矩阵,使得:任意行、任意列以及两个对角线上的数之和都相等(N为奇数)。
例如下面的5阶魔方矩阵,任意行、任意列以及两个对角线上的数之和都为65。
5阶魔方如下: 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 奇数阶魔方矩阵的算法如下: 第1步:将1放入第一行的正中处。
第2步:按如下的方法依次将第i个数(i从2到N*N)放到合适的位置上。
如果第i-1个数的右上位置没有放数,则将第i个数放到前一个数的右上位置。
如果第i-1个数的右上位置已经有数,则将第i个数放到第i-1个数的下一行,列数相同的位置。
**输出格式要求:"\n%d阶魔方矩阵如下:\n" 输出7个"===="后换行 "%4d" 输出7个"===="后换行
习题解答:
#include
#include
#define N 7
int main(){
int a[N][N] = {0};
a[0][N/2] = 1;
int cnt = 1;
int temp_i,temp_j;
temp_i = 0;
temp_j = N/2;
while(cnt
需要注意的两个点是:
1)避免数组越界的方法是:对要生成的位置i,j取余N。
2)避免负数的方法是:可以用abs绝对值函数处理后再取余,或取余之前+N;
附上:
C语言 指针学习笔记_唐楚江之歌的博客-CSDN博客https://blog.csdn.net/tangchujiang/article/details/124143283?spm=1001.2014.3001.5502
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)