5.5.2 转置矩阵
【 例 5-5 】编写程序,对如下 3 行 4 列的矩阵实现转置,并将转置结果打印输出。
所谓转置矩阵,就是将原来矩阵中的行变成列、列变成行,从而得到一个新的矩阵的过程。因此,案例中给出的是一个 3 行 4 列的矩阵,那么经过转置矩阵后,所产生的新矩阵应该是 4 行 3 列的。
首先在程序中定义一个 3 行 4 列的 int 类型的二维数组 raw_matrix,并以行初始化的方式保存原始矩阵中的数据。然后再定义一个 4 行 3 列的二维数组 new_matrix,用于存储转置矩阵后所产生的新矩阵中的数据。
接着使用双层 for 循环语句来进行矩阵转置,将结果存储到数组 new_matrix 中:
外层循环使用的变量 i 是按新矩阵行的大小进行自增的,内层循环使用的变量 j 则是按新的矩阵列的大小进行自增的,在内层循环的循环体中只有一条语句:
new_matrix[i][j] = raw_matrix[j][i];
在内层循环被执行时,i 的值会保持不变,而 j 的值会从 0 自增至 2。这条语句的作用就是将原始矩阵第 i 列的各元素值,赋值给新矩阵第 i 行的各元素。
而外层循环中的变量 i 的值,会依次从 0 自增至 3,结合内层循环,就会达到如下效果:
将原始矩阵第 1 列的各元素值,赋值给新矩阵第 1 行的各元素。
将原始矩阵第 2 列的各元素值,赋值给新矩阵第 2 行的各元素。
将原始矩阵第 3 列的各元素值,赋值给新矩阵第 3 行的各元素。
将原始矩阵第 4 列的各元素值,赋值给新矩阵第 4 行的各元素。
完成矩阵的转置后,再使用双层 for 循环语句,打印出原始矩阵和新矩阵中的各元素。
整个程序的代码如下:
在进行打印输出时,对于纯字符串,程序中使用了 puts 函数,因为它更加方便和简洁,并且它还会有一个附加的特殊功能:自动在字符串后输出换行字符,达到换行的效果。程序中使用 puts 函数来打印一个空字符串,其实这只是想得到一个换行的效果而已,它与“printf("\n")”的效果相同。
程序运行的结果如下:
可见,原始矩阵中的行变成了新矩阵中的列,而原始矩阵中的列变成了新矩阵中的行,完成了矩阵转置的功能。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论