- •1. Объявление структуры, обращение к элементам структуры, объявление массива структур.
- •2.Объявление пользовательского (typedef) типа структуры. Объявление переменных и массивов данного типа. Привести примеры.
- •3.Ввод-вывод массива структур. Привести пример программы подсчета среднего арифметического по числовому полю в массиве структур.
- •4.Общий формат объявление функции пользователя. Прототип функции. Типы возвращаемых значений. Привести примеры.
- •5.Формальные и фактические параметры в функции. Основные способы передачи параметров в функцию.
- •6.Способы передать в функцию массивов. Привести примеры.
- •7.Привести примеры функции вывода на печать элемента массива структур по его порядковому номеру.
- •8.Привести пример функции, которая возвращает сумму (произведение, среднеарифметическое) элементов в массиве.
- •9.Рекурсия. Определение рекурсии. Привести примеры рекурсивных функций
- •10.*Указатели на функцию. Примеры указателей на функцию.
- •11. *Пользовательские функции с переменным числом параметров
- •12. Параметры функции main(). Привести примеры обращения к параметрам функции main()
- •13. Понятие сортировки. Основные типы алгоритмов сортировки. Оценка эффективности алгоритмов сортировки
- •14. Схема и алгоритм сортировки методом выбора
- •15. Пузырёк
- •16. Алгоритм вставок
- •17.*Улучшенные алгоритмы сортировки: Шелла, быстрая сортировка
- •18. *Модели динамических структур данных: стек, очередь
- •20. Файл. Понятие и объявление переменной файлового типа
- •21. Понятие файла и потока данных. Стандартные потоки
- •22.Виды файлов. Файлы последовательного доступа.
- •23.Алгоритм и программа создания файла записей (структур).
- •30. *Функции потокового ввода-вывода.
1. Объявление структуры, обращение к элементам структуры, объявление массива структур.
это не до конца еще, это объявление структуры Как вы уже знаете, переменная в C/C++ объявляется следующим образом: int iMyVariable; В приведенном операторе iMyVariable объявлена как целая переменная. А вот объявление переменной типа char: char cMyChar; Такие типы данных, как int, float, char и long, являются неотъемлемой частью C/C++ и вам не нужно писать никакого кода, чтобы сообщить компилятору о том, что означают эти слова. C/C++ позволяет вам также объ-являть свои собственные, специальные типы данных. В следующем разделе вы узнаете, как объявлять структуры, которые можно отнести к специальным типам данных. Напишите следующий исходный код: #include <iostream.h> #include <string.h> // Объявление структуры. struct MYSTRUCTURE { char sName[100]; int iAge; }; void main( void ) { MYSTRUCTURE MyStructure; strcpy(MyStructure.sName, "Andy" ); MyStructure.iAge = 13; cout << "My name is "; cout << MyStructure.sName; cout << " and I am "; cout << MyStructure.iAge; cout << " years old." << endl; ) В коде, который вы написали, имеются два оператора #include: #include <iostream.h> #include <string.h> Файл iostream.h включен в код, поскольку в main(void) используется cout. Файл string.h включается потому, что в main(void) используется функция strcpy() (объявленная в файле string.h). Затем вы объявляете структуру: Struct MYSTRUCTURE { char sName[100]; int iAge; }; Обратите внимание на синтаксис объявления структуры. Оно начинается с ключевого слова struct, за которым следует имя типа-структуры. В этой программе типу структуры присвоено имя MYSTRUCTURE. Затем следует собственно определение структуры, заключенное в фигурные скобки. Не забудьте поставить точку с запятой после закрывающей фигурной скобки. Теперь посмотрите на код внутри фигурных скобок: char sName[100]; int iAge; Это означает, что MYSTRUCTURE состоит из строки с именем sName и целого с именем iAge, sName и iAge называются элементами данных структуры; Вы объявили их "Внутри" cтруктуры MYSTRUCTURE. Код в main(void) объявляет переменную с именем MyStructure типа MYSTRUCTURE: MYSTRUCTORE MyStructure; Вспомните, что в объявляли переменную iNum1 следующим образом: int iNum1; Когда вы объявляете MyStructure , которая будет структурой типа MYSTRUCTURE, рассматривайте переменную MyStructure аналогично переменной iNum1. MyStructure - это имя переменной, а ее типом является MYSTRUCTURE точно так же, как типом переменной iNum1 является int. (Обратите внимание, что по традиции имя структуры составлено из символов нижнего регистра или в нем смешаны символы нижнего и верхнего регистров, как, например, в имени MyStructure, но в имени типа структуры используются только символы верхнего регистра, как, например, в MYSTRUCTURE.) Следующий оператор в main(void) копирует строку 'Andy' в элемент данных MyStructure.sName: strcpy ( MyStructure.sName, "Andy" ); В этом операторе обращение к элементу данных sName записано как MyStructure.sName Следующий оператор присваивает значение 13 элементу данных iAge cтруктуры MyStructure: MyStructure.iAge - 13; Затем выполняется ряд операторов вывода cout: cout << "My name is "; cout << MyStructure.sName; cout << " and I am "; cout << MyStructure.iAge; cout << " years old." << endl; Сложив все вместе, мы видим, что программа MyStruct выводит сообщение My name is Andy and I am 13 years old. (Меня зовут Andy и мне 13 лет)
Структуры шаблон структуры Список объявлений переменных, описывающий элементы структуры инициализация структуры Присваивание элементам структуры начальных значений инициализирующая запись Заключенный в фигурные скобки список, элементы которого разделяются запятыми и являются константами операция доступа к элементу структуры операция . Операция языка Си, результат которой — элемент структуры или объединения операция доступа к элементу структуры через указатель операция -> Операция языка Си, результат которой — элемент структуры или объединения операция копирования структур Присваивание значений элементов одной структуры элементам другой структуры того же типа при помощи операции присваивания самоссылающаяся структура Структура, в которой хотя бы один элемент является указателем на структуру того же типа, что и сами структура указатель на неопределенный тип указатель на void Обобщенный указательный тип
тоже к первому.. последнее. Массивы структур Структуры могут быть объединены в массивы структур. Объявление массива структур делается аналогично объявлению массива переменных. Например, если нужно хранить информацию о 10 студентах, то объявление массива будет следующим struct student stud1[10]; Здесь stud1 - имя массива структур, а stud1[0] - это первая структура, stud1[1] - вторая... stud1[9] - десятая структура. Чтобы получить доступ к полю age пятой структуры нужно написать stud1[4].age Чтобы получить доступ к полю kurs первой структуры нужно написать stud1[0].kurs Пример программы. #include <stdio.h> // определение структуры struct student { char name[30]; int kurs; int age; }; void main() { // объявление массива на 10 структур struct student stud[10]; int i, n; printf("Количество студентов:"); // ввод n (число студентов) scanf("%d", &n); for(i=0;i<n;i++) { printf("Введите имя:"); // ввод имени scanf("%s", stud[i].name); printf("Введите возраст:"); // ввод возраста scanf("%d", &stud[i].age); printf("Введите номер курса:"); // ввод номера курса scanf("%d", &stud[i].kurs); } // Вывод for(i=0;i<n;i++) { printf("Студент %sn", stud[i].name); printf("Курс %dn", stud[i].kurs); printf("Возраст %dn", stud[i].age); } }