求助C语言高手,关于魔方矩阵的问题
把整数1到n2排成一个n×n方阵,使方阵中的每一行,每一列以及对角线上的数之和都相同。
①n阶魔方阵的产生;生成后的魔方阵要写入文件。
②最大值的位置;
③指定行的排序,排序方法不限;
④求素数;
⑤求完数;
⑥求水仙花数;
⑦退出。
(2)功能要求
①系统以菜单方式工作;菜单形式不限。
②界面比较美观。
③要有一定的容错能力,比如说按行排序是输入一个不存在的行号,输入的魔方阵阶数为偶数等。
(3)算法分析
如n为奇数,魔方阵可按下述方法构成:
(1)把1填在第一行的正中间,然后填入后续的数;
(2)若数k填在第i行第j列的格子中,那么k+1应填在它的左上方,即第i-1行第j-1列的那个格子中,如果左上方无格子,即:若i-1为0,那么填在第n行第j-1列的格子中;若j-1为0,那么填在第i-1行第n列的格子中;若i-1和j-1都为0,那么填在第n行第n列的格子中。
(3)若按(2)的方法找到的格子中已填过数了,那么数k+1改填在第k个数的正下方。即填在第i+1行和第j列的那个格子中。