Похоже, что уловка - это не красиво, хотя.Возможно, вы можете сделать его более универсальным для массивов разных размеров.
#include <stdio.h>
const int N = 5;
void print (int arr[][N]) {
int i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%d ", arr[i][j]);
}
printf ("\n");
}
printf ("\n");
}
void flip (int arr[][N]) {
int a[5][5] = {0};
int x, y;
for (y = 0; y < N; y++) {
for (x = 0; x < N; x++) {
if (x == y){
a[y][x] = arr[y][N-y-1];
} else if (x == N-(y+1)) {
a[y][x] = arr[y][y];
} else {
a[y][x] = arr[y][x];
}
}
}
print(a);
}
int main() {
int a[5][5] = {
{1, 2, 3, 4, 5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25}
};
flip(a);
return 0;
}
Выходы:
5 2 3 4 1
6 9 8 7 10
11 12 13 14 15
16 19 18 17 20
25 22 23 24 21