输出魔方阵,但是编码只能输出一个数字

#include
#include
int main(){
int n,b,t,i,j;
scanf("%d",&n);
t=pow(n,/2);
int a[t][t];
a[0][(t-1)/2]=1;
i=t-1;j=t-1;b=2;
a[i][j]=b;
for(b=2;b<=n;b++)
{if(i==0)
i=t-1;
a[i][j]=b+1;};
for(b=2;b<=n;b++)
{if(j=t-1)
j=0,i=i-1;
a[i][j]=b+1;};
for(b=2;b{if(a[i-1][j+1]!=0||i==0,j==t)
{i=i-1;
a[i][j]=b+1;};};
for(b=2;b<=n;b++)
{if(i!=0&&j!=t-1&&a[i-1][j+1]==0)
i=i-1,j=j+1;
a[i][j]=b+1;};
for(i=0;i<=t-1;i++)
{for(j=0;j<=t-1;j++)
{printf("%d\t",a[i][j]);};
printf("\n");};

return 0;

}


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

int main()
{
    int a[15][15],n,i,j,k,;
    while (1){
        printf("请输入n(1~15):\n");
        scanf("%d",&n);
        if(n!=0&&n<=15&&n%2!=0)

            break;
        else{
            printf("请输入奇数\n");
            continue;
        }

    }
    for (i=1;i<=n;i++){
        for (j=1;j<=n;j++){
            a[i][j]=0;
        }
    }
    j=n/2+1;
    a[1][j]=1;
    i=1;
    for(k=2;k<=n*n;k++){
        i-=1;
        j+=1;

        if(i<1&&j>n){
            i+=2;
            j-=1;
        }
        else if(i<1){
            i=n;
        }else if(j>n){
            j=1;
        }

        if(a[i][j]==0){
            a[i][j]=k;
        }else{
            i+=2;
            j-=1;

            a[i][j]=k;
        }
    }
    for (i=1;i<=n;i++){
        for (j=1;j<=n;j++){
            printf("%5d",a[i][j]);
        }
        printf("\n");
    }

    return 0;
}



  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:输出螺旋方阵