写一个代码,将一个3*3的矩阵逆置
时间: 2023-05-28 10:01:38 浏览: 84
以下是Python代码实现:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 打印原始矩阵
print("原始矩阵:")
for row in matrix:
print(row)
# 逆置矩阵
for i in range(len(matrix)):
for j in range(i, len(matrix[i])):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
# 打印逆置后的矩阵
print("逆置后的矩阵:")
for row in matrix:
print(row)
运行结果:
原始矩阵:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
逆置后的矩阵:
[1, 4, 7]
[2, 5, 8]
[3, 6, 9]
相关问题
C语言逆置矩阵
要逆置矩阵,可以先将矩阵进行转置,再将每一行的元素逆序排列。以下是一个示例代码:
```c
#include <stdio.h>
void transpose(int mat[][3], int row, int col) {
int temp;
for (int i = 0; i < row; i++) {
for (int j = i+1; j < col; j++) {
temp = mat[i][j];
mat[i][j] = mat[j][i];
mat[j][i] = temp;
}
}
}
void reverse(int mat[][3], int row, int col) {
int temp;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col/2; j++) {
temp = mat[i][j];
mat[i][j] = mat[i][col-j-1];
mat[i][col-j-1] = temp;
}
}
}
void printMatrix(int mat[][3], int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
printf("%d ", mat[i][j]);
}
printf("\n");
}
}
int main() {
int mat[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
printf("Original matrix:\n");
printMatrix(mat, 3, 3);
transpose(mat, 3, 3);
printf("Transposed matrix:\n");
printMatrix(mat, 3, 3);
reverse(mat, 3, 3);
printf("Reversed matrix:\n");
printMatrix(mat, 3, 3);
return 0;
}
```
输出结果为:
```
Original matrix:
1 2 3
4 5 6
7 8 9
Transposed matrix:
1 4 7
2 5 8
3 6 9
Reversed matrix:
7 4 1
8 5 2
9 6 3
```
编写函数,实现矩阵的行和列逆置。在main函数中验证。要求:矩阵行数、列数、矩阵元素均在main函数中由键盘输入,逆置后的矩阵在main函数中输出
好的,这里提供一份 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` 函数来实现矩阵的行和列逆置,最后输出逆置后的矩阵。
需要注意的是,在实现矩阵的行和列逆置时,我们需要动态地分配一个临时的二维数组,用来暂存逆置后的矩阵。逆置完成后,再将临时数组中的元素复制回矩阵中,并释放临时数组的内存空间。
希望这份代码对你有所帮助!
阅读全文