Массивы числовых данных

Замечание

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;