Лабораторная работа №5 Использование массивов
Массив – это линейный тип данных или последовательность ячеек памяти одинакового типа. Массивы используются практически в любой программе. Массивы могут быть одномерными, двумерными и многомерными. Одномерные массивы соответствуют строке, двумерные – матрице.
5.1 Объявление массивов
При объявлении массива указывают тип его элементов и в квадратных скобках размер массива.
Для одномерного массива объявление запишется в виде:
int a[10];
Удобно использовать при объявлении массива директиву препроцессора #define:
#define SIZE 10 // определили поименованную константу, задающую
размер массива
void main()
{
int a[SIZE];
…
}
Для доступа к элементу массива указывают в квадратных скобках его номер. При этом следует отметить, что в языке С индексация элементов массива начинается с нуля.
То есть для инициализации первого элемента массива единицей необходимо записать оператор:
a[0]=1;
Для работы с массивами обычно используют цикл for.
Инициализировать массив можно разными способами.
Если требуется можно инициализировать элементы массива сразу после объявления:
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Можно заполнить элементы массива непосредственно в программе:
int a[10];
a[5] = 5;
for (int i=0; i<10; i++)
a[i]=0;
В этом примере сначала шестому элементу массива присваивается значения пять, затем все элементы массива обнуляются.
Инициализация одномерного массива пользователем запишется в виде:
int a[10];
for (int i=0; i<10; i++) {
printf(″Введите значение a[%d]\n″, i);
scanf(″%d″, &a[i]);
}
В этом примере сначала элементам массива присваиваются значения введенные пользователем.
Рассмотрим пример нахождения количества отрицательных элементов массива.
int a[10], count;
…
for (int i=0; i<10; i++)
if (a[i]<0) count++;
…
Пример нахождения суммы отрицательных элементов массива.
int a[10], sum=0;
…
for (int i=0; i<10; i++)
if (a[i]<0) sum=sum+a[i];
…
Пример нахождения минимального элемента массива и его индекса.
int a[10], min, mini;
…
min=a[0];
for (int i=1; i<10; i++)
if (a[i]<min) {
min=a[i];
mini=i;
}
…
Другой способ нахождения минимального элемента массива и его индекса
min=0;
for (int i=1; i<10; i++)
if (a[i]<a[min]) {
min=i;
}
5.2 Использование многомерных массивов
При создании двухмерного массива после его имени ставится два значения – количество строк и столбцов:
int a[10][12];
Многомерные массивы инициализируются так же, как и одномерные. В следующем примере массив sqrs инициализируется числами от 1 до 10 и их квадратами:
int sqrs[10][2] = {
1, 1,
2, 4,
3, 9,
4, 16,
5, 25,
6, 36,
7, 49,
8, 64,
9, 81,
10, 100
};
Далее на примере показаны инициализация и вывод элементов двухмерного массива.
int a[10][20];
for (int i=0; i<10; i++)
for (int j=0; j<20; j++)
a[i][j] = 0; // инициализация массива нулями
for (int i=0; i<10; i++)
for (int j=0; j<20; j++)
if(i==j)
a[i][j] = 1; // инициализация главной диагонали
массива единицами
for (i=0; i<10; i++)
{
for (int j=0; j<20; j++)
printf(“%i”, a[i][j])
printf(“\n”); // вывод массива в матричном виде
}
Как можно видеть из листинга после инициализации массива главная диагональ заполняется единицами. Предлагается в качестве упражнения заполнить другую диагональ.