Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
182
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

Ввод значений в массив

После того как вы определили массив, в него можно вводить информацию. Начальные значения элементам массива можно присвоить при его определении:

int temps[5] = {45, 56, 12, 98, 12};

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

temps[0] 45

temps[1] 56

temps[2] 12

temps[3] 98

temps[4] 12

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

int temps[5] = {45, 56, 12, 98, 12};

main()

{

static float prices[3] = {23.45, 34.56, 12.34};

Отдельным элементам массива можно присваивать значения внутри main() или другой функции, как в инструкции

temps[0] = 45;

Если вы хотите присвоить значение каждому элементу массива, вы можете использовать цикл для ускорения процедуры. В том случае, когда число элементов известно заранее, используйте цикл for:

main()

{

int temps[31];

int index;

for (index = 0; index 31; index++)

{

printf("Введите значение температуры #%d: ", index);

scanf("%d", &temp[index]);

}

}

Переменная index использована здесь для того, чтобы определить количество повторений цикла. В нашем случае цикл будет выполнен 31 раз, по одному на каждый элемент массива. При каждом повторе цикла на экране будет появляться подсказка:

Введите значение температуры #N

где N отображает индекс элемента, которому присваивается значение.

Обратите внимание, что количество повторов определяется увеличением значения переменной index от 0 до 30, а не до 31, поэтому данное значение может использоваться одновременно и как индекс для определения номера текущего элемента массива (которые пронумерованы от 0 до 30). Когда переменная index имеет значение 0, элемент temps[index] на самом деле является элементом temps[0]. Таким образом, значение, которое мы вводим в элемент temps[index] с помощью функции scanf(), присваивается первому элементу с именем temps[0]. С очередным выполнением цикла for значение переменной index возрастает, и при следующих повторах функция scanf() вводит значение в новые элементы массива. Этот процесс проиллюстрирован в табл.10.1.

Таблица 10.1. Использование цикла для увеличения индекса массива.

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

Рис. 10.3. Разница между индексом и значением элемента массива

рис.10.3. Индекс элемента имеет значение 0, а переменная temps[0] равна75. Как мы уже поясняли это на примере очереди перед кинотеатром, значение индекса переменной не связано со значением переменной. Содержимое следующей переменной temps[1] может быть больше, меньше или равно значению переменной temps[0].

В том случае, когда значение элементу массива не было присвоено, он так же, как и любая переменная, будет иметь своим значением некий «мусор». Можно быстро инициализировать целочисленный массив, если в цикле присвоить его элементам нулевые начальные значения:

for (index = 0; index < 31; index++)

temps[index] = 0;

Используя массив, можно ввести любое количество элементов, внеся соответствующие изменения в определение массива и условие цикла.