给定一个n×m矩阵相乘,求它的转置。其中1≤n≤20,1≤m≤20,矩阵中的每个元素都在整数类型(4字节)的表示范围内。C语言
时间: 2024-10-15 07:26:41 浏览: 46
在C语言中,矩阵的转置是一个常见的操作,特别是对于二维数组。如果你有一个n行m列的矩阵,你需要创建一个新的m行n列的矩阵来存储转置后的结果。以下是一个基本步骤:
```c
#include <stdio.h>
void transpose(int matrix[n][m], int transposed[m][n]) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
// 将原矩阵第i行第j列的元素复制到新矩阵的第j行第i列
transposed[j][i] = matrix[i][j];
}
}
}
int main() {
int n, m;
printf("Enter the number of rows (n): ");
scanf("%d", &n);
printf("Enter the number of columns (m): ");
scanf("%d", &m);
int original[n][m], transposed[m][n]; // 定义原始矩阵和转置矩阵
// 读取原矩阵元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("Enter element at row %d column %d: ", i+1, j+1);
scanf("%d", &original[i][j]);
}
}
// 转置矩阵
transpose(original, transposed);
// 打印转置矩阵
printf("Transposed Matrix:\n");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", transposed[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个例子中,`transpose`函数接收两个指针,分别指向原始矩阵和转置矩阵的首地址。然后通过两层循环,将元素从原始矩阵的行位置复制到转置矩阵的列位置。
阅读全文