如何将原矩阵的行变成列 列变成行 是否需要再引入一个新的矩阵来储存新的矩阵 , 用详细的注释来说明
时间: 2024-09-07 10:03:46 浏览: 19
当你想要将一个矩阵的行变成列、列变成行,也就是实现矩阵的转置,的确需要创建一个新的矩阵来存放转换后的结果。以下是C语言中的一种常见做法,我会用详细的注释来解释每一步:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 4
// 创建原始矩阵
int original_matrix[ROWS][COLS] = {
{1, 2, 3, 4}, // 原始矩阵的第一行
{5, 6, 7, 8}, // 第二行
{9, 10, 11, 12} // 第三行
};
// 创建用于存放转置矩阵的新矩阵
int transposed_matrix[COLS][ROWS];
// 函数声明
void transpose(int source[ROWS][COLS], int target[ROWS][COLS]);
// 主函数
int main() {
transpose(original_matrix, transposed_matrix); // 调用转置函数并将结果存入transposed_matrix
// 打印原始矩阵
printf("Original Matrix:\n");
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", original_matrix[i][j]);
}
printf("\n");
}
// 打印转置矩阵
printf("Transposed Matrix:\n");
for (int i = 0; i < COLS; i++) {
for (int j = 0; j < ROWS; j++) {
printf("%d ", transposed_matrix[i][j]); // 输出新矩阵的元素
}
printf("\n");
}
return 0;
}
// 矩阵转置函数
void transpose(int source[ROWS][COLS], int target[ROWS][COLS]) {
// 使用两层循环遍历源矩阵
for (int i = 0; i < ROWS; i++) { // 源矩阵的行
for (int j = 0; j < COLS; j++) { // 源矩阵的列
// 将源矩阵(i, j)位置的元素复制到目标矩阵(j, i)位置
target[j][i] = source[i][j];
}
}
}
阅读全文