方阵转置
问题描述
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号
例如,如下的方阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16转置后变为:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
解题思路
转置定义
一个矩阵M, 把它的第一行变成第一列,第二行变成第二列,…,最末一行变为最末一列, 从而得到一个新的矩阵N。 这一过程称为矩阵的转置。即矩阵A的行和列对应互换。
a [i] [j] = b [j] [i]
代码
#include <stdio.h>
//实现转置功能
void transpose(int a[4][4])
{
int b[4][4];
int i = 0;
int j = 0;
for (i = 0;i < 4;i++)
{
for (j = 0;j < 4;j++)
{
b[j][i] = a[i][j];//行列互换
}
}
//输出转置后矩阵
for (i = 0;i < 4;i++)
{
for (j = 0;j < 4;j++)
{
printf("%d ",b[i][j]);
}
printf("\n");//换行操作
}
}
int main()
{
//定义矩阵
int a[4][4] = { {1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16} };
//实现转置功能的函数
transpose(a);
return 0;
}
总结
- 双层for循环涉及的局部变量的定义
- 越是简单越要认真编译