C语言矩阵旋转问题 输出结果未达到预期

矩阵旋转问题
【问题描述】
输入矩阵阶数n,给n阶矩阵的元素按行序由1到n*n顺序赋值,然后将其向右旋转90度,输出旋转后的矩阵。
【输入形式】
控制台输入阶数n。
【输出形式】
输出旋转90度后的矩阵,其中每个数字占4位字符的宽度,向右对齐。
【样例输入】
4
【样例输出】
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4

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

int main()
{
    int n,i=0,j=0,t=1,x=0,y=0;
    int a[50][50];
    int b[50][50];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(;j<t*n;j++)
        {
            a[i][j]=j+1;
            //printf("%d ",a[i][j]);
        }
        //printf("\n");
        j = t*n;
        t++;
    }

    for(y=n-1,i=0;i<n,y>=0;i++,y--)
    {
        for(x=0,j=0;x<n,j<n;x++,j++)
            {
                b[x][y] = a[i][j];
            }
    }

    for(x=0;x<n;x++)
    {
        for(y=0;y<n;y++)
        {
            printf("%d ",b[x][y]);
        }
        printf("\n");
    }
    return 0;
}

运行结果及报错内容:
输入4,结果输出了
0 0 0 1
0 0 0 2
0 0 0 3
0 0 0 4

我想要达到的结果:
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4

可以帮我看看是哪里出问题了吗?

望采纳

下面是一个示例代码:

#include 

int main() {
    int n;
    scanf("%d", &n);

    // 定义并初始化原矩阵
    int matrix[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &matrix[i][j]);
        }
    }

    // 旋转后的矩阵
    int rotated_matrix[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            // 注意旋转90度后的元素下标发生了变化
            rotated_matrix[j][n - 1 - i] = matrix[i][j];
        }
    }

    // 输出旋转后的矩阵
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            // %4d表示输出一个整数,宽度为4,右对齐
            printf("%4d", rotated_matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

在代码中,首先输入矩阵的阶数,然后输入矩阵的元素。随后,我们定义旋转后的矩阵,并通过改变下标的方式对原矩阵进行旋转。最后,输出旋转后的矩阵即可。

需要注意,在旋转后的矩阵中,每个元素的下标与原矩阵中的下标是不一样的,因此需要计算旋转后的下标。比如,对于一个3阶矩阵,旋转90度后第1行第1列的元素原来位于第3行第1列,第1行第2列的元素