c语言魔方阵十种解法(c语言魔方阵)
关于c语言魔方阵十种解法,c语言魔方阵这个很多人还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!
1、所谓的魔方距阵就是一种特殊的奇数阶方阵:它的行,列,对角线。
2、上的数字之和都要相等,且方阵中的每一个数字都不相等,且数字的范围都在1到n*n之间. 我编的程序如下: #include<stdio.h> #define N 15 main() { int i,j,row,cloum,size,square[N][N],count; clrscr(); printf(\"please enter the square size(odd && <=15):\"); scanf(\"%d\",&size); while(size%2==0||size>15||size<3) { printf(\"error due to the wrng input!please input it again!\"); scanf(\"%d\",&size); } for(i=0;i<size;i++) for(j=0;j<size;j++) square[i][j]=0; i=0;j=(size-1)/2; square[i][j]=1; for(count=2;count<=size*size;count++) { row=i-1<0?(size-1):(i-1); cloum=j-1<0?(size-1):(j-1); if(square[row][cloum]) i=(++i)%size; else {i=row; j=j-1<0?(size-1):(j-1); } square[i][j]=count; } printf(\"the %d square is:\",size); for(i=0;i<size;i++) { for(j=0;j<size;j++) printf(\"%d\",square[i][j]); printf(\"\"); } } 只能求奇数的魔方阵 #define N 20 main() { int a[N][N]; int n,i,j,r; scanf(\"%d\",&n); for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]=0; i=0; j=n/2; a[i][j]=1; for (r=2;r<=n*n;r++) if (a[(i+n-1)%n][(j+1)%n]==0) {i=(i+n-1)%n;j=(j+1)%n;a[i][j]=r;} else {i=(i+1)%n;a[i][j]=r;} for(i=0;i<n;i++) { for(j=0;j<n;j++) printf(\"%4d\",a[i][j]); printf(\"\"); } }。
本文到此分享完毕,希望对大家有所帮助。