大家好,乐天来为大家解答以下的问题,关于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(""); } }。
本文分享完毕,希望对大家有所帮助。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!