Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к срезу__2014.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.76 Mб
Скачать

Структуры

Структура - это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных.

Формат описания структурного типа:

struct имя_типа

{определения_элементов};

В конце обязательно ставится точка с запятой (это оператор).

Например, если требуется объединить информацию о сотруднике какого-либо предприятия, может подойти следующая структура:

struct sotrudnik

{ int nom;

char fio[25];

float zarplata;};

Элементы такой структуры (номер, фамилия, зарплата) называются полями. Каждое поле имеет имя и тип.

После этого sotrudnik становится именем структурного типа, который может быть назначен некоторым переменным:

struct sotrudnik sot1, sot2;

Здесь sot1 и sot2 — переменные структурного типа.

Допускаются и другие варианты описания структурных переменных. Можно вообще не задавать имя типа, а описывать сразу переменные:

struct

{ int nom;

char fio[25];

float zarplata;} sot1, sot2;

Поля структуры являются отдельными переменными, над ними допустимы все операции, определенные для данного типа.

Обращение к элементам (полям) структурной величины производится с помощью уточненного имени:

имя_структуры.имя_элемента

Примеры:

sotl.fam; sot1.zarplata;

Значения элементов структуры могут определяться вводом, присваиванием, инициализацией. Пример инициализации в описании:

student sot1={300, "Кротов", 3500};

Если список инициализаций будет короче, то оставшиеся поля структурной переменной заполняются нулями.

Поля структуры могут сами иметь структурный тип.

Например, в структуре Person, содержащей сведения – ФИО, дата рождения, сделать дату рождения внутренней структурой date по отношению к структуре Person. Тогда шаблон такой конструкции будет выглядеть так:

struct date {int day, month, year;};

struct Person

{char fio[40];

struct date f1;

};

Объявляем переменную:

struct Person a;

Тогда обращение к полям структурной переменной a будет выглядеть следующим образом:

a . fio a. f1 . day a . f1 . month a . f1 . year

  1. Массивы структур в ЯП Си (объявление, обращение к элементам и их полям, примеры).

Структуры

Структура - это структурированный тип данных, представляющий собой поименованную совокупность разнотипных элементов. Тип структура обычно используется при разработке информационных систем, баз данных.

Формат описания структурного типа:

struct имя_типа

{определения_элементов};

В конце обязательно ставится точка с запятой (это оператор).

Например, если требуется объединить информацию о сотруднике какого-либо предприятия, может подойти следующая структура:

struct sotrudnik

{ int nom;

char fio[25];

float zarplata;};

Элементы такой структуры (номер, фамилия, зарплата) называются полями. Каждое поле имеет имя и тип.

После этого sotrudnik становится именем структурного типа, который может быть назначен некоторым переменным:

struct sotrudnik sot1, sot2;

Здесь sot1 и sot2 — переменные структурного типа.

Допускаются и другие варианты описания структурных переменных. Можно вообще не задавать имя типа, а описывать сразу переменные:

struct

{ int nom;

char fio[25];

float zarplata;} sot1, sot2;

Поля структуры являются отдельными переменными, над ними допустимы все операции, определенные для данного типа.

Обращение к элементам (полям) структурной величины производится с помощью уточненного имени:

имя_структуры.имя_элемента

Примеры:

sotl.fam; sot1.zarplata;

Допускается использование массивов структур. Это позволяет создавать программы, оперирующие с простейшими базами данных.

Пример:

Сформировать массив структур, содержащих информацию о студентах (фамилия, оценка по математике). Вывести на экран весь список и вычислить средний балл в группе по математике.

#include<stdio.h>

void main()

{struct student /*описание структурного типа*/

{char fam[20];

int oc;};

struct student a[10]; /*объявление массива структур*/

int i,n=4;float sum=0,sred;

for(i=0;i<n;i++) /*заполнение массива структур данными*/

{printf("введите фамилию\n");scanf("%s",&a[i].fam); /*обращение к полям структуры*/

printf("введите оценку\n");scanf("%d",&a[i].oc);}

puts("список студентов:");

for(i=0;i<n;i++)/*вывод массива структур на экран*/

printf("%20s%4d\n",a[i].fam,a[i].oc);

for(i=0;i<n;i++)sum+=a[i].oc; /*поиск суммы оценок*/

sred=sum/n;printf("средний балл=%f\n",sred);

}

  1. Работа с файлами на диске в ЯП Си (объявление указателя, режим доступа к элементам, открытие, закрытие, средства ввода вывода,).

Файл – это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки как единое целое. В файлах размещаются данные, предназначенные для длительного хранения. Файл хранится во внешней памяти на внешнем носителе, и по мере необходимости данные из файла вызываются в оперативную память для обработки. Любой файл рассматривается как байтовая последовательность, отсутствует понятие типа файла. Последний байт файла имеет значение EOF.

Каждому файлу в программе присваивается внутреннее логическое имя, используемое в дальнейшем при обращении к нему. Логическое имя (идентификатор файла) – это указатель на файл, т.е. на область памяти, где содержится вся необходимая информация о файле.

Формат объявления указателя на файл следующий:

FILE *имя указателя;

Открытие файла

Прежде чем начать работать с файлом, т.е. получить возможность чтения или записи информации в файл, его нужно открыть для доступа.

Для этого обычно используется функция

имя файловой переменной= fopen(“путь и имя файла”, “режим”);

Пример:

FILE *f;

f = fopen (" d:\\urok\\file1.dat ", "w");

Обратный слеш «\», как специальный символ в строке записывается дважды.

При успешном открытии функция fopen возвращает указатель на файл. При ошибке возвращается NULL. (Данная ситуация обычно возникает, когда неверно указывается путь к открываемому файлу, например, если указать путь, запрещенный для записи.)

Режим доступа к файлу:

w – файл открывается для записи (write); если файла с заданным именем нет, то он будет создан; если же такой файл уже существует, то перед открытием прежняя информация уничтожается;

r – файл открывается для чтения (read); если такого файла нет, то возникает ошибка;

a – файл открывается для добавления (append) новой информации в конец;

r+ (w+) – файл открывается для редактирования данных, т.е. возможны и запись, и чтение информации;

t – файл открывается в текстовом режиме;

b – файл открывается в двоичном режиме;

Последние два режима используются совместно с рассмотренными выше. Возможны следующие комбинации режимов доступа: “w+b”, “wb+”, “rw+”, “w+t”, “rt+”, а также некоторые другие комбинации.

Каждый открытый файл имеет маркер или указатель чтения-записи данных. При открытии файла этот указатель устанавливается на начало данных.