魔方阵:每一行、每一列和对角线之和均相等。
程序如下:
1 #include2 #include 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 }