Программирование на языке Си/§5
Массивом называется матрица и её частные случаи: вектор-столбец и вектор-строка. Массив определяется по следующем синтаксису: тип имя [размерность] Размерность может быть только целочисленным - это количество элементов массива. Одномерный массив - это матрица столбец или строка. Например: (1 2 3 4). Запись одномерного массива: имя[№ элемента матрицы]. Двухмерный массив - это матрица размерности ». . Запись двухмерного массива: имя[№ элемента m][№ элемента N]. Многомерные массивы - это матрица, элементами которой являются матрицы. Так в массиве mas[2][3][4] элементами являются 2 двухмерных массива размерности 3X4.
Программа 4.1
правитьНапишем простейшую программу с использованием массива
#include <stdio.h>
int main()
{ int i;
int mas[10]={0,1,2,3,4,5,6,7,8,9}; // производим запись в массив размерностью 10, чисел 0,1,2,3,4,5,6,7,8,9.
for(i=0;i<10;i++) // выполняем цикл for, до тех пор пока не распечатаем элементы массива
{
printf("элемент массива № %d : %d \n", i,mas[i]);
}
}
Распишем пошагово работу программы:
- шаг. записываем в матрицу значения матрицы строки: 0,1,2,3,4,5,6,7,8,9.
- шаг. i=0
- шаг. i<0 выполняем цикл
- шаг. i==1
- шаг. элемент массива № 0: 0
- шаг. i==2
- шаг. элемент массива № 1: 1
- шаг. i==3
- шаг. элемент массива № 2: 2
и т.д. пока i!=10.
Программа 4.2
правитьУсложним предыдущую задачу таким образом, чтобы элементы массива вводились нами вручную. И сделаем одно нововведение, а именно директиву препроцессора define. define позволяет связать идентификатор с лексемой (возможно, что пустой) или последовательностью лексем (строка символов является лексемой, заключённой в двойные кавычки), которую называют строкой замещения или замещающей частью директивы define.
#include <stdio.h>
#define N 10
int main()
{ int i;
int mas[N];
printf("введите N чисел");
for (i=0;i<5;i++)
{
scanf("%d",&mas[i]);
}
for(i=0;i<5;i++)
{
printf("Элемент массива № %d : %d \n", i,mas[i]);
}
getch();
}
Давайте подробно разберём каким образов в данной программе происходит ввод значений в массив, в данной программе мы заполняем одномерный массив матрицей-строкой. каждое значение i, в массиве mas[i], соответствует номеру ячейки в матрице. Так, если в массиве хранятся данные 2, 5, 7, 6, 5, 8, 5, 5... ,то: mas[0]=2, mas[1]=5,..., mas[5]=8... и т.д.
Программа 4.3
правитьУсложним программу, вместо одномерного массива будем использовать двухмерный массив и распечатку будем проводить в виде матрицы.
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{ int i, j;
int mas[N][N];
printf("Введите матрицу размерностью 2 на 2\n");
for (i=0;i<2;i++)
for (j=0;j<2;j++)
{
scanf("%d",&mas[i][j]);
}
for(i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
printf("%d ",mas[i][j]);
}
printf("\n");
}
getch();
}
Обратите внимание, как мы заполняем матрицу значениями:
for(i=0;i<n;i++)
for(j=0;j<m;j++)
здесь мы вбиваем значения в матрицу размерности m на n построчно. Здесь j - это столбец, а i - это строка. Для вбивания значений в многомерный массив используется этот же синтаксис. Для трёхмерного массива:
for(i=0;i<n;i++)
for(j=0;j<m;j++)
for(k=0;k<o;k++)
В каждой ячейке i мы храним двухмерную матрицу размера m на о. Четырёхмерного массива:
for(i=0;i<n;i++)
for(j=0;j<m;j++)
for(k=0;k<o;k++)
for(l=0;l<p;l++)
В каждой ячейке i мы храним трехмерную матрицу размера m на о на l. Массив можно забивать и посредством while, так для двумерного массива:
i=o;
while(i<n)
{i++; j=0;
while (j<0)
{j++
scanf("%d",&mas[i][j]);
}
}
Программа 4.4
правитьНапишем программу поиска наименьшего элемента массива:
#include <stdio.h>
#include <stdlib.h>
#define N 100
int main()
{
int mas[N],min,i, k;
printf("введите количество элементов массива\n");
scanf("%i",&k); //вводим количество элементов массива
printf("введите элементы массива\n");
/*Вбиваем в массив последовательность чисел*/
for(i=0;i<k;i++) // i=0,до тех пор пока i меньше количества элементов массива выполняем: i++
scanf("%i",&mas[i]); // вбиваем в массив числа последовательности по одному до тех пор пока выполняется условие i<k
min=0;
/*Поиск минимального значения в массиве*/
for(i=0;i<k;i++) // i=0,до тех пор пока i меньше количества элементов массива выполняем: i++
if(mas[i]<mas[min]) // если текущий элемент массива меньше минимального, то:
min=i; // присваиваем номер текущего элемента min
/* вывод результата*/
printf("min=%i",mas[min]);
getch();
return 0;
}
Практикум
правитьВыполните все приведённые выше программы. Напишите программу 4.3 через while. Пошагово просмотрите программу 4.4.
Домашнее задание
править- Напишите программу, подсчитывающую среднее арифметическое значение элементов массива.
- Напишите программу поиска максимального элемента массива.