数组交换行列为什么没有成功

#include
//#include"stdafx.h"
#include

using namespace std;

//int fun(int array[3][3]);

int fun(int array[3][3])
{
int i, j,t;

for (i = 0; i < 3; i++)
{
    for (j = 0; j < 3; j++)
    {
        t = array[i][j];
        array[i][j] = array[j][i];
        array[j][i] = t;
    }
}


cout << "+++++++++++++++++"<<endl;
for (i = 0; i < 3; i++)
{
    for (j = 0; j < 3; j++)
        cout << setw(7) << array[i][j];
    cout << endl;
}
return 0;

}

int main()
{
int i, j;
int array[3][3] = { {1,2,3,}, {4,5,6}, {7,8,9} };
cout << "converted front" << endl;
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
cout <<setw(7)<< array[i][j];
cout<< endl;
}
fun(array);
cout << "converted result;" << endl;
for (int i= 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
cout << setw(7) << array[i][j];
cout << endl;
}
system("pause");
return 0;

}

函数内层循环终止条件 不对,应该是 for (j = 0; j < i; j++) ,否则会导致交换两次,又交换回去了。