用C语言输出“魔方阵”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言输出“魔方阵”相关的知识,希望对你有一定的参考价值。

魔方阵就是指满足每一行、每一列和对角线之和均相等的方阵!要求输出可满足任意阶数的!

这个是17以内奇数阶和四阶的!!!
#include<stdio.h>
void main()

int x,i,j,fl,k=0,a[18][18]=0;
printf("请输入层数:");
scanf("%d",&x);
if((x!=4)&&(x%2==0)||(x<0)&&(x>18))
fl=0;
else if(x==4)

for(i=0;i<x;i++)

for(j=0;j<x;j++)

k+=1;
a[i][j]=k;


for(i=0;i<x;i++)
for(j=0;j<x;j++)

if(((i==j)&&(i<2))||((j==x-i-1)&&(j>2)))

k=a[i][j];a[i][j]=a[x-i-1][x-j-1];a[x-i-1][x-j-1]=k;



else

i=0;
j=x/2;
a[0][j]=1;
for(k=2;k<=x*x;k++)

i=i-1;
j=j+1;
if(i<0&&j>x-1)

i=i+1;
j=j-1;

else

if(i<0)i=x-1;
if(j>x-1)j=0;

if(a[i][j]==0)
a[i][j]=k;
else

i=i+2;
j=j-1;
a[i][j]=k;



if(fl==0)
printf("无此魔方阵!\n");
else

for(i=0;i<x;i++)

for(j=0;j<x;j++)
printf("%4d",a[i][j]);
printf("\n");


参考技术A 奇阶幻方
  当n为奇数时,我们称幻方为奇阶幻方。
偶阶幻方
  当n为偶数时,我们称幻方为偶阶幻方。当n可以被4整除时,我们称该偶阶幻方为双偶幻方;当n不可被4整除时,我们称该偶阶幻方为单偶幻方。

看看参考资料里的百科
里面有代码追问

谢啦!

参考资料:http://baike.baidu.com/view/5058.htm

参考技术B #include"stdio.h"
#define n 3
main()
int s,i,j,m,oi,oj,a[n][n]=0;
s=0;
i=0;
j=n/2;
a[i][j]=1;
for(m=2;m<=9;m++)
oi=i;
oj=j;
if(i==0)
i=n-1;
else
i=i-1;
j=(j+1)%n;
if(a[i][j]!=0)
j=oj;
i=(oi+1)%n;

a[i][j]=m;

printf("\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");

for(i=0;i<n;i++)
for(j=0;j<n;j++)
s=s+a[i][j];
printf("%d,",s);
s=0;


这个是三阶的追问

存在偶数阶的魔方阵吗?

4N魔方阵

 

 

/*
4N魔方阵 
*/

#include<stdio.h>
#include<stdlib.h>

#define N 8

int main(void){
    int i, j;
    int square[N+1][N+1] = {0};
    
    for(j = 1; j <= N; j++){
        for(i = 1; i <= N; i++){
            if(j%4 == i%4 || (j%4 + i%4) == 1){
                square[i][j] = (N+1-i) * N -j + 1;
            }else{
                square[i][j] = (i-1) * N + j;
            }
        }
    }
    
    for(i = 1; i <= N; i++){
        for(j = 1; j<= N; j++){
            printf("%2d ", square[i][j]);
        }
        printf("\\n");
    }
    
    return 0;
} 

 

运行结果:

 

以上是关于用C语言输出“魔方阵”的主要内容,如果未能解决你的问题,请参考以下文章

求c语言输出所有三阶魔方阵的方法,

魔方阵的C语言

求助C语言高手,关于魔方矩阵的问题

奇数阶魔方阵

魔方阵算法

输出n阶“魔方阵”