求助,这题要这么做啊?

图片说明

// Q713919.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

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

int movenext(int *x, int *y, int *dir, int n)
{
    if (*x == *y && *y == n - 1) return false;
    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;
    }
    return true;
}

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++)
    {
        movenext(&x, &y, &dir, n);
        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;
}


图片说明

如果问题得到解决,请点我回答左上角的采纳和向上的箭头,谢谢