deviance, код писала я, и дефайн (а не константу, константа будет нечто другое) я ввела 3 что бы тестировать не 25 элементов а 9, согласитесь это легче, даже я там ошибки некоторые нашла, мой код теперь выглядит таким образом
Программа должна по выбору пользователя осуществлять ввод исходной матрицы с клавиатуры или из файла. Для этого программа должна содержать две соответствующие функции, указатель на одну из которых необходимо передавать в функцию для вычисления элементов массива Х. Данная функция должна вызывать через указатель одну из функций ввода элементов матрицы, производить вычисление элементов массива X в соответствии с заданием и возвращать указатель на этот массив. Кроме того, программа должна содержать функцию для вывода на экран и в файл исходной матрицы и результирующего массива, а также рекурсивную функцию определения в соответствии с заданием величины Y.
В программе не должно быть глобальных переменных.
Дана матрица А(5х5). Определить массив Х из 5 элементов, каждый из которых равен 1, если сумма модулей элементов соответствующего столбца больше наибольшего по модулю элемента матрицы и –1 в противном случае. Определить величину Y, как сумму положительных элементов первой строки матрицы, расположенных после первого нулевого элемента.
Код:

#include<stdio.h>
#include <conio.h>
#include<locale.h>
#include <math.h>
#define n 3
//Функция вода элементов матрицы с клавиатуры
void input_matr(int a[n][n])
{
int i,j;
printf("Введите элементы матрицы А: \n");
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf("%d", &a[i][j]);
}
//Функция заполнения матрицы
void input_file (int (*a)[n])
{
int i,j;
FILE*file;
file=fopen("c:\\matr.txt", "r");
if (file)
{
for (i=0;i<n; i++)
for(j=0;j<n;j++)
fscanf(file,"%d",&a[i][j]);
fclose(file);
}
}
//функция вычисления элементов мссива х
int *mas_x(int(*a)[n],int *x, void (*pfunc)(int [n][n]))
{
pfunc(a);
int sum[n], max,i,j;
static int x[n];
pfunc(a);
max=abs(a[0][0]);//нахождение максимального элемента матрицы
for ( i=0; i<n; i++)
for ( j=0; j<n; j++)
if (abs(a[i][j]) > max)
max=abs(a[i][j]);
for ( j=0; j<n; j++)//сумма элеменов столбцов
{
sum[j]=0;
for ( i=0; i<n; i++)
sum[j]=sum[j]+a[i][j];
sum[j]=abs(sum[j]);
}
for ( j=0; j<n; j++)
if (sum[j]>max) x[j]=1;
else x[j]=-1;
return *a;
}
//функция вывода матрицы а и х
void output(const int x[], const int a[][N] )
{
int i,j;
printf("Матрица А:\n");
for (i=0;i<N;i++)
{
for (j=0;j<N;j++)
printf("%5d",a[i][j]);
printf("\n");
}
printf("Массив Х:\n");
for (i=0;i<N;i++)
printf("%5d",x[i]);
printf("\n");
}
int main()
{
setlocale(LC_CTYPE,"");
int a[N][N], x[N], c;
void (*pfunc)(int [N][N]);
do
{
printf("Ввод матрицы:\n1 - с клавиатуры\n2 - \
из файла\n");
scanf("%d",&c);
}
while (c!=1 && c!=2);
// Присваивание указателю адреса одной из функций:
switch (c)
{
case 1: pfunc=&input_matr;
break;
case 2: pfunc=&input_file;
}
output(mas_x(a,x,pfunc),a);
_getch();
int recurs(int p*, t, &sum)
{
if (t==0)
return 0;
else sum=sum+recurs(p+1, t-1, sum);
}
}
Но она все равно не работает!((((((((((