怎么做?是异形方阵,望解答!!

边长为 n 的数字方阵,其中的数字符合某种规律。n = 3 时,方阵如下:

1 4 9
2 3 8
5 6 7

给出 n ,输出对应的数字方阵。

输入
输入一个数n(0<n<=20)
输出
输出边长为 n 的数字方阵。
数据范围
0<n<=20
输入样例
4
输出样例
1 4 9 16
2 3 8 15
5 6 7 14
10 11 12 13

两层循环


#include<stdio.h>
int main()
{
    int n,i,j,k=1;
    scanf("%d",&n);
    int a[n][n];
    for(i=0;i<n;i++)
    {
        for(j=0;j<=i;j++)
        a[i][j]=k++;
        for(j=i-1;j>=0;j--)
        a[j][i]=k++;    
    }
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {
        printf("%d",a[i][j]);
        if(j<n-1)
        printf(" ");
        else
        printf("\n");
    }
} 
#include <stdio.h>

#define N 20

int main()
{
    int n, a[N][N], count = 1;
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j <= i; j++)
            a[i][j] = count++;
        for (int j = i - 1; j >= 0; j--)
            a[j][i] = count++;
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            printf("%3d ", a[i][j]);
        printf("\n");
    }
    return 0;
}