> 文章列表 > c语言魔方阵十种解法(c语言魔方阵)

c语言魔方阵十种解法(c语言魔方阵)

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(\"\");  }  }。

本文到此分享完毕,希望对大家有所帮助。