标签:magic 魔方打印
#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
标签:magic 魔方打印
原文地址:http://sts609.blog.51cto.com/11227442/1749368