矩陣轉置是將矩陣的行與列互換操作。若原矩陣為 m×n,轉置後變為 n×m。這是線性代數與科學計算中的基礎運算,C語言通過二維數組即可高效實現。
// Transpose
#include <stdio.h>
#define MAX 20
int m, n;
void transpose(double a[][MAX], double b[][MAX]) {
int i, j;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
b[j][i] = a[i][j];
}
}
}
int main() {
int i, j;
double a[MAX][MAX], b[MAX][MAX];
puts("Please input the dimensions of the matrix (e.g., 2 3):");
scanf("%d %d", &m, &n);
puts("Enter the matrix elements row by row:");
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%lf", &a[i][j]);
}
}
transpose(a, b);
puts("The Transpose result:");
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
// 整數顯示為整數,浮點數保留小數
if (b[i][j] - (int)b[i][j] != 0)
printf("%lf ", b[i][j]);
else
printf("%d ", (int)b[i][j]);
}
puts("");
}
return 0;
}
m, n 記錄實際輸入的行列數,避免固定 MAX 造成資源浪費。b[j][i] = a[i][j] 完成行列互換,注意循環邊界用實際維度 m, n 而非 MAX。%d 或 %lf 輸出,提升可讀性。MAX 會導致未初始化區域被複製,已修正為 m, n。m, n > 0 且 <= MAX)。malloc/free)突破 MAX 限制。矩陣轉置是矩陣乘法、協方差計算、圖像處理(如旋轉90度)等演算法的基石。掌握此操作有助於理解更複雜的數值計算庫(如 BLAS、Eigen)的底層邏輯。