
- •Лекция №6
- •7.Сложные типы данных
- •7.1. Массивы
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •7.2. Структуры
- •Void main()
- •Void main()
- •Поля битов
- •Void main ()
- •Переменные с изменяемой структурой
- •12.3. Данные перечислимого типа
- •Void main()
- •Void main()
- •12.4. Объединения (смеси)
- •12.5. Тип void
Лекция №6
7.Сложные типы данных
7.1. Массивы
Массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Можно использовать и любой другой раннее описанный тип, поэтому вполне правомерно существование массивов структур(записей), массивов массивов и т.д. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Из объявления массива компилятор должен получить информацию о типе элементов массива и их количестве. Массивы бывают одномерными, двухмерными и т.д.
Объявление массива имеет два формата:
СпецификаторТипа ИмяМассива [КонстантноеВыражение];
СпецификаторТипа ИмяМассива [ ];
СпецификаторТипа задает тип элементов объявляемого массива. Элементами массива не могут быть функции и элементы типа void.
КонстантноеВыражение в квадратных скобках задает количество элементов массива. КонстантноеВыражение при объявлении массива может быть опущено в следующих случаях:
• при объявлении массив инициализируется,
• массив объявлен как формальный параметр функции,
• массив объявлен как ссылка на массив, явно определенный в другом файле.
Пример:
double b[10]; /* вектор из 10 элементов имеющих тип double */
float f[4]={3.5,6.8,9.0,6};
float f1[]={2.3,5.6,6.7,4.2,3};
Пример: Найти максимальный элемент массива A[10]
#include<stdio.h>
main()
{
const N=10; /*размерность масcива А*/
static float A[N]; /*описание масcива А */
float MAX ;
int I ;
//ввод элементов массива
printf("Bведите через пробел %d чисел\n ",N);
for (I=1;I<=N;I++) scanf("%f",&A[I]);
// нахождение наибольшего элемента последовательности
MAX =A[1];
for (I=2;I<=N;I++)
if (A[I]>MAX) MAX =A[I];
printf("\nMАX=%.3f",MAX);
}
Самостоятельная проработка:
Пример: Дан массив А[10]. Выполнить сортировку первой половины массива в порядке убывания (метод обмена), а вторую – в порядке возрастания (метод выбора).
#include<stdio.h>
void main()
{
const N=10; /*размерность масcива А*/
static float A[N]; /*описание масcива А */
float k ;
int I,J,m ;
//ввод элементов массива
printf("Bведите через пробел %d чисел\n ",N);
for (I=0;I<N;I++) scanf("%f",&A[I]);
// Сортировка методом обмена
for(I=0;I<N/2-1;I++)
for (J=0;J<N/2-1;J++)
if (A[J]<A[J+1]) /*Сравнение пары соседних чисел A[J] и A[J+1]*/
{
k=A[J]; /*Перестановка A[J] и A[J+1] местами */
A[J]=A[J+1];
A[J+1]=k;
}
// Сортировка методом выбора
for(I=N-1;I>N/2+2;I--)
{
m=N/2+1; /* Индекс первого элемента */
for (J=N/2+1;J<I;J++)
if (A[J]>A[m]) m=J;
k=A[m]; /*Перестановка A[m] и A[I] местами */
A[m]=A[I];
A[I]=k;
}
//вывод отсортированного массива
printf("\nОтсортированный массив\n");
for (I=0;I<N;I++)
printf("%8.2f\n",A[I]);
}
Пример: Дан массив А[10]. Выполнить сортировку массива в порядке возрастания.
#include<stdio.h>