Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
.doc
Скачиваний:
4
Добавлен:
23.09.2019
Размер:
440.83 Кб
Скачать

18)Двухмерные массивы. Массивы строк (в1б18, в3б9)

Двухмерные массивы

Объявление двумерного массива имеет вид:

тип <имя массива>имя[размер 1][размер 2];

Каждое константное-выражение в квадратных скобках определяет число элементов по данному измерению

массива, так что объявление двухмерного массива содержит два константных-выражения, трехмерного –

три и т.д. В языке С первый элемент массива имеет индекс равный 0.

Примеры:

int a[2][3]; /* представлено в виде матрицы

a[0][0] a[0][1] a[0][2]

a[1][0] a[1][1] a[1][2] */ a[1][0] a[1][1] a[1][2] */ a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] */

double b[10]; // вектор из 10 элементов имеющих тип double

int w[3][3] = { { 2, 3, 4 }, { 3, 4, 8 }, { 1, 0, 9 } };

В последнем примере объявлен массив w[3][3]. Списки, выделенные в фигурные скобки, соответствуют

строкам массива, в случае отсутствия скобок инициализация будет выполнена неправильно.

Пример:

int s[2][3];

Если при обращении к некоторой функции написать s[0], то будет передаваться нулевая строка

массива s.

Вы можете объявить двухмерный массив следующим образом:

int matrix[5][8];

matrix можно назвать массивом массивов. В данном случае матрица состоит из 5 строк и 8 столбцов.

Выражение matrix[0] обозначает первую строку, выражение matrix[1] – вторую и т.д.

Чтобы получить доступ к элементам массива, используйте две пары квадратных скобок. Оператор

matrix[4][2]=5;

присвоит значение 5 третьему элементу пятой строки матрицы.

Пример Ввода и вывода двумерного массива #include <stdio.h> void main(){ int A[100][100]; // массив 100х100 int i,j; // индексы для перемещения по массиву int n; // кол-во строк int m; // кол-во столбцов // ввод размеровматрицы printf("input emount of rows"); scanf("%d",&n); printf("input emount of collomns"); scanf("%d",&m); // ввод значений матрицы for (i=0;i<n;i++) for (j=0;j<n;j++){ printf("input A[%d][%d]",i,j); scanf("%d",&A[i][j]); } // вывод значение матрицы for (i=0;i<n;i++){ for (j=0;j<n;j++)

printf("%d ",A[i][j]);

printf("\n");} }

Массивы строк

Пример объявления символьного массива.

char str[] = "объявление символьного массива";

Следует учитывать, что в символьном литерале находится на один элемент больше, так как последний

из элементов является управляющей последовательностью ’\0’.

19) Инициализация массива. (в1б19, в2б24)

Инициализация массива – это присваивание элементам массива некоторых начальных значений.

Если размер массива не известен, то он считается равным числу инициализаторов, при этом тип его становится завершенным. Если размер массива известен, то число инициализаторов не должно превышать числа его элементов; если инициализаторов меньше, оставшиеся элементы обнуляются.

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

float arr[6] = {1.1, 2.2, 3.3, 4.0, 5, 6};

int a[3][5] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …, 15};

int a[3][5] = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}};

Количество инициализаторов не обязано совпадать с количеством элементов массива. Если

инициализаторов меньше, то оставшиеся значения элементов неопределенны. Для доступа к элементам

массива после его имени указывается номер элемента (индекс) в квадратных скобках.

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

Пример1 демонстрирует типичное использование инициализированного

многомерного массива для запоминания названий месяцев.

Пример 1. months (запоминание названий месяцев в массиве):

#include <stdio.h>

#define NUMMONTHS 12

char months[NUMMONTHS][4] = {

"Jan",   "Feb",   "Mar",   "Apr",

"May",   "Jun",   "Jul",   "Aug",

"Sep",   "Oct",   "Nov",   "Dec"

};

main(){

int   month;

for(month=0; month<NUMMONTHS; month++)

printf(?%s\n?, months[month]);

return 0;

}

­­­­­Объявленный в строке 5 массив months (месяцы) запоминает 12 трехсимвольных строк,

оканчивающихся нулевым байтом. Выражение months[0] относится к Jan, months[1] – Feb и т. д. 

Такие выражения наталкивают нас на восприятие массива months как одномерного. 

Но на самом деле он имеет  два измерения.  Например, выражение months[1][2]

ссылается на символ b строки  “Feb”.

 

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