
- •Простые типы данных
- •Модификаторы
- •1. Запись целых констант
- •2. Запись вещественных констант
- •3. Запись символьных констант
- •1. Арифметические операции над данными целочисленных типов
- •Простые типы данных
- •Модификаторы
- •Операция присваивания
- •Простые типы данных
- •Модификаторы
- •Операция присваивания
- •Диапазоны значений простых типов данных для ibm pc
- •5. Структура программы. Функции.
- •2. Формальные параметры функций
- •3. Возвращаемые значения функций
- •2.2 Пример простой программы на языке Си.
- •Управляющие конструкции
- •Ветвления
- •Циклы while, do.. .While и for
- •Теоретичсекий зачет по операторам цикла
- •Графика
- •Указатели
- •Преобразование типов
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Операции над указателями.
- •Структуры
- •Объединения
- •. Описания типов (typedef)
- •Поразрядные операции (bitwize)
Структуры
Структуры (struct) в Си являются аналогом записей (record) в Паскале. Типичный пример описания структуры:
struct point {int x,y;} /* точка на плоскости с целочисленными координатами; х и у являются полями структуры point*/
Приведенный пример является именно описанием самой структуры, описание соответствующей переменной выглядит следующим образом:
struct point a;
Обратите внимание, что переменная описывается не как просто point а, а именно как struct point а.
Переменные можно описывать и при описании самой структуры:
struct point {int x,y;} a,b,c; /* описание структуры point и трех переменных a, b и с*/
Доступ к элементам структуры производится так же, как и в Паскале, с указанием имени переменной и имени поля. Пример: а.х , поле х
переменной а.
При описании указателя на структуру (такие указатели часто используются для организации списков, деревьев и других динамических структур данных, о которых будет рассказано далее) доступ к полю можно осуществлять посредством операции ?>. Приведем соответствующий пример. Пусть у нас уже имеется описание структуры point (см, выше), и мы описываем указатель на эту структуру: struct point *р. Для доступа к полю х в этом случае необходимо использовать запись (*р).х,но то же самое можно записать и короче: р?>х.
Структуры могут "вкладываться" друг в друга, это обычно делается для более точного описания объекта. Так, можно описать окружность посредством одной структуры struct circl {int x,y,r; }, но запись struct circl {struct point centre; int r; } изящнее. Хотя за это придется "платить" усложнением доступа к полям структуры. В первом случае при описании переменной struct circl о для доступа к полю х достаточно написать просто о.х, а во втором требуется запись о.centre.х. Впрочем, в случае более сложных примеров (а мы приводим совсем простые) такие "усложнения" описания типов обычно оправданны, ибо улучшают читабельность программы. В заключение этого раздела приведем пример описания массива структур. Ничего особенного и нового в этом описании нет, но массивы структур приходится использовать часто, и мы хотим, чтобы соответствующий пример был у вас перед глазами. Итак, если у нас уже имеется описание структуры point, то описание массива из десяти точек выглядит следующим образом: struct point m[10]. Доступ к элементам массива и их полям производится следующим образом: m [ i ].х.
# include <stdio.h>
main()
{
int i;
struct tel {char s[10];int num;} t;
FILE *f;
f=fopen("1.txt", "wb");
for (i=0;i<3;i++)
{
scanf("%s",&t.s);
scanf("%d",&t.num);
fwrite(&t, sizeof(t),1,f);
}
fclose(f);
}
Бинарные файлы. Структуры.
1. Дан файл f, компоненты которого являются действительными числами. Найти: а) сумму компонент
файла f; б) последнюю компоненту файла.
2. Дан файл f, компоненты которого являются действительными числами. Найти: а) наибольшее из
значений компонент; б) наименьшее из значений компонент с четными номерами; в) наибольшее из
значений модулей компонент с нечетными номерами; г) разность первой и последней компонент
файла.
3. Дан файл f, компоненты которого являются целыми числами. Найти количество квадратов простых чисел среди компонент.
4. Дано натуральное n. Записать в файл g целые числа При i=1,2,...,n значение равно: а) i; б) i!;
5. Описать, используя структуру данных запись, телефонную книгу. Составить программу, выдающую список абонентов, имеющих телефонный номер, начинающийся на 331.
6. Описать, используя структуру данных запись, таблицу дат и событий русской истории. Составить программу, выдающую список событий 19 века.
7. Описать, используя структуру данных запись, школьный класс (Фамилия и инициалы, дата рождения, месяц рождения, год рождения). Составить программу, выдающую список учеников, рожденных в мае месяце.
8. Описать, используя структуру данных запись, выборы (фамилия кандидата и количество
набранных голосов). Всего избирателей 2000. Составить программу, определяющую кто из делегатов прошел или необходимо проводить повторные выборы (должно быть набрано 1/3 голосов от общего количества).
.