#include <stdio.h> #include <stdlib.h> #define N 4 //测试所用 void fun() { int a[9][9],r,c,num,n; //最大9*9的矩阵 可以修改规模 n=N; for(r=0;r<n;r++) for(c=0;c<n;c++) a[r][c]=0; r=0;c=n/2;num=1; a[r][c]=num; //定位第一个元素 while(num<n*n) { num++; if(r==0&&c==n-1)r++; else { r--;c++; if(r<0)r=n-1; //不断定位 if(c==n)c=0; if(a[r][c]!=0){r+=2;c--;} } a[r][c]=num; //根据定位 逐渐从1填到n*n } for(r=0;r<n;r++) //打印 n数据大时 需要调节%4d等格式化输出 {for(c=0;c<n;c++) printf("%3d",a[r][c]); printf("\n"); } } void main() { fun(); } 注意到magic(4)在matlab里只有一种打印方式 是有内部函数实现的,而4阶幻方是有不同的写法 这里难点在于循环定位,而基本性质1 求和项值为n(n*n+1)/2 而奇数阶中间值为(n*n+1)/2
小代码3 魔方矩阵
原创
©著作权归作者所有:来自51CTO博客作者文洲的原创作品,请联系作者获取转载授权,否则将追究法律责任
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章