Программирование >>  Структурное программирование 

1 ... 312 313 314 [ 315 ] 316 317 318 ... 342


Упражнения для самопроверки

18.1. Заполните пробелы в следующих утверждениях:

a) Знак переназначает ввод данных с клавиатуры на ввод

данных из файла.

b) Знак переназначает вывод на экран на вывод в файл.

c) Знак используется для добавления вывода программы

в конец файла.

d) Знак используется для направления вывода одной программы на ввод другой программы.

e) Если в списке параметров функции поставлено , то это

значит, что функция может принимать переменное число параметров.

f) Макрос должен вызываться перед обработкой списка с

переменным числом параметров.

g) Макрос используется для доступа к значению очередного

параметра в списке параметров переменной длины.

h) Макрос обеспечивает нормальное возвращение из функции, в которой для обработки списка параметров переменной длины использовался макрос va start.

i) Значение параметра функции main равно числу аргументов командной строки.

j) Параметр функции main хранит аргументы командной

строки в виде символьных строк.

к) Утилита UNIX использует файл, называемый

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

1) Функция приводит к завершению выполнения программы.

ш) Функция регистрирует функцию, которая будет вызываться при нормальном завершении программы.

п) Спецификатор типа означает, что объект не должен

изменяться после того, как он был инициализирован.

о) К целочисленной или вещественной константе может быть добавлен , определяющий точный тип константы.

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

q) Функция используется для генерации сигнала из

самой программы.

г) Функция выполняет динамическое выделение памяти для массива и присваивает элементам массива нулевые значения.

s) Функция изменяет размер динамически выделенного

блока памяти.



Ответы на упражнения для самопроверки

18.1. а) переназначение ввода (<). Ь) переназначение вывода (>). с) добавление вывода( ). d) конвейер (I). е) многоточие (...). f) va start. g) va arg. h) va end. i) argc. j) argv. k) make, makefile. 1) exit, m) atexit. n) const, o) суффикс, p) signal, q) raise, r) calloc. s) realloc. t) Объединение, u) union.

Упражнения

18.2. Напишите программу, которая вычисляет произведение ряда целых чисел, передающихся функции product через список параметров переменной длины. Проверьте вашу функцию, вызвав ее несколько раз с различным числом аргументов.

18.3. Напишите программу, которая печатает аргументы, полученные из командной строки.

18.4. Составьте программу сортировки целочисленного массива в порядке возрастания или в порядке убывания. Программа должна принимать аргументы командной строки: значение -а должно соответствовать сортировке по возрастанию, а -d - сортировке по убыванию. (Примечание: это стандартный способ передачи опций программе в UNIX.)

18.5. Узнайте в руководствах по вашей системе, какие сигналы поддерживаются библиотекой обработки сигналов (signal.h). Напишите программу, обрабатывающую сигналы SIGABRT и SIGINT. Программа должна проверять перехват этих сигналов при вызове функции abort, генерирующем сигнал SIGABRT, и при нажатии комбинации клавиш <ctrl> с, генерирующем сигнал SIGINT.

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

18.7. Напишите программу, которая получает два имени файла через аргументы командной строки, читает по одному символу из первого файла и записывает их в обратной последовательности во второй файл.

t) является классом, содержащим совокупность переменных, которые занимают одну и ту же область памяти, но в разные моменты времени.

и) Ключевое слово используется для определения объединения.



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

*****

* ♦

* * *****

Программа должна использовать только следующие три оператора вывода:

cout << *; cout cout << endl;

18.9. Объявите объединение Data, содержащее элементы с типа char, s типа short, 1 типа long, f типа float и d типа double.

18.10. Создайте объединение Integer с элементами с типа char, s типа short, i типа int и 1 типа long. Напишите программу, в которую вводятся значения типов char, short, int и long и сохраняются в элементах переменных типа объединение Integer. Каждую переменную типа объединение выведите как тип char, short, int и long. Всегда ли значения выводятся правильно?

18.11. Создайте объединение Floatingpoint с элементами f типа float , d типа double и 1 типа long double. Напишите программу, в которую вводятся значения типоы float, double и long double и сохраняются в элементах переменных типа объединение Floatingpoint. Каждую переменную типа объединение выведите как тип float, double и long double. Всегда ли значения выводятся правильно?

18.12.Задано объединение

union А { float у; char *z; };

Какие из следующих операторов, выполняющих инициализацию этого объединения, являются правильными

a) А р = В; тип объекта В совпадает с типом А

b) А q = х; X - вещественная величина

c) А г = 3.14159;

d) А S = { 7 9.63 };

e) А t = { Hi There! };

f) А u = { 3.14159, Pi };



1 ... 312 313 314 [ 315 ] 316 317 318 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика