#include " Stdio.h " #include " Conio.h " #define MAX 150 int a[MAX][MAX];main() ... { int n,i,j,m=1,s,k,t,z; 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>150||n<3) ...{ printf(" %d error, 150> N >3: ",n); scanf("%d",&n);} if(n%2==0) ...{ for(i=0;i<n;i++) 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 exit ") ; xieru(n); getch();} xieru( int n) ... {FILE *fp; int i,j; if((fp=fopen("data.txt","w"))==NULL) printf("保存数据失败= 无法建立或写入data.txt"); fprintf(fp,"幻方矩阵排列: "); for(i=0;i<n;i++) ...{ for(j=0;j<n;j++) fprintf(fp,"%-5d ",a[i][j]); fprintf(fp," ") ; }}