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

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

ПРАКТИЧЕСКАЯ ЧАСТЬ. Пример 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 оперирует с двумя категориями...


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


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


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

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

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

Именные части речи, их общие и отличительные признаки Именные части речи в русском языке — это имя существительное, имя прилагательное, имя числительное, местоимение...

Интуитивное мышление Мышление — это пси­хический процесс, обеспечивающий познание сущности предме­тов и явлений и самого субъекта...

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