关于输出魔方阵的问题
输出一个1~N^2的自然数构成的魔方阵。就是每一行,每一列和对角线之和均相等。 例如3阶魔方阵:
8 1 6
3 5 7
4 9 2
请写个程序参考参考
#include <time.h> #include <stdio.h> #define N 5 //幻方的阶数,可以改成任意大于等于3的奇数 main() { int a[100][100]={0},i,k,m,iold,kold,x,y; i=1,k=N/2+1; for(m=1;m<=N*N;m++) { a[i][k]=m; iold=i,kold=k; i--,k++; if(i==0)i=N; if(k==N+1)k=1; if(a[i][k]!=0)i=iold+1,k=kold; for(x=1;x<=N;x++) { for(y=1;y<=N;y++) printf("%5d",a[x][y]); printf("\n"); } printf("\n\n"); for(x=0;x<10;x++) //延时0.3秒 delay(29999); } getchar(); }
#include <time.h> #include <stdio.h> #define N 5 main() { int a[100][100]={0},i,k,m,iold,kold,x,y; i=1,k=N/2+1; for(m=1;m<=N*N;m++) { a[i][k]=m; iold=i,kold=k; i--,k++; if(i==0)i=N; if(k==N+1)k=1; if(a[i][k]!=0)i=iold+1,k=kold; } for(x=1;x<=N;x++) { for(y=1;y<=N;y++) printf("%5d",a[x][y]); printf("\n"); } printf("\n\n"); getchar(); }