c语言问题(必采纳)

(我在pta做了很多次都不行)下图是我写的程序,模拟运行没有问题,但是就是显示我答案错误!
输入一个n×n的方阵,把其转置并输出。

输入格式:
测试数据有多组,处理到文件尾。对于每组测试,第一行输入一个整数n(n≤10),接下来的n行每行输入n个不超过2位的整数。

输出格式:
对于每组测试,输出这n×n矩阵的转置方阵,每行的每两个数据之间留一个空格。

输入样例:
5
5 51 96 80 45
51 57 77 45 47
72 45 58 83 21
0 28 42 72 42
91 61 7 73 66
输出样例:
5 51 72 0 91
51 57 45 28 61
96 77 58 42 7
80 45 83 72 73
45 47 21 42 66

img

你的实现仅仅是在输出上将数组以转置的形式输出,数组本身并没有转置。题目的要求是将其转置并输出。我实现了一版,供你参考。如果对你有帮助,望采纳。

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int arr[n][n];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &arr[i][j]);
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < i; j++) {
            int tmp = arr[i][j];
            arr[i][j] = arr[j][i];
            arr[j][i] = tmp;
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d", arr[i][j]);
            if (j != n - 1)
                printf(" ");
        }
        printf("\n");
    }
    return 0;
}