C语言实现奇数阶魔方阵的方法
本文实例讲述了C语言实现奇数阶魔方阵的方法。分享给大家供大家参考。具体实现方法如下:
#include"stdio.h" #include"string.h" #include"stdlib.h"
#defineN5
voidmain(){ inta[N][N]={0}; inti,j; intk;
i=0; j=N/2; a[0][j]=1; for(k=2;k<=N*N;k++){ if(i==0&&j==N-1){//先判断前一个数是不是最右上角的数,若是后一个数直接填在前一个数下方 i=i+1; a[i][j]=k; continue; } i=(i-1+N)%N;//计算前一个数右上角的坐标 j=(j+1)%N; if(a[i][j]!=0){//若前一个数的右上角有元素,后一个数直接填在前一个数下方 i=((i+1)%N+1)%N;//恢复坐标 j=(j-1+N)%N; a[i][j]=k; }else{//上述条件均不满足,后一个数放在前一个数的右上角 a[i][j]=k; } }
for(i=0;i<N;i++){ for(j=0;j<N;j++){ printf("M",a[i][j]); } printf("\n"); } }