编写一个3*3矩阵转置的函数,在main()函数中输入数据

来源:百度知道 编辑:UC知道 时间:2024/06/16 23:21:24
#include<iostream>
using namespace std;
void fun(int A[ ][ ])
{
int i,j,t;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
t=A[i][j];
A[i][j]=A[j][i];
A[j][i]=t;
}
}
int main()
{

int A[3][3]={{1,2,3},{4,5,6},{7,8,9}};
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
fun(A[3][3]);
for( i=0;i<3;i++)
{
for( j=0;j<3;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
}
麻烦帮忙看看错在哪了,应该怎么改,谢谢了~!

这样弄完结果是不变的。fun函数参数改成指针类型,跟在下面的操做也改成指针操作就可以了

用指针或是直接交换.
下面是指针的写法:
#include<iostream>
using namespace std;
void fun(int *p)
{
int i,j,k;
for(i=0;i<3;i++)
{
for(j=i;j<3;j++)
{
k=*(p+3*i+j);
*(p+3*i+j)=*(p+3*j+i);
*(p+3*j+i)=k;
}
}
}
int main()
{
int i,j,*p2;
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
for( i=0;i<3;i++)
{
for( j=0;j<3;j++)
cout<<*(*(a+i)+j)<<" ";
cout<<endl;
}
cout<<endl;
p2=&a[0][0];
fun(p2);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<*(*(a+i)+j)<<" ";
cout<<endl;
}
}