爱问知识人 爱问教育 医院库

1到25排成方阵

首页

1到25排成方阵

1到25排成方阵,横竖对角相加等于65,用C/C  实现,敬请各位大侠帮忙,小生多谢啦!

提交回答

全部答案

    2004-12-28 00:12:23
  •   任一阶幻方:
    #include 
    #include 
    void swap(int *a,int *b)
    {
        int t;
        t=*a;
        *a=*b;
        *b=t;
    }
    void hf1(int n,int *p)
    {
        int m=1,i,j,k,l;
        for(i=0;in*n)
         break;
    k=i-1;
    l=j+1;
    if(k==-1)
         k=n-1;
    if(l==n)
         l=0;
    if(*(p+k*n+l)!=0){
         i++;
         continue;
    }
    i=k;
    j=l;
        }
    }
    void hf2(int n,int *p)
    {
        int i,j,*q;
        q=malloc(n*n/2);
        hf1(n/2,q);
        for(i=0;i=n-(n-4)/4;j--)
         swap(p+i*n+j,p+(i+n/2)*n+j);
        }
        swap(p+(n/2-1)/2*n,p+(3*n/2-1)/2*n);
        swap(p+(n/2-1)/2*n+(n/2-1)/2,p+(3*n/2-1)/2*n+(n/2-1)/2);
    }
    void hf3(int n,int *p)
    {
        int i,j,k,m=1;
        for(i=0;i=n/2;i++,j--){
         if(i==n)
      i=0;
         swap(p+i*n+j,p+(n-1-i)*n+n-1-j);
    }
        }
    }
    void main()
    {
        int i,j,n,*p;
        printf("Enter n:");
        scanf("%d",&n);
        p=malloc(2*n*n);
        if(n%2!=0)
    hf1(n,p);
        else if(n%4!=0)
    hf2(n,p);
        else
    hf3(n,p);
        for(i=0;i  

    z***

    2004-12-28 00:12:23

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):