// test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <stdio.h> #define MAX 15 /* 求解幻方问题(奇数次幻方) */ int _tmain(int argc, _TCHAR* argv[]) { int m,mm,i,j,k,ni,nj; int magic[MAX][MAX]; printf("Please Enter the number of the magic square:"); scanf("%d",&m); for(i = 0;i<m;i++) for(j = 0;j<m;j++) magic[i][j] = 0; if( m > 0&&(m%2 != 0)) { mm = m*m; i = 0; j = m/2; for(k = 1;k <=mm;k++) { magic[i][j] = k; if(i==0) ni = m-1; else ni = i-1; if(j==m-1) nj = 0; else nj = j+1; if(magic[ni][nj]==0) //右上方为空 { i = ni;j = nj; } else //右上方已填有数字 i++; } for(i =0;i<m;i++) { for(j = 0;j<m;j++) printf("%4d",magic[i][j]); printf("\n"); } } return 0; }