#include " Stdio.h " #include " Conio.h " #define MAX 150 main() ... { int n,i,j,m=1,s,k,t,z; int a[MAX][MAX]; system("graftabl 936"); clrscr(); printf("|--------------------------------------------------|"); printf(" | 奇偶幻方 |"); printf(" | Estel |"); printf(" | HF.C 07/01/27 |"); printf(" | 输入一个数字N,生成一个N*N的矩阵 |"); printf(" | 并使之横竖斜线的和相等,组成幻方 |"); printf(" |--------------------------------------------------|"); printf(" 示例: (N): N=3 8 1 6 3 5 7 4 9 2 "); printf(" input a Digital (N): "); scanf("%d",&n); while(n>MAX||n<3) ...{ printf(" %d 错误, %d> N >3: ",n,MAX); scanf("%d",&n);} if(n%2==0) /**//* 判定为偶数 */ ...{ for(i=0;i<n;i++) /**//* 为N*N矩阵赋值 */ for(j=0;j<n;j++) ...{a[i][j]=m; m++;} k=n-1;s=0 ; while(k>=n/2) /**//* 幻方偶数算法 */ ...{ t=a[s][s]; a[s][s]=a[k][k]; a[k][k]=t; t=a[s][k]; a[s][k]=a[k][s] ; a[k][s]=t ; k--;s++ ; } goto JG; } i=0;j=((n+1)/2-1); /**//* 幻方奇数算法 */ while(m<=n*n) ...{ a[i--][j++]=m++; if((m-1)%n==0&&m>=0) ...{i=i+2; j--;} else if(i<0)i+=n; else if(j>=n)j-=n; }JG: printf(" N=%d ",n); /**//* 输出结果 */ for(i=0;i<n;i++) ...{ for(j=0;j<n;j++) printf("%-5d ",a[i][j]); printf(" "); } printf(" Please any key ") ; getch();}