#include <stdio.h>
#include <stdlib.h>

// Создание двумерной матрицы, ибо далеко
// не все компиляторы поддерживают VLA даже в C...
int ** makeMatrix(unsigned int n, unsigned int m)
{
    // Можно (и нужно) дописать проверки, что память выделена.
    // Для краткости не стал.
    int ** a = malloc(sizeof(int*)*n);
    for(unsigned int i = 0; i < n; ++i)
        a[i] = malloc(sizeof(int)*m);
    return a;
}

// Заполнение матрицы
void input(int ** A, unsigned int rows, unsigned int cols)
{
    for (unsigned int i = 0; i < rows; i++)
        for (unsigned int j = 0; j < cols; j++)
        {
            printf("a[%u][%u] = ", i, j);
            scanf("%d", &A[i][j]);
        }
}

// Подсчет количества отрицательных элементов в
// столбце colNo матрицы A
int minus_count(int ** A, unsigned int rows, unsigned int colNo)
{
    int cnt = 0;
    for(unsigned int i = 0; i < rows; ++i)
        cnt += (A[i][colNo] < 0);  // Для отрицательного дает 1
    return cnt;
}

// Проверка всех столбцов и вывод номеров тех, где ровно
// два отрицательных элемента
void check_2minus(int ** A, unsigned int rows, unsigned int cols)
{
    for(unsigned int i = 0; i < cols; ++i)
        if (minus_count(A,rows,i) == 2)
            printf("Столбец %d содержит два отрицательных элемента\n",i);
}

// Функция освобождения памяти
void freeMatrix(int ** A, unsigned int rows)
{
    for(unsigned int i = 0; i < rows; ++i) free(A[i]);
    free(A);
}

int main() {
    unsigned int n,m;
    printf("Введите количество строк матрицы B / столбцов матрицы C: ");
    scanf("%u", &n);
    printf("Введите количество столбцов матрицы B / строк матрицы C: ");
    scanf("%u", &m);

    int ** B = makeMatrix(n,m);
    int ** C = makeMatrix(m,n);

    printf("Заполните первый массив: \n");
    input(B, n, m);

    printf("Заполните второй массив: \n");
    input(C, m, n);

    puts("\n");  // "Просвет" перед выводом столбцов первой матрицы
    // Проверка первого массива
    check_2minus(B, n, m);

    puts("\n");  // "Просвет" перед выводом столбцов второй матрицы
    // Проверка второго массива
    check_2minus(C, m, n);

    // Освобождение памяти
    freeMatrix(B, n);
    freeMatrix(C, m);

}
