求助,这题要这么做啊?

图片说明

#include "stdio.h"
#include "stdlib.h"

int main()
{
    int x = 0; 
    int y = 0;
    int dir = 0;
    int n;
    scanf("%d", &n);
    int * arr = (int *)malloc(sizeof(int) * n * n);
    arr[0] = 0;
    for (int i = 1; i < n * n; i++)
    {
        if (x == 0 && y == 0)
        {
            y = 1; dir = 1;
        }
        else if (y == 0 && dir == 1)
        {
            if (x < n - 1)
                x = x + 1;
            else
                y = y + 1;
            dir = 2;
        }
        else if (x == 0 && dir == 2)
        {
            if (y < n - 1)
                y = y + 1;
            else
                x = x + 1;
            dir = 1;
        }
        else if (x == n - 1 && dir == 1)
        {
            y = y + 1;
            dir = 2;
        }
        else if (y == n - 1 && dir == 2)
        {
            x = x + 1;
            dir = 1;
        }
        else if (dir == 1)
        {
            x = x + 1;
            y = y - 1;
        }
        else if (dir == 2)
        {
            x = x - 1;
            y = y + 1;
        }
        arr[x * n + y] = i;
    }
    for (int i = 0; i < n * n; i++)
    {
        printf("%d\t", arr[i]);
        if (i % n == n - 1) printf("\n");
    }
    return 0;
}