首页 > 代码库 > 输出n阶“魔方阵”

输出n阶“魔方阵”

魔方阵:每一行、每一列和对角线之和均相等。

技术分享

程序如下:

 1 #include <stdio.h> 2 #include <stdlib.h> 3 int main() 4 { 5     //输出魔方阵 6     int i,j,k,p,n,a[15][15]; 7     p=1;//用于判断输入的数字是否符合条件 8     while(p==1){ 9         printf("enter n (n=1--15):");10         scanf("%d",&n);11         if((n!=0)&& (n<=15) && (n%2!=0))12             p=0;13     }14     //初始化15     for(i=1;i<=n;i++)16         for(j=1;j<=n;j++)17             a[i][j]=0;18     j=n/2 + 1;19     a[1][j]=1;20     for(k=2;k<=n*n;k++){21         i=i-1;22         j=j+1;23         //确立数放置的位置24         if((i<1) && (j>n)){25             i=i+2;26             j=j-1;27         }28         else{29             if(i<1) i=n;30             if(j>n) j=1;31         }32         //置数33         if(a[i][j]==0){34             a[i][j]=k;35         }else{//位置上已有数36             i=i+2;37             j=j-1;38             a[i][j]=k;39         }40     }41     //输出魔方阵42     for(i=1;i<=n;i++){43         for(j=1;j<=n;j++)44             printf("%5d",a[i][j]);45         printf("\n");46     }47     system("pause");48     return 0;49 }

 

输出n阶“魔方阵”