Функции (вернее, их параметры) - они могут быть разные. Есть те, которые не будут изменяться, а есть - те, которые будут. Те, которые должны изменяться, должны передаваться через указатель. Вот тебе пример двух функций: в одной массив просто распечатывается, а в другой - вводится, обрати внимание на разницу. Кстати, на типы тоже обращай внимание, M, N должны быть целыми, а sum - вещественной...
Функцию суммирования элементов строки допишешь уже сам, я думаю
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void get_arr(float ***a, int M, int N)
{
int i, j;
for(i = 0; i < N; i++)
for(j = 0; j < M; j++)
{
printf("Vvidit a[%u][%u]",i, j);
scanf("%f",&((*a)[i][j]));
}
}
void print_arr(float **a, int M, int N)
{
int i, j;
for(i = 0; i < N; i++)
{
for(j = 0; j < M; j++)
printf("%.0f ",a[i][j]);
puts("");
}
}
int main()
{
int N, M;
float **a;
int i,j;
float sum;
printf("VVedit k-st elementiv A: ");
scanf("%d",&N);
printf("VVedit k-st elementiv B: ");
scanf("%d",&M);
a = (float**)malloc(N*sizeof(float*));
for(i = 0; i < N; i++)
a[i] = (float*)malloc(M * sizeof(float));
get_arr(&a, M, N);
print_arr(a, M, N);
for(i = 0; i < N; i++)
{
for(j = 0, sum = 0.0; j < M; j++)
{
sum += a[i][j];
}
printf("Summa %u ryadka=%f\n",i+1,sum);
}
for(i = 0; i < N; i++)
free(a[i]);
free(a);
getch();
return 0;
}