奇数魔方阵的每个数字(1~n^2)都是有规律的,
1.数字1位于第一行中间,2位于1的上一行、下一列,3位于2的上一行、下一列,依次类推。
第1行的上一行是第n行,第n列的下一列是第1列。
这一点可以在程序中用判断语句解决,也可以像本程序中用取余数的方法解决。
2.此外,以3阶魔方阵为例,按以上规律,数字4的位置,是在数字1的位置上,所以手动调整4到3的下方,再按照上面的规律类推,数字7也是如此。
本程序中使用了一个判断语句,当i循环到可以整除n的数字时,就需要手动调整。当i不能被n整除时,则按照1中的方法处理。
3.本程序代码中含有大量验证 输出结果是否为魔方阵的代码,已用//for verify 等注释表明。
程序代码如下:
#include <stdio.h>
int main()
{
int mq[999][999];
int i,j;
int n,nrow,ncol;
//
int sumrow[999]={0};//for verify
int sumcol[999]={0};//for verify
int boo;//for verify
//only for odd number. //no even
printf("please input a odd number :\n");
scanf("%d",&n);
printf("There is a %d order Mag