Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ПРАКТИЧЕСКАЯ ЧАСТЬ. Пример 1. Написать программу структурного описания каталога одной книги.





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

Программный код решения примера

#include <stdio.h> #include <conio.h> #include <string.h> #define N 40 struct book { // определение структуры char title[N+1]; // название книги char author[N+1]; // автор int year; // год издания int page; // количество страниц float price; // цена в у.е. } Library; int main (void) { // Инициализация полей структуры Library.year = 2007; Library.page = 496; Library.price = 12.78F; strcpy_s(Library.title, N, "Programming in C"); strcpy_s(Library.author, N, "Stephen G. Kochan"); // Вывод на консоль printf("\n\t Title: %c\n", Library.title); printf("\t Author: %c\n", Library.author); printf("\t Year: %d\n", Library.year); printf("\t Number of pages: %d p.\n", Library.page); printf("\t Price: %1.2f y.e.\n", Library.price); printf("\n\n Press any key: "); getch(); return 0; }

В программе использованы функции strcpy_s() вместо стандартных функций strcpy(),что позволило избавиться от предупреждений в системе Visual Studio 2010.


Результат выполнения программы показан на рис. 13.1.

Рис. 13.1. Пример инициализированных полей структуры

Задание 1

1. Совместите объявление и инициализацию структуры. После инициализации структуры выполните изменение ее полей с последующим выводом на консоль.

2. Примените оператор typedef.

3. Поля структуры title и author определите с помощью указателей.

4. Произведите инициализацию структуры после ввода значений полей с клавиатуры.

5. Выполните вывод полей структуры в текстовый файл compX.txt, где Х – номер компьютера, на котором выполняется лабораторная работа.

Пример 2. Написать программу анализа средней успеваемости четырех студентов по четырем предметам за сессию на основе структурного типа данных.

Программный код решения примера

#include <stdio.h> #include <conio.h> #include <stdlib.h> #define N 4 // число студентов #define CH 30 // число символов для фамилии или имени // Определение структуры Struct { char**name; // имя студента char**surname; // фамилия студента int M; // отметка по математическому анализу int A; // отметка по алгебре int H; // отметка по истории int In; // отметка по информатике } student[N]; int main (void) { float mark; int i; // Выделение памяти для символьных указателей for (i = 0; i < N; ++i) { student[i].name = (char**) malloc(CH*sizeof(char)); student[i].surname = (char**) malloc(CH*sizeof(char)); } printf("\n"); for (i = 0; i < N; ++i) { printf("\t Enter a name of %d student \n\t: ", i+1); gets_s(student[i].name, CH - 1); printf("\t Enter a surname of %d student \n\t: ", i+1); gets_s(student[i].surname, CH – 1); printf("\t Enter marks in 4 subjects for %d student (through a blank) \n\t: ", i+1); scanf_s("%i%i%i%i", &(student[i].M),&(student[i].A), &(student[i].H),&(student[i].In)); _flushall(); } puts("\n====================================================================================="); printf("\t Statement of Achievement students:\n"); puts("======================================================================================\n"); for (i = 0; i < N; ++i) { printf("\t %c \t %c:\n\t Mathematical analyses, Algebra, History, Informatics\n \ \n\t\t %d\t\t %3d\t \ %3d\t %5d\n----------------------------------------------\n", \ student[i].name, student[i].surname, \ student[i].M,student[i].A,student[i].H,student[i].In); } mark = 0.0F; // F – спецификатор для типа float for (i = 0; i < N; ++i) { mark += (student[i].M + student[i].A + student[i].H + student[i].In); } // Средняя оценка группы из 4 (N)студентов printf("\n\t The average mark groups of %d students: %1.4f", N, mark/(4*N)); // 4*N - общее количество оценок // Освобождение памяти for (i = 0; i < N; ++i) { free(student[i].name); free(student[i].surname); } printf("\n\n Press any key: "); getch(); return 0; }

В программе использован массив структур – переменная student[N]. С целью определения имени и фамилии предварительно выделяется память под символьные указатели с помощью функций malloc(), для которых включен заголовок #include <stdlib.h>;.

Определение структуры выполнено за пределами главной функции main(), что позволяет использовать ее в других функциях, если бы они были определены в программе.

Шаблон структуры задан без имени-этикетки.

Возможный результат выполнения программы приведен на рис. 13.2.


Рис. 13.2. Пример сводной ведомости успеваемости студентов

Задание 2

1. Выполните усреднение оценок для каждого студента.

2. Предусмотрите ввод названий предметов (математический анализ, алгебра и т. д.) и определите их в виде инициализаторов структуры.

3. Увеличьте число студентов до семи и произведите запись результатов в текстовый файл с именем compX.txt, где Х – номер компьютера, на котором выполняется лабораторная работа.

4. В шаблоне структуры задайте теговое имя. Проанализируйте работу программы.

5. Примените оператор typedef для определения структурного типа данных.

6. Расположите фамилии (с именем) студентов в порядке возрастания их среднего балла за сессию.

Пример 3. Написать программу создания карточки служащего с помощью структурного типа данных и указателя на структуру. Предусмотреть инициализацию полей структуры и изменение этих полей.

Для решения примера воспользуемся структурой, рассмотренной в теоретической части данной темы:

struct employee {

char Name [20+1]; // имя

char Surname [20+1]; // фамилия







Дата добавления: 2015-09-06; просмотров: 623. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

Дезинфекция предметов ухода, инструментов однократного и многократного использования   Дезинфекция изделий медицинского назначения проводится с целью уничтожения патогенных и условно-патогенных микроорганизмов - вирусов (в т...

Машины и механизмы для нарезки овощей В зависимости от назначения овощерезательные машины подразделяются на две группы: машины для нарезки сырых и вареных овощей...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

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

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Studopedia.info - Студопедия - 2014-2025 год . (0.012 сек.) русская версия | украинская версия