中易网

用c语言求幻方. 给定任意自然数n>3,要求输出相应的n阶幻方. 如,给定n=7,就输出所有的由1

答案:1  悬赏:20  
解决时间 2021-01-17 12:00
用c语言求幻方. 给定任意自然数n>3,要求输出相应的n阶幻方. 如,给定n=7,就输出所有的由1
最佳答案
只实现了奇数的情况,其他情况参照百度百科。

#include
#include
#include

void magic(int);
void magic1(int);
void magic4(int);
void magic42(int);

void magic(int n)
{
    if(n==1)
    {
         printf("1
");
         return;
    }
    if(n==2)
    {
        printf("不存在
"); 
        return; 
    }    
    if(n%2==1)
    {
        magic1(n);
        return;
    }
    else if(n%4==0)
    {
        magic4(n);
        return;    
    }
    else 
    {
        magic42(n);
        return;
    }
}
void magic1(int n)
{
    int **a = (int **)malloc(sizeof(int*)*n);
    int i;
    int j;
    int k;
    
    for(i=0;i    {
        a[i]=(int *)malloc(sizeof(int)*n);       
    }
    
    for(i=0; i    {
        for(j=0; j        {
            a[i][j]=0;
        }
    }
    //首先确定1的位置,在第一行中间列。
    j=n/2;
    a[0][j]=1;
    for(k=2; k<=n*n; k++)
    {
        i--;
        j++;
        //保证行列数的循环。
        if(i<0)
        {
            i=n-1;
        }
        if(j>n-1)
        {
            j=0;
        }
        if(a[i][j]==0)
        {
            a[i][j]=k;
        }
        else
        {
            i=(i+2)%n;
            j=(j-1+n)%n;
            a[i][j]=k;
        }
    }
    printf("

");
    for(i=0; i    {
        printf(" ");
        for(j=0; j        {
            printf("%d ",a[i][j]);
        }
        printf("

");
    }
    for(i=0;i    {
        free(a[i]);
    }
    free(a);
    return;
}

void magic4(int n)
{
    return;    
}

void magic42(int n)
{
    return;
}
int  main()
{
     int n;
     while(scanf("%d",&n) != EOF)
     {
         magic(n);
     }   
}




我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
米多面多(平安路店)的照烧鸡肉好不好吃
请教一下九个月的小型泰迪还会不会在长大体重
AMD FirePro S9300 双 GPU 服务器显卡是不是
九五公馆怎么去啊,我要去那办事
植物抗逆投2.5以上投什么sci
女朋友说被我每次被我一摸她就走不动了,感觉
我是女生,我给一个女生B有很深的矛盾,我想
气保焊机(奥太焊机)上面的电感有什么用处?
想买黄金贵妃镯 请戴过的给点建议
求教NBA2K14 mc模式怎么持球转身
60×括号x-4括号=30x-30x=多少
为什么好多人都把一楼叫做二楼 二楼叫做三楼
谁有小猪佩奇英文原版(1-5季)资源在线等急
dnf清泉流响可以跨界吗
k600火车6车13号靠窗吗
推荐资讯
最新的可以看的推荐
威海人饮食习惯作文开头
路宽4米两边是墙,门宽3米能过去吗?普桑?直
志高空调,开不了机,是什么回事
与女朋友匆忙的见面就分开了,才过了一天就感
男人会因感动而爱上一个人吗
生又何尝生,死又何曾死,近在眼前,汝所见皆彼,
西河阳村地址有知道的么?有点事想过去
引航理科地址在哪,我要去那里办事
证书编号99000344518s925天然托帕石吊坠1.16
泰兴是个什么城市
为什么配对不了Apple Watch
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?