- Описание Предположим, мы хотим сохранить 50 имен учащихся класса. Можно попробовать объявить 50 переменных, например st_name0, st_name1, .., st_name49. Однако гораздо лучше определить все эти имена в одной переменной, которая называется массивом. — Массив — это набор данных одного типа (и, следовательно, одного размера), хранящихся в последовательных ячейках памяти под одним именем. — объявляется сразу весь массив. — На каждый отдельный элемент массива можно ссылаться путем индексации. Индексированный означает, что элементы массива пронумерованы и всегда начинаются с 0. В C к элементу массива (то есть к отдельному элементу данных) обращаются путем указания имени массива, за которым следует один или дополнительные индексы, каждый из которых заключен в квадратные скобки. Объявление массива Объявление массива похоже на форму обычного объявления. Общая форма такова: typeName ArrayName [size] = {список значений} Объявляет массив с указанным размером, с именем ArrayName и типом typeName. Массив индексируется от 0 до (размер-1). Размер (в скобках) должен быть целочисленным литералом или постоянной переменной. Компилятор использует размер, чтобы определить, сколько места выделить (т.е. сколько байтов). Вот несколько примеров: int A [10]; //Массив из десяти целых чисел; A [0], A [1],…, A [9] имя символа [20]; //Массив из 20 символов float nums [50]; //Массив из пятидесяти плавающих чисел; числа [0], числа [1],…, числа [49] int C []; //Массив неизвестного количества целых чисел; C [0], C [1],…, C [size-1] int table [5] [10]; //Двумерный массив целых чисел Вы также можете объявить массив следующим образом: #define ROLL_NUMBERS 51 int classv [ROLL_NUMBERS]; const int Emp_salary = 35 float Employee [Emp_salary]; Пример: int A [10]; Объявляет 10 целых чисел и может быть доступен по имени A Каждой переменной назначается уникальное местоположение (местоположение также называется индексом). Диапазон расположения от 0 до (длина — 1). Для указанного массива диапазон расположения составляет от 0 до 9. См. Следующую диаграмму, которая представляет массив A [10]: Индекс 0 1 2 3 4 5 6 7 8 9 Значение 15 8 14 45 48 45 -57 45 1 0 Индексирование в массивы Чтобы ссылаться на один элемент массива, используйте имя массива [индекс]. Например: A [4] содержит значение 48 A [9] содержит значение 0 Индексированные элементы можно использовать так же, как простые переменные. printf («% d n», A [4]); //выводим 48 элементов массива и циклов Элементы массива обычно используются в циклах for, см. следующие коды: for (x = 0; x Инициализация массива Мы объявляем обычные переменные в следующими способами: int x; x = 0; или int x = 0; В случае массива просто перечислите значения массива в обозначении набора {}. Некоторые допустимые объявления массивов показаны ниже. int num [6] = {1, 3, 5, 7, 9, 11}; символьные буквы [5] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’}; числа с плавающей запятой [3] = {13.25, 12.09, 8.1}; Использование элементов массива в выражениях Элементы массива могут использоваться везде, где может использоваться переменная того же типа. См. Следующую схему и коды. Пример: int A [10]; Индекс 0 1 2 3 4 5 6 7 8 9 значение 15 8 14 45 48 45 -57 45 1 0 x = A [1] * 2; /* устанавливает x равным 16 */ A [4] = 88; /* заменяет 48 на 88 */ m = 6; y = A [m]; /* устанавливает y равным –57 */ z = A [A [9]]; /* устанавливает z равным 15 */ Пример -1: Семь чисел хранятся в множество. Следующая программа печатает все числа этого массива, а также печатает числа в обратном порядке. #include int main () {int M [10] ; int j;/* сохраняем семь чисел в массиве M */M [0] = 2; M [1] = 4; M [2] = 6; M [3] = 8; M [4] = 10; M [5] = 12; M [6] = 14;/* вывести числа в M */printf («Вывести все числа: n»); for (j = 0; j = 0; --j) {printf ("M [% d] =% d n", j, M [j]); }} Вывод: Пример -2: Следующая программа вычисляет простые числа от 1 до MXNO. #include #define MXNO 50int main () {int M [MXNO]; int j, n; /* отметить все числа */printf ("Простые числа: n n"); для (j = 0; j Копирование массивов: У нас есть два массива list1 и list2 int список1 [6] = {2, 4, 6, 8, 10, 12}; int list2 [6]; и мы хотим скопировать содержимое списка list1 в list2. Для общих переменных (например, int x = 3, y = 5) мы используем простой оператор присваивания (x = y или y = x). Но для массивов следующее утверждение неверно. list2 = list1; Мы должны копировать между массивами элемент за элементом, и два массива должны иметь одинаковый размер. В следующем примере мы используем цикл for, который упрощает эту задачу. #include main () int list1 [6] = {2, 4, 6, 8, 10, 12}; int list2 [6]; for (int ctr = 0; ctr Вывод: Элементы list2: 2 4 6 8 10 12 Двумерный массив в C Двумерный массив можно использовать для представления матрицы, таблицы или настольных игр (крестики-нолики, судоку и т. д.). Позиции строк и столбцов даны как последовательные индексы. Когда вы объявляете переменную такого массива, используйте пару квадратных скобок для каждого измерения. См. Следующий пример: //Объявить двумерный массив с 3 строками и 2 столбцами int table [3] [2]://создать и инициализировать arrayint table [ 3] [2] = {{10, 22}, {33, 44}, {45, 78}}; или int table [3] [2] = {10, 22, 33, 44, 45, 78}; или int table [3] [2] = {{10, 22}, {33, 44}, {45, 78}}; См. следующую диаграмму, которая представляет указанный выше массив: 0 1 0 10 22 1 33 44 2 45 78 В приведенном выше массиве: table [1] [1] содержит 22 table [2] [0] содержит 45 table [2] [2] is «массив вне границ» Печать двумерного массива Чтобы распечатать все элементы двухмерного массива, мы используем двояковложенный цикл for. В следующем примере 3 строки и 2 столбца. #include main () {int row, col; int table [3] [2] = {{10, 22}, {33, 44}, {45, 78}}; для (строка = 0; строка Вывод:
- Объявление массива
- Индексирование в массивы
- элементов массива и циклов
- Инициализация массива
- Использование элементов массива в выражениях
- Копирование массивов:
- Двумерный массив в C
- Печать двумерного массива
Описание
Предположим, мы хотим сохранить 50 имен учащихся класса. Можно попробовать объявить 50 переменных, например st_name0, st_name1, .., st_name49. Однако гораздо лучше определить все эти имена в одной переменной, которая называется массивом.
— Массив — это набор данных одного типа (и, следовательно, одного размера), хранящихся в последовательных ячейках памяти под одним именем.
— объявляется сразу весь массив.
— На каждый отдельный элемент массива можно ссылаться путем индексации. Индексированный означает, что элементы массива пронумерованы и всегда начинаются с 0.
В C к элементу массива (то есть к отдельному элементу данных) обращаются путем указания имени массива, за которым следует один или дополнительные индексы, каждый из которых заключен в квадратные скобки.
Объявление массива
Объявление массива похоже на форму обычного объявления. Общая форма такова:
typeName ArrayName [size] = {список значений}
Объявляет массив с указанным размером, с именем ArrayName и типом typeName. Массив индексируется от 0 до (размер-1). Размер (в скобках) должен быть целочисленным литералом или постоянной переменной. Компилятор использует размер, чтобы определить, сколько места выделить (т.е. сколько байтов). Вот несколько примеров:
int A [10]; //Массив из десяти целых чисел; A [0], A [1],…, A [9] имя символа [20]; //Массив из 20 символов float nums [50]; //Массив из пятидесяти плавающих чисел; числа [0], числа [1],…, числа [49] int C []; //Массив неизвестного количества целых чисел; C [0], C [1],…, C [size-1] int table [5] [10]; //Двумерный массив целых чисел
Вы также можете объявить массив следующим образом:
#define ROLL_NUMBERS 51 int classv [ROLL_NUMBERS]; const int Emp_salary = 35 float Employee [Emp_salary];
Пример: int A [10];
- Объявляет 10 целых чисел и может быть доступен по имени A
- Каждой переменной назначается уникальное местоположение (местоположение также называется индексом). Диапазон расположения от 0 до (длина — 1). Для указанного массива диапазон расположения составляет от 0 до 9.
См. Следующую диаграмму, которая представляет массив A [10]:
Индекс | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Значение | 15 | 8 | 14 | 45 | 48 | 45 | -57 | 45 | 1 | 0 |
Индексирование в массивы
Чтобы ссылаться на один элемент массива, используйте имя массива [индекс].
Например:
A [4] содержит значение 48
A [9] содержит значение 0
Индексированные элементы можно использовать так же, как простые переменные.
printf («% d n», A [4]); //выводим 48
элементов массива и циклов
Элементы массива обычно используются в циклах for, см. следующие коды:
for (x = 0; x
Инициализация массива
Мы объявляем обычные переменные в следующими способами:
int x;
x = 0;
или
int x = 0;
В случае массива просто перечислите значения массива в обозначении набора {}. Некоторые допустимые объявления массивов показаны ниже.
символьные буквы [5] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’};
числа с плавающей запятой [3] = {13.25, 12.09, 8.1};
Использование элементов массива в выражениях
Элементы массива могут использоваться везде, где может использоваться переменная того же типа. См. Следующую схему и коды.
Пример: int A [10];
Индекс | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
значение | 15 | 8 | 14 | 45 | 48 | 45 | -57 | 45 | 1 | 0 |
x = A [1] * 2; /* устанавливает x равным 16 */
A [4] = 88; /* заменяет 48 на 88 */
m = 6;
y = A [m]; /* устанавливает y равным –57 */
z = A [A [9]]; /* устанавливает z равным 15 */
Пример -1:
Семь чисел хранятся в множество. Следующая программа печатает все числа этого массива, а также печатает числа в обратном порядке.
#include int main () {int M [10] ; int j;/* сохраняем семь чисел в массиве M */M [0] = 2; M [1] = 4; M [2] = 6; M [3] = 8; M [4] = 10; M [5] = 12; M [6] = 14;/* вывести числа в M */printf («Вывести все числа: n»); for (j = 0; j = 0; --j) {printf ("M [% d] =% d n", j, M [j]); }}
Вывод:
Пример -2:
Следующая программа вычисляет простые числа от 1 до MXNO.
#include #define MXNO 50int main () {int M [MXNO]; int j, n; /* отметить все числа */printf ("Простые числа: n n"); для (j = 0; j
Копирование массивов:
У нас есть два массива list1 и list2
int список1 [6] = {2, 4, 6, 8, 10, 12};
int list2 [6];
и мы хотим скопировать содержимое списка list1 в list2. Для общих переменных (например, int x = 3, y = 5) мы используем простой оператор присваивания (x = y или y = x). Но для массивов следующее утверждение неверно.
Мы должны копировать между массивами элемент за элементом, и два массива должны иметь одинаковый размер. В следующем примере мы используем цикл for, который упрощает эту задачу.
#include main () int list1 [6] = {2, 4, 6, 8, 10, 12}; int list2 [6]; for (int ctr = 0; ctr
Вывод:
Элементы list2: 2 4 6 8 10 12
Двумерный массив в C
Двумерный массив можно использовать для представления матрицы, таблицы или настольных игр (крестики-нолики, судоку и т. д.). Позиции строк и столбцов даны как последовательные индексы. Когда вы объявляете переменную такого массива, используйте пару квадратных скобок для каждого измерения. См. Следующий пример:
//Объявить двумерный массив с 3 строками и 2 столбцами int table [3] [2]://создать и инициализировать arrayint table [ 3] [2] = {{10, 22}, {33, 44}, {45, 78}};
или
int table [3] [2] = {10, 22, 33, 44, 45, 78};
или
int table [3] [2] = {{10, 22}, {33, 44}, {45, 78}};
См. следующую диаграмму, которая представляет указанный выше массив:
0 | 1 | |
0 | 10 | 22 |
1 | 33 | 44 |
2 | 45 | 78 |
В приведенном выше массиве:
table [1] [1] содержит 22
table [2] [0] содержит 45
table [2] [2] is «массив вне границ»
Печать двумерного массива
Чтобы распечатать все элементы двухмерного массива, мы используем двояковложенный цикл for. В следующем примере 3 строки и 2 столбца.
#include main () {int row, col; int table [3] [2] = {{10, 22}, {33, 44}, {45, 78}}; для (строка = 0; строка
Вывод: