早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C++,请求帮助!谢谢~~编写函数,给奇数阶幻方矩阵赋值.N阶幻方阵是指在N×N方阵中填充1~N2这N2个不同的数,使方阵的每一行,每一列和对角线上元素之和均相等.在主函数中设计一个循环,从键盘输

题目详情
C++,请求帮助!谢谢~~
编写函数,给奇数阶幻方矩阵赋值.N阶幻方阵是指在N×N方阵中填充1~N2这N2个不同的数,使方阵的每一行,每一列和对角线上元素之和均相等.在主函数中设计一个循环,从键盘输入的幻方阵阶数N,如果输入N为偶数,提示错误,重新输入.当输入为0时,循环结束,同时整个程序结束.如果N为奇数,则动态定义二维数组,调用函数magic求幻方阵,并在主函数中编写函数print输出幻方矩阵,编写并调用函数checking验证你求得的矩阵是否满足幻方矩阵的定义.例如:
输入:3
输出:
8 1 6
3 5 7
4 9 2
幻方通过了验证.
输入: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
幻方通过了验证.
提示:魔方阵的赋值规律如下:(a)将1放在第一行最中间的列;(b)从2开始直到N2为止的各数填在前一个数的右上方;(c)如果该位置超出最上行,则改填在最下行的对应列的位置;(d)如果该位置超出最右列,则改填在最左列的对应行的位置;(e)如果该位置既超出最上行又超出最右列,则改填在前一个数的下面;(f)如果右上角的位置上已经填了其他数据,则改填在前一个数的下面.
▼优质解答
答案和解析
代码如下 .内容比较简单,计算过程就是你给的过程,所以不写注释了.看不懂了再问.#include#includeusing namespace std;void magic(int** magicArray, int size){ int lastRow = 0; int lastCol = size / 2; ...