编写函数,实现矩阵的行和列逆置。在main函数中验证。要求:矩阵行数、列数、矩阵元素均在main函数中由键盘输入,逆置后的矩阵在main函数中输出
时间: 2024-04-04 13:30:44 浏览: 59
好的,这里提供一份 C 语言的代码示例,实现矩阵的行和列逆置:
```c
#include <stdio.h>
#include <stdlib.h>
// 矩阵的行和列逆置函数
void transpose(int **matrix, int row, int col) {
int **temp = (int **)malloc(col * sizeof(int *));
for (int i = 0; i < col; i++) {
temp[i] = (int *)malloc(row * sizeof(int));
for (int j = 0; j < row; j++) {
temp[i][j] = matrix[j][i];
}
}
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
matrix[j][i] = temp[i][j];
}
}
for (int i = 0; i < col; i++) {
free(temp[i]);
}
free(temp);
}
int main() {
int row, col;
printf("请输入矩阵的行数和列数:");
scanf("%d %d", &row, &col);
int **matrix = (int **)malloc(row * sizeof(int *));
for (int i = 0; i < row; i++) {
matrix[i] = (int *)malloc(col * sizeof(int));
}
// 读入矩阵元素
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("请输入矩阵元素 matrix[%d][%d]:", i, j);
scanf("%d", &matrix[i][j]);
}
}
// 输出原始矩阵
printf("原始矩阵为:\n");
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 行和列逆置
transpose(matrix, row, col);
// 输出逆置后的矩阵
printf("逆置后的矩阵为:\n");
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
printf("%d ", matrix[j][i]);
}
printf("\n");
}
// 释放内存
for (int i = 0; i < row; i++) {
free(matrix[i]);
}
free(matrix);
return 0;
}
```
在这份代码中,我们首先通过键盘读入矩阵的行数和列数,然后动态分配二维数组的内存空间来存储矩阵元素。接着使用一个 `transpose` 函数来实现矩阵的行和列逆置,最后输出逆置后的矩阵。
需要注意的是,在实现矩阵的行和列逆置时,我们需要动态地分配一个临时的二维数组,用来暂存逆置后的矩阵。逆置完成后,再将临时数组中的元素复制回矩阵中,并释放临时数组的内存空间。
希望这份代码对你有所帮助!
阅读全文