编写程序:实现一个给定的二维数组(M*N)的转置(行列互换)

谢谢!!!!!!!!!!!

这个问题只要将数组的右上三角形数与左下交换即可。
void main()
{
char str[4][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,t=0;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
printf("%2d ",str[i][j]);
}
printf("\n");
}

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

for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
printf("%2d ",str[i][j]);
}
printf("\n");
}
}

但是对于,非正方形数组,暂时还没想出好的办法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-29
这个问题只要将数组的右上三角形数与左下交换即可。
void
main()
{
char
str[4][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int
i,j,t=0;
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
printf("%2d
",str[i][j]);
}
printf("\n");
}
for(i=0;i<=3;i++)
{
for(j=i+1;j<=3;j++)
{
t=str[i][j];
str[i][j]=str[j][i];
str[j][i]=t;
}
}
for(i=0;i<=3;i++)
{
for(j=0;j<=3;j++)
{
printf("%2d
",str[i][j]);
}
printf("\n");
}
}
但是对于,非正方形数组,暂时还没想出好的办法。
第2个回答  2010-06-15
int len_a= a.length;
int len_b= a[0].length;
for(int i=0;i<len_a;i++){
for(int j=0;i<len_b;j++){
b[j][i] = a[i][j];
}

}
第3个回答  2010-06-13
a[i][j] = b[j][i];