谁教我单偶幻方的框怎么填
											谁教我单偶幻方的框怎么填										
					
	
程序代码:#include <stdio.h>
#define N 100
void oujie(int oushu)
{
    int a[N][N]={0},i,j,k=1,n,m;        
    n=oushu/2;
    m=(oushu-2)/4;
    for(i=1,j=3*n/2;k<=n*n;)
    {            
        if(i<0)
        {    i=i+3*n;    continue;    }
        if(j>=3*n)
        {    j=j-3*n; continue;    }
        if(j<0)
        {    j=j+3*n;    continue;    }
        if(a[i][j]!=0)
        {
            i=i+2*3;
            j=j-1*3;
            if(i>3*n)
            {    i=i-3*n;    continue;    }                                                                          
            if(j<0)
                {    j=j+3*n;    continue;    }
            }
        a[i][j]=k++;
        i=i-3;
        j=j+3;                
    }
    
    for(i=1;i<3*n;i=i+3)
        for(j=1;j<3*n;j=j+3)
        {
            if(i<(3*(m+1)-3)||i==(3*(m+1)-2)&&j!=(3*(m+1)-2)||i==(3*(m+1)+1)&&j==(3*(m+1)-2))
                a[i-1][j]=1;
            else if(i==(3*(m+1)+1)&&j!=(3*(m+1)-2)||i==(3*(m+1)-2)&&j==(3*(m+1)-2))
                a[i-1][j]=2;
            
            else a[i-1][j]=3;
        }
    
    for(i=1;i<3*n;i=i+3)
        for(j=1;j<3*n;j=j+3)
        {
            if(a[i-1][j]==1)
            {
                a[i-1][j-1]=4*a[i][j];
                a[i-1][j+1]=4*a[i][j]-3;
                a[i+1][j-1]=4*a[i][j]-2;
                a[i+1][j+1]=4*a[i][j]-1;
            }
            if(a[i-1][j]==2)
            {
                a[i-1][j-1]=4*a[i][j]-3;
                a[i-1][j+1]=4*a[i][j];
                a[i+1][j-1]=4*a[i][j]-2;
                a[i+1][j+1]=4*a[i][j]-1;
            }
            if(a[i-1][j]==3)
            {
                a[i-1][j-1]=4*a[i][j]-3;
                a[i-1][j+1]=4*a[i][j];
                a[i+1][j-1]=4*a[i][j]-1;
                a[i+1][j+1]=4*a[i][j]-2;
            }
        }
    
    for(i=0;i<3*n;i=i+1)
    {
        {
        for(j=0;j<3*n;j=j+1)
        {
            printf("%4d",a[i][j]);
            j=j+2;
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }    
        i=i+2;
    {
        for(j=0;j<3*n;j=j+1)
        {
            printf("%4d",a[i][j]);
            j=j+2;
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    }    
}
void jijie(int n)
{
    int a[N][N]={0},i,j,k=1;
        
    for(i=0,j=n/2;k<=n*n;)
    {            
        if(i<0)
        {    i=i+n;    continue;    }
        if(j>=n)
        {    j=j-n; continue;    }
        if(j<0)
        {    j=j+n;    continue;    }
        if(a[i][j]!=0)
        {
            i=i+2;
            j=j-1;
            if(i>n)
                {    i=i-n;    continue;    }
            if(j<0)
                {    j=j+n;    continue;    }
            }
        a[i][j]=k++;
        i--;
        j++;                
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            printf("%4d",a[i][j]);
        printf("\n");
    }            
}
main()
{
        int n;
    printf("偶数阶数为4n+2,且阶数为3到66之间\n");
    printf("请输入幻方的阶数:");
    scanf("%d",&n);
    if(n%2==0&&n>=4&&n<66&&(n-2)%4==0)
        oujie(n);
    else if(n%2==1&&n<66)
        jijie(n);
    else
        printf("错误的阶数!\n");
}