Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
+ЭУМКД КИТ-ч1-Бутов.docx
Скачиваний:
9
Добавлен:
05.05.2019
Размер:
262.85 Кб
Скачать

Тема 6. Массивы

Массив – это именованная совокупность переменных одного типа, хранящихся в смежных ячейках оперативной памяти. Переменные, входящие в состав массива, называются его элементами, они имеют одно и то же имя, но различаются своими порядковыми номерами (индексами). Индексы массива всегда начинаются с нуля.

В программе описание массива отличается от описания обычной переменной лишь наличием после имени квадратных скобок, в которых указывается количество элементов массива (размерность массива):

float x[10]; //описание массива х из 10 вещественных чисел

int a[5] = {1, 3, 5, 7, 9}; //описание массива a с инициализацией его элементов. При этом

//a[0]=1, a[1]=3, a[2]=5, a[3]=7, a[4]=9. Элемента a[5] в массиве нет

Если число инициализаторов совпадает с размерностью массива, то размерность можно не указывать:

int a[ ] = {1, 3, 5, 7, 9};

Если элементов в массиве больше, чем инициализаторов, элементы, для которых значения не указаны, обнуляются:

int b[5] = {3, 2, 1}; // b[0]=3, b[1]=2, b[2]=1, b[3]=b[4]=0

Размерность массива предпочтительнее задавать с помощью именованной константы, т.к. в этом случае для изменения размерности массива достаточно скорректировать значение константы всего лишь в одном месте программы. Например, найдем сумму значений всех элементов массива:

#include <stdio.h>

void main()

{

const int N = 10;

int i, sum, mas[N];

for (i = 0; i < N; i++)

scanf(“%d”, &mas[i]);

for (sum=0, i = 0; i < N; i++)

sum += mas[i];

printf(“Сумма = %d”, sum);

}

Многомерные массивы задаются указанием каждого измерения в квадратных скобках. Например, оператор

int matr[3][5];

задает описание двумерного массива из 3 строк и 5 столбцов. В памяти такой массив располагается в последовательных ячейках построчно, то есть при переходе к следующему элементу быстрее всех изменяется последний индекс. Для доступа к элементу многомерного массива указываются все его индексы, например, matr[i][j] для описанного выше двумерного массива есть обращение к элементу, расположенному на пересечении i-й строки и j-го столбца.

Инициализировать многомерный массив можно двумя способами.

1. Задается общий список элементов в том порядке, в котором элементы располагаются в памяти:

int mas[2][4] = {1, 2, 3, 4, 5, 6, 7, 8};

2. Используется представление в виде массива из массивов, при этом каждый массив заключается в свои фигурные скобки:

int mas[2][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}};

В обоих случаях левую размерность можно не указывать.

Эти операторы определяют матрицу со следующими значениями элементов:

1 2 3 4

5 6 7 8

Допустимыми являются также варианты, когда указываются не все инициализаторы. Например, оператор int mas[ ][4] = {{1, 2}, {5}}; определяет следующую матрицу:

1 2 0 0

5 0 0 0

При работе с элементами многомерных массивов обычно используют вложенные циклы, как в следующем примере, где подсчитывается сумма значений всех элементов двумерного массива:

#include <stdio.h>

void main()

{

const int N = 10, M = 5;

int i, j, sum, mas[N][M];

for (i = 0; i < N; i++)

for (j = 0; j < M; j++)

scanf(“%d”, &mas[i][j]);

for (sum=0, i = 0; i < N; i++)

for (j = 0; j < M; j++)

sum += mas[i][j];

printf(“Сумма = %d”, sum);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]