#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();
}
#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();
}