for (i = 0; i < M; i++)
for (j = 0; j < M; j++) {
int t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
完整遍歷會將 (i,j) 與 (j,i) 交換兩次,最終矩陣不變。
for (i = 0; i < M; i++)
for (j = i + 1; j < M; j++) { // 或 j = 0; j < i; j++
int t = a[i][j];
a[i][j] = a[j][i];
a[j][i] = t;
}
#include <stdio.h>
#define M 4
int main() {
int a[M][M] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
printf("原矩陣:\n");
for (int i=0;i
需額外分配新矩陣 b[N][M],b[j][i] = a[i][j],無法就地轉置。