Добавил:
Лабы/курсовые по программированию (С++/Verilog HDL), Теория и Практика Помехоустойчивого Кодирования Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1сем Дагаев / progr_su_3.ppt
Скачиваний:
10
Добавлен:
09.03.2022
Размер:
379.39 Кб
Скачать

Действия над структурами

1. Обращение к полю структуры через имя переменной

Stud1.Year Stud2.Name

2. Использование в вычислениях полей структур

Stud1.Year = 1992;

int Age = 2011 - Stud1.Year; strcpy(Stud1.Name, ''Bill'');

printf(''Имя:%s возраст:%d'', Stud1.Name, Age);

3. Обращение к полю через указатель

struct Person* pStud = &Stud1;

printf(''%s %d'', pStud->Name, pStud->Year);

Задача

Создать тип данных — структуру, содержащую 3 поля: Марка машины, Фамилия владельца, Год выпуска. Создать две структурных переменных, ввести в них данные с клавиатуры. Определить, какая из двух машин новее. Вычислить срок эксплуатации каждой машины. Результаты вывести на экран.

Эту же задачу решить для структуры, имеющей в составе 5 полей: Марка машины, Фамилия владельца, Год выпуска, Месяц выпуска, Дата выпуска.

Передача в функцию структурной переменной

struct Person

{

char Name[30]; int Year;

} ;

void input_struct(struct Person* P); void output_struct(struct Person P); int main()

{

struct Person Ann; input_struct(&Ann); output_struct(Ann); return 0;

}

void input_struct(struct Person* P)

{

scanf(''%s'', P->Name); scanf(''%d'',&P->Year);

}

void output_struct(struct Person P)

{

printf(''%s %d\n'', P.Name, P.Year);

}

Вложенные структуры

Объявления типов: struct Person

{

char Name[30]; int Year;

} ;

struct Student

{

int Kurs;

struct Person Stud;

} ;

Объявление переменной:

struct Student Nick = {1,{''Ivanov'',1995}};

Обращение к полям структуры:

printf(''%d\n'',Nick.Kurs);

printf(''%s\n'',Nick.Stud.Name);

printf(''%d\n'',Nick.Stud.Year);

Массив структур

struct Person

{

char Name[30]; int Year;

} ;

struct Person Mas[4];

Обращение к полю структуры в массиве: Mas[i].Year = 1996;

(Mas + i)->Year = 1993;

Передача в функцию массива структур

struct Person

{

char Name[30]; int Year;

} ;

void input_struct(struct Person* P, int n); void output_struct(struct Person* P, int n); int main()

{

struct Person su11[25]; input_struct(su11, 25); output_struct(su11, 25); return 0;

}

void input_struct(struct Person* P, int n)

{

int i;

for(i=0; i<n; i++)

{

scanf(''%s'', P[i].Name); scanf(''%d'',&P[i].Year);

}

}

void output_struct(struct Person* P, int n)

{

int i;

for(i=0; i<n; i++)

{

printf(''%s %d\n'', (P+i)->Name, (P+i)->Year);

}

}

Объединения

union myunion /* тип данных */

{

int i; double d;

char mas[12];

} myvar ; /* переменная */

sizeof(myvar) <=> 12

Пример программы

union tag

{

int i; double d;

} u;

int main(void)

{

printf("integer number:\n"); scanf("%d",&u.i); printf("%d \n%e\n", u.i, u.d); printf("double number:\n");

scanf("%lf",&u.d); printf("%d \n%e\n", u.i, u.d); return 0;

}

Инициализация объединения

union tag

{

int i; double d;

} u ={1.2};

int main(void)

{

printf("integer number:\n"); printf("%d\n", u.i); printf("%e\n", u.d);

return 0;

}

Соседние файлы в папке 1сем Дагаев