Начальные значения элементов
При объявлении можно сразу задать все или часть ее элементов, например так
float X[2][3] = {{1., 2., 3.},{4., 5., 6.}};
Как видно из примера, элементы каждой строки заключаются в отдельные фигурные скобки.Если задать не все элементы, то остальные заполнятся нулями:
float X[2][3] = {{1., 3.},{6.}};
Здесь элементы X[1][2], X[2][1]и X[2][2]будут нулевыми.
Расположение матриц в памяти
Иногда бывает полезно знать, как матрицы располагаются в памяти ЭВМ. Оказывается во
всех современных языках программирования (кроме Фортрана) элементы матрицы располагаются по строкам, то есть сначала изменяется последний индекс. Объявленная выше матрица
Xрасположена так:
X[0][0] X[0][1] X[0][2] X[1][0] X[1][1] X[1][2]
Стандартный ввод и вывод
Как и для одномерных массивов, матрицы могут быть введены с клавиатуры, из файла, и
заполнены с помощью случайных чисел. Общий принцип – для каждого элемента функция чтения вызывается отдельно. Представим себе матрицу как массив строк равной длины. Для ввода одной строки требуется цикл, и таких строк несколько. Поэтому для работы с матрицами требуется двойной или вложенный цикл, то есть цикл в цикле.
Ввод с клавиатуры
Единственная проблема состоит в том, чтобы не перепутать переменные в двух циклах и
пределы их изменения.
#include <stdio.h>
const int M = 5; // число строк
const int N = 4; // число столбцов
Main()
{
int i, j, A[M][N];
for ( i = 0; i < M; i ++ ) // цикл по строкам
for ( j = 0; j < N; j ++ ) // цикл по столбцам строки
{
printf ("A[%d][%d]=", i, j); // подсказка для ввода
scanf ("%d", & A[i][j]); // ввод A[i][j]
}
// работа с матрицей
}
Заметьте, что при изменении порядка циклов (если поменять местами два оператора for) изменится и порядок ввода элементов в память.
Дата добавления: 2015-10-05; просмотров: 1015;