C语言关于二维数组行列互换的问题
#include<stdio.h>voidmain(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf("array...
#include <stdio.h>
void main()
{ int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j]; // 这一步为什么要把两个坐标互换。
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
} 展开
void main()
{ int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j]; // 这一步为什么要把两个坐标互换。
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
} 展开
1个回答
展开全部
这两个坐标分别代表行和列,所以“行列互换”实际上就是这两个坐标互换啊。比如第2行第3列换成第3行第2列,不就是b[3][2]=a[2][3]吗?
追问
大神能给我再讲明白点吗。
比如a[i][j]=坐标01=2
b[j][i]=坐标10=2
这样有什么意义。。。
追答
未转换前,二维数组(或者说阵列)的排列是这样的:
1 2 3
4 5 6
即 a[0][0]=1
a[0][1]=2
a[0][2]=3
a[1][0]=4
a[1][1]=5
a[1][2]=6
转换过程如下:
b[0][0]=a[0][0]=1
b[1][0]=a[0][1]=2
b[2][0]=a[0][2]=3
b[0][1]=a[1][0]=4
b[1][1]=a[1][1]=5
b[2][1]=a[1][2]=6
所以这时候b数组如果按行列来排列就是
1 4
2 5
3 6
这样不就是行列互相换过来了吗?
就好比你去电影院看电影,你从第1排第2个座位换到第2排第1个,你还是你,但坐的位置不同了啊,这不正是“行列互换”的意义所在么?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询