Hoán đổi phần tử đường chéo chính (i,i) với đường chéo phụ (i, n-i-1) của ma trận vuông. Nếu không vuông → báo lỗi.
Giải thuật
- Kiểm tra m == n
- Với i từ 0 đến m-1: hoán đổi a[i][i] và a[i][m-i-1]
Chương trình
#include <stdio.h>
main() {
int i, j, m, n, a, ma[10][10];
printf("Order m x n: "); scanf("%dx%d", &m, &n);
if (m == n) {
printf("Elements: "); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&ma[i][j]);
printf("Original:\n"); // in ma trận
for(i=0;i<m;i++) { a=ma[i][i]; ma[i][i]=ma[i][m-i-1]; ma[i][m-i-1]=a; }
printf("After swap diagonals:\n"); // in ma trận
} else printf("Not a square matrix\n");
}
Kết quả
Run 1: 3x3 [[1,2,3],[4,5,6],[7,8,9]] → [[3,2,1],[4,5,6],[9,8,7]] Run 2: 4x3 → Not a square matrix