矩阵转置 请问哪里错了

img


#include "stdio.h"
void fun(short a[3][3])
{
int i,j,tmp;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
tmp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=tmp;
}
}

void main()
{
short a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j;
fun(a[3][3]);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
}


#include "stdio.h"
void fun(short a[3][3])
{
    int i, j, tmp;
    for (i = 0; i < 3; i++)
        for (j = 0; j < 3; j++)
        {
            if (j > i)
            {
                tmp = a[i][j];
                a[i][j] = a[j][i];
                a[j][i] = tmp;
            }
        }
}
void main()
{
    short a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int i, j;
    fun(a);
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
            printf("%d", a[i][j]);
        printf("\n");
    }
}