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

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

Объявление функций






Функции всегда определяются глобально. Они могут быть объявлены с классом памяти static или extern. Объявления функций на локальном и глобальном уровнях имеют одинаковый смысл.

Правила определения области видимости для функций отличаются от правил видимости для переменных и состоят в следующем:

1. Функция, объявленная как static, видима в пределах того файла, в котором она определена. Каждая функция может вызвать другую функцию с классом памяти static из своего исходного файла, но не может вызвать функцию определенную с классом static в другом исходном файле. Разные функции с классом памяти static, имеющие одинаковые имена, могут быть определены в разных исходных файлах, и это не ведет к конфликту.

2. Функция, объявленная с классом памяти extern, видима в пределах всех исходных файлов программы. Любая функция может вызывать функции с классом памяти extern.

3. Если в объявлении функции отсутствует спецификатор класса памяти, то по умолчанию принимается класс extern. Все объекты с классом памяти extern компилятор помещает в объектном файле в специальную таблицу внешних ссылок, которая используется редактором связей для разрешения внешних ссылок. Часть внешних ссылок порождается компилятором при обращениях к библиотечным функциям Си, поэтому для разрешения этих ссылок редактору связей должны быть доступны соответствующие библиотеки функций.

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

 

Пример 9.4

File1.c#include < stdio.h> extern int i; void main(void){ void next(void); i++; printf(“В main i=%d\n”, i); next(); }int i=3; /*описание переменной*/ void next(void){void other(void); i++; printf(“В next i=%d\n”, i); other(); } File2.c#include < stdio.h> extern int i; void other(void){ i++; printf(“В other i=%d\n”, i); } Результат В main i=4В next i=5В other i=6

Варианты индивидуальных заданий

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

1. Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы, номер группы, успеваемость (массив из пяти элементов).

Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив из десяти структур типа STUDENT; упорядочить записи по алфавиту; вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 8 и 9; если таких студентов нет, вывести соответствующее сообщение.

2. Описать структуру с именем AEROFLOT, содержащую следующие поля: название пункта назначения рейса, номер рейса, тип самолета. Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; упорядочить записи по алфавиту; вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры; если таких рейсов нет, выдать на дисплей соответствующее сообщение.

3. Описать структуру с именем WORKER, содержащую следующие поля: фамилия и инициалы работника; название занимаемой должности; год поступления на работу. Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; упорядочить записи по алфавиту; вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; если таких работников нет, вывести на дисплей соответствующее сообщение.

4. Описать структуру с именем TRAIN, содержащую следующие поля: название пункта назначения; номер поезда; время отправления. Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив из шести элементов типа TRAIN; упорядочивать записи по алфавиту; вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры; если таких поездов нет, выдать на дисплей соответствующее сообщение.

5. Описать структуру с именем MARSH, содержащую следующие поля: название начального пункта маршрута; название конечного пункта маршрута; номер маршрута. Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH; упорядочивать записи по алфавиту; вывод на экран информации о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры; если таких маршрутов нет, выдать на дисплей соответствующее сообщение.

6. Описать структуру с именем NOTE, содержащую следующие поля: фамилия, имя; номер телефона; день рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: ввод с. клавиатуры данных в массив, состоящий из восьми элементов типа NOTE; упорядочивать записи по датам дней рождения; вывод на экран информации о человеке, номер телефона которого введен с клавиатуры; если такого нет, выдать на дисплей соответствующее сообщение.

7. Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя; знак зодиака; день рождения (массив из трех чисел). Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; упорядочивать записи по датам дней рождения; вывод на экран информации о людях, родившихся под знаком, наименование которого введено с клавиатуры; если такого нет, выдать на дисплей соответствующее сообщение.

8. Разработать программу учета покупок ювелирного магазина. Данные о покупках хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по стоимости ювелирного украшения.

9. Разработать программу учета жилищного фонда. Данные о жилом фонде хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по номеру жилищного договора.

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

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

12. Разработать программу расчета закупки сырья промышленного предприятия. Данные о закупках хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по типу сырья.

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

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

15. Разработать программу расчета закупки сырья промышленного предприятия. Данные о закупках хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по номеру накладной

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

17. Разработать программу определения пробега автомобиля на основе путевых листов. Данные о путевых листах хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по номеру путевого листа.

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

19. Разработать программу определения процента выхода годных изделий на основе актов приема ОТК. Данные о тестируемых партиях хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по номеру заказа.

20. Разработать программу оценки экспорта фирмы. Данные об экспортных операциях хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по номеру контракта.

21. Разработать программу оценки роста промышленного предприятия по данным за последние годы. Данные о финансовых отчетах хранить в виде массива структур. Итоговая информация должна выводиться на экран в виде таблицы, отсортированной по номеру финансового документа.

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

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

24. Разработать программу вывода упорядоченного по алфавиту списка студентов, предусмотрев ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

25. Разработать программу вывода упорядоченного по году рождения списка студентов, предусмотрев ввод исходной информации о пяти студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

26. Разработать программу вывода упорядоченного по году поступления списка студентов-отличников, предусмотрев ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

27. Разработать программу вывода анкетных данных студентов, сдавших сессию на 4 и 5, предусмотрев ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

28. Разработать программу вывода списка студентов, фамилии которых начинаются с буквы Б, и их оценки по всем предметам. Предусмотреть ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

29. Разработать программу вывода анкетных данных отличников. Предусмотреть ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

30. Разработать программу вывода списка студентов, фамилии которых начинаются с буквы А, и их даты рождения. Предусмотреть ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

31. Разработать программу вывода анкетных данных студентов, имеющих хотя бы одну оценку 3 в сессию. Предусмотреть ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

32. Разработать программу вывода списка студентов и их оценки, фамилии студентов начинаются с букв В и Г. Предусмотреть ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

33. Разработать программу вывода фамилий и дат рождения студентов, не имеющих оценок 3. Предусмотреть ввод исходной информации о четырех студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

34. В программе вычислить общий средний балл всех студентов и вывести на экран список студентов со средними баллами выше общего среднего балла. Предусмотреть ввод исходной информации о пяти студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.

35. Разработать программу вывода анкетных данных студентов, имеющих оценку 4 по физике и оценку 5 по высшей математике. Предусмотреть ввод исходной информации о пяти студентах: фамилия и инициалы, год рождения, год поступления в БГУИР, оценки за первый семестр по предметам: физика, высшая математика, информатика.







Дата добавления: 2014-11-10; просмотров: 1273. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

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

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

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

Решение Постоянные издержки (FC) не зависят от изменения объёма производства, существуют постоянно...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

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

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