#include <stdio.h>

const int maxSize = 20;

void inputMatr(int matr[maxSize][maxSize], int &n)
{
    do
    {
        printf("Введите размер матрицы [i, i]: ");
        scanf("%d", &n);
    } while (n <= 0);

    printf("Введите значения:\n");
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            scanf("%d", &matr[i][j]);
}

void replaceUpiDown(int matr[maxSize][maxSize], int n)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
            if ((j < n - i - 1 && j > i) || (j > n - i - 1 && j < i))
                printf("%3d ", matr[n - i - 1][j]);
            else
                printf("%3d ", matr[i][j]);
        printf("\n");
    }
}

int main()
{
    int matr[maxSize][maxSize];
    int n = maxSize;

    inputMatr(matr, n);
    printf("Отзеркалить матрицу относительно горизонтали:\n");
    replaceUpiDown(matr, n);
}