C语言调用函数实现矩阵转置 不创建新矩阵
时间: 2024-09-15 22:12:33 浏览: 59
在C语言中,为了在原地(即不创建新矩阵)实现矩阵转置,你可以利用指针和临时变量。假设我们有一个二维数组代表矩阵,矩阵的行和列大小已知。以下是一个简单的示例,展示如何通过遍历并交换元素来实现转置:
```c
#include <stdio.h>
// 矩阵转置函数,修改原数组实现转置
void transpose(int matrix[height][width], int height, int width) {
for (int i = 0; i < height; ++i) {
for (int j = i + 1; j < width; ++j) {
// 交换矩阵[i][j]和[j][i]的值
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i]; // 将当前行的元素放到对角线位置
matrix[j][i] = temp; // 将对角线位置的元素放回原位置
}
}
}
int main() {
int size;
printf("Enter the number of rows and columns for the matrix: ");
scanf("%d %d", &size, &size); // 假设方阵,输入行数等于列数
int matrix[size][size];
// 填充矩阵...
printf("Original Matrix:\n");
// 打印原始矩阵...
transpose(matrix, size, size);
printf("Transposed Matrix:\n");
// 打印转置后的矩阵...
return 0;
}
```
在这个例子中,`transpose` 函数接受一个二维数组 `matrix`、行高度 `height` 和宽度 `width` 作为参数,直接操作原数组完成转置。注意这是适用于方阵的操作,对于非方阵的矩阵,需要稍作调整。
阅读全文