调用的函数应该怎么写 输出结果很离谱 想知道怎么改

使用数组的程序的设计(20分)
(1)将一个N×N矩阵转置(行列互换)后输出。要求使用数组存放矩阵,设计转置函数Trans()实现矩阵的转置(行列互换 ),不能使用全局变量和全局数组。
(2)主函数:设计数组存放矩阵,然后调用转置函数Trans()实现矩阵的转置,再调用输出函数Output()打印输出转置后的矩阵。

运行程序并验证输出如下的结果:

初始矩阵:
11 22 33
44 11 55
66 77 88
转置后的矩阵:
11 44 66
22 11 77
33 55 88


//矩阵逆置
 #include<stdio.h>
 void Trans(int a[3][3],int b[3][3]){
     for(int i=0;i<3;i++){
         for(int j=0;j<3;j++){
          b[i][j]=a[j][i];
          
     }    
 }
}
 int output(int a[3][3],int b[3][3]){
 for(int i=0;i<3;i++){
         for(int j=0;j<3;j++){
             printf("%d",b[i][j]);
}
printf("\n");
}
return 0;
}
 int main(){
     int a[3][3],b[3][3];
     int i,j;
     printf("请输入一个3*3标准矩阵:");
     for(int i=0;i<3;i++){
         for(int j=0;j<3;j++){
             scanf("%d",&a[i][j]);
         }
    }
        for(int i=0;i<3;i++){
         for(int j=0;j<3;j++){
             printf("%d",&a[i][j]);
}
}
     Trans(a,b);
     output(a,b);
     return 0;
     
 }

你只是输出没加空格和换行
printf()函数中变量前不要加&

你题目的解答代码如下:

#include <stdio.h>
void Trans(int a[3][3], int b[3][3])
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            b[i][j] = a[j][i];
        }
    }
}
int output(int a[3][3], int b[3][3])
{
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("%d ", b[i][j]);
        }
        printf("\n");
    }
    return 0;
}
int main()
{
    int a[3][3], b[3][3];
    int i, j;
    printf("请输入一个3*3标准矩阵:");
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            printf("%d ", a[i][j]);//&去掉
        }
        printf("\n");
    }
    Trans(a, b);
    output(a, b);
    return 0;
}

如有帮助,望采纳!谢谢!