Даю совет, судя по заданию, ты только изучаешь программирование, учишься где-то или сам - не важно. Главная цель таких задач не научить тебя работать с матрицами конкретно, а научить тебя искать решение самостоятельно, и не зря в таких задачах часто используются не какие-то абстрактные сущности, а именно матрицы, с которыми легко можно работать вне условий задачи. Рекомендую взять тетрадь, нарисовать исходную матрицу, нарисовать рядом результат, который предполагается получить, выявить: что поменялось, какие элементы матрицы поменяли свои координаты и как, выписать отдельно, что и как поменялось, выявить закономерность, беря во внимание, что с матрицами чаще всего работают в цикле, предположить, какое должно быть условие работы цикла, чтоб можно было эту матрицу на основе полученных закономерностей поменять, а вот уже если ты найдешь это условие, но не будешь знать как его записать конкретно на с++ или на чем-то еще, тут тебе с радостью помогут, потому, что видно будет, что над задачей ты поработал, и из-за недостатка опыта всего чуть-чуть не дожал. А расписывать за тебя все решение с нуля мало кто захочет, да и толку от этого не будет.
PS. А со строками и нулями, останавливай второй цикл если уже нашел хотя бы один ноль, дальше проверять не нужно.