Массивы числовых данных
Замечание
Int I;
Int I;
Примеры
Foat x;
Char name[50];
Scanf(“%d %f %s”, &i, &x, name);
Вводим строку = 25 54.32е-1 Thompson
В результате получим I=25; x=54.32*10-1; name= Thompson
(к строке Thompson автоматически будет добавлен признак конца строки)
Foat x;
Char name[50];
Scanf(“%2d %f %*d %2s”,&i, &x, name);
Вводим строку = 56789 0123 45a72
В результате получим I=56; x=789.0; name= 45;
При разработке программ рекомендуется по возможности реже использовать функцию scanf, а пользоваться getc, gets и другими. Они более просты и выполняются с более быстрой скоростью.
При объявлении массива компилятор выделяет для него блок памяти, хранящий весь массив сразу. Отдельные элементы массива располагаются в памяти последовательно.
int array[10];
Array[0] | Array[1] | Array[2] | Array[3] | Array[4] | Array[5] | Array[6] | Array[7] | Array[8] | Array[9] |
Большое значение имеет то, где именно в программе объявлен массив. Элементы массива можно использовать в любом месте программы, где допускается применение числовой переменной соответствующего типа.
a[1]=89.97;
a[5]=a[1];
Индекс может быть литерной константой или индексным выражением. В массиве из n элементов индексы находятся в диапазоне 0..n-1 :
float b[100];
int a[10];
b[i]=100;
b[2+3]=10;
b[a[2]]=100; Например если a[2]=8, то b[a[2]] это тоже что и b[8].
Пример: программа, осуществляющая ввод элементов в массив и вывод содержимого на экран. (для исключения нулевого элемента его просто игнорируют)
# include <stdio.h>
float b[13];
int I;
int main()
{
for (i=1; i<13; i++)
{
printf(“ Enter expenses for month %d:”, i);
scanf(“%f”, &b[i]);
}
for (i=1; i<13; i++)
{
printf(“Month %d=$%.2f :”, i, b[i]); / %.2fуказывает что должно выводится вещественное число с 2 цифрами после десятичной точки/
}
return 0;
}
Многомерные массивы
В языке С допустимо использование массивов с неограниченным количеством измерений.
int с[4][5];
int aaa[10][2][3][10];
При объявлении массива количество элементов можно указать литерной константой или символической константой, созданной с помощью директивы #define.
#define n 12;
int array[n];
это эквивалентно объявлению int array[12];
Инициализация массивов
При объявлении массива можно инициализировать его полностью или частично.
int a[4] = {100, 200, 300, 400};
перечисленные в списке значения присваиваются в порядке, начиная с нулевого. Если не указать длину массива при инициализации компилятор создаст массив такой длины, что бы поместились все начальные значения.
int a[] = {100, 200, 300, 400};
Допускается возможность указать меньшее количество начальных значений, тогда неинициализированные элементы будут равны 0 (не всегда использовать с осторожностью).
int b[10]={1, 3, 6};
Инициализация многомерных массивов осуществляется аналогичным способом:
int a[4][3]={1, 2, 3, …, 12}или
int a[4][3]={{1, 2, 3},{4, 5, 6},{7, 8, 9},{10, 11, 12}};
Пример: программа создающая 3-х мерный массив из 1000 элементов целого типа и заполняет его случайными числами. Программа выводит элементы созданного массива на экран по 100 элементов.
#include <stdio.h>
#include <stdlib.h>
int R[10][10][10];
int a, b, c;
int main()
{
for (a=0; a<10; a++)
for (b=0; b<10; b++)
for (c=0; c<10; c++)
R[a][b][c]=rand();
for (a=0; a<10; a++)
{
for (b=0; b<10; b++)
{
for (c=0; c<10; c++)
printf (“ R[%d][%d][%d] = %d”, a, b, c, R[a][b][c]);
printf(“ ”);
}
printf(“ Press enter”); getchar();
}
return 0;
}
Максимальный размер массива не должен быть больше 64 Кбайт. Размер зависит от количества элементов в массиве и от типа каждого элемента.
float b[500] потребуется 500*4=2000 байт
Оператор sizeof определяет длину переменной любого типа в т.ч. и массивов.
sizeof[b]=2000;