挑战一下吧!!!打印如下方阵,从键盘输入矩阵大小,输出如下方阵

问题遇到的现象和发生背景

挑战一下吧!!!,修改如下代码

用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
int n;
int i = 0;  //行  
int j = 0;  //列  
int k = 1;  //运动方向. k =1 →;  k=2 ↙; k=3 ↓ ;k=4 ↗
int data[100][100];
 
int main()
{
    printf("输入矩阵阶数:\n");
    scanf_s("%d", &n);
    //------------------判断方向
    while (i != n - 1 || j != n - 1)
    {
        if (k == 1) 
        {
            data[i][j + 1] = data[i][j] + 1;
            j++;
            if (i == n - 1) 
            {
                k = 4;
            }
            else
            {
                k = 2;
            }
        }
        else if (k == 2) 
        {
            data[i + 1][j - 1] = data[i][j] + 1;
            j--;
            i++;
            if (j == 0 && i != n - 1)
            {
                k = 3;
            }
            else if (i == n - 1) 
            {
                k = 1;
            }
            else 
            {
                k = 2;
            }
        }
        else if (k == 3) 
        {
            data[i + 1][j] = data[i][j] + 1;
            i++;
            if (j == n - 1) 
            {
                k = 2;
            }
            else 
            {
                k = 4;
            }
        }
        //-------------------------生成矩阵元素
        else if (k == 4) 
        {
            data[i - 1][j + 1] = data[i][j] + 1;
            j++;
            i--;
 
            if (i == 0 && j != n - 1)
            {
                k = 1;
            }
            else if (j == n - 1)
            {
                k = 3;
            }
            else 
            {
                k = 4;
            }
        }
    }
    //显示矩阵  
    for (int a = 0; a < n; a++) 
    {
        for (int b = 0; b < n; b++) 
        {
            printf("%d\t", data[a][b]);
        }
        printf("\n");
        printf("\n");
    }
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
4×4方阵
1    2    3    4
12   13   14    5
11   16   15    6
10    9    8    7
 5×5方阵
 1    2    3    4    5
16   17   18   19    6
15   24   25   20    7
14   23   22   21    8
13   12   11   10    9