Строка или столбец матрицы аналогичны одномерному массиву. Поэтому к ним применимы все алгоритмы, рассмотренные для одномерных массивов.
В применении же ко всей матрице это обычно требует дополнительного внешнего цикла (циклов).
Задача 5. Поменять местами первую и последнюю строки матрицы.
for (j=0; j<m; j++) {
p=a[0][j];
a[0][j]=a[n-1][j];
a[n-1][j]=p;
}
Задача 6. Найти сумму элементов в каждой строке матрицы.
Поскольку строк в матрице несколько, ответом будет не одно число, а одномерный массив:
int b[10];
for (i=0; i<n; i++) {
for (j=s=0; j<m; j++)
s+=a[i][j];
b[i]=s;
}
for(i=0; i<n; i++)
printf("%d ", b[i]);
puts("");
Задача 7. Найти сумму элементов в каждом столбце матрицы.
По сравнению с предыдущей задачей, здесь изменится порядок циклов (ведь сначала нужно целиком подсчитать сумму в одном столбце, и только затем - в другом и т.д.):
for (j=0; j<m; j++) {
for (i=s=0; i<n; i++)
s+=a[i][j];
b[j]=s;
}
for(j=0; j<m; j++)
printf("%d ", b[j]);
puts("");
Задача 8. В каждой строке матрицы определить количество элементов, равных нулю. Отсортировать строки матрицы по убыванию этого количества.
Прежде всего, нужно определить эти количества и занести их в одномерный массив (обозначим его b):
for (i=0; i<n; i++) {
for (j=s=0; j<m; j++)
if (a[i][j]==0) s++;
b[i]=s;
}
Затем нужно отсортировать матрицу. В процессе этого обменивать местами нужно как сами строки, так и соответствующие им элементы одномерного массива b (чтобы каждый его элемент продолжал соответствовать своей строке):
for (i=0; i<n; i++)
for (k=i+1; k<n; k++)
if (b[k]>b[i]) {
for(j=0; j<m; j++)
{ p=a[i][j]; a[i][j]=a[k][j]; a[k][j]=p; }
p=b[i]; b[i]=b[k]; b[k]=p;
}