- •Руденко т.В. Сборник задач и упражнений по языку Си. ( учебное пособие для студентов II курса )
- •Предисловие
- •Типы, операции, выражения
- •Управление
- •3.1 Синтаксис и семантика операторов языка Си
- •Обработка числовых данных
- •Обработка символьных данных
- •Функции и структура программы
- •Указатели и массивы
- •Структуры, объединения
- •6.1 Основные сведения
- •6.2 Структуры и функции. Указатели на структуры.
- •6.3 Структуры со сылками на себя
- •Ввод-вывод
- •7.1 Стандартный ввод-вывод
- •7.2 Работа с файлами
- •Интерфейс с системой unix
- •Низкоуровневый ввод-вывод
- •Процессы, сигналы
- •8.2.1 Конвейер, перенаправление ввода-вывода
- •8.2.2 Сигналы. Фоновые процессы.
- •Задания практикума
- •Свойства транслятора
- •Калькулятор
- •Моделирование работы интерпретатора shell
- •Приложения
- •Библиотека стандартных функций языка с
- •Функции работы со строками
- •Функции проверки класса литер
- •Ввод-вывод
- •Операции над файлами
- •Форматный вывод
- •Литеры-спецификаторы и их смысл при выводе
- •Форматный ввод
- •Литеры-спецификаторы и их смысл при вводе
- •Функции ввода-вывода литер
- •Функции позиционирования файла
- •Математические функции
- •Функции общего назначения
- •Дальние переходы
- •10.2 Фрагменты стандарта языка Си
- •10.2.1 Классификация типов
- •10.2.2 Приоритеты и порядок выполнения операций
- •10.2.3 Арифметические преобразования при выполнении арифметических операций вида X op y
- •10.2.4 Арифметические преобразования при выполнении присваивания и явного приведения
- •10.2.6 Явное приведение ( тип т ) X
- •10.2.7 Адресная арифметика
- •10.3 Системные функции unix
- •10.3.1 Базисные средства ввода-вывода
- •10.3.2 Дополнительные средства ввода-вывода
- •10.3.3 Процессы, транспортеры, сигналы
- •Литература
- •Содержание
Задания практикума
Свойства транслятора
1. Выяснить, сколько байт отведено для хранения данных типа short, int, long, float, double и long double.
2. Выяснить способ представления типа char: signed- или unsigned- вариант.
3. Проконтролировать, все ли способы записи констант допустимы:
целых (обычная форма записи, u/U, l/L, их комбинации, восьмеричная и шестнадцатиричная системы счисления )
вещественных (обычная форма записи, в экспоненциальном виде, f/F, l/L, e/E )
символьных и строковых (в частности, происходит ли конкатенация рядом расположенных строковых констант )
4. Выяснить, как упорядочены коды символов '0'-'9', 'a'-'z', 'A'- 'Z', пробел (между собой и относительно друг друга ).
5. Проверить наличие и качество диагностических сообщений при неверной записи констант:
целых и вещественных
символьных и строковых
6. Проконтролировать, допускается ли инициализация переменных при описании; происходит ли инициализация по умолчанию.
7. Проверить, реагирует ли компилятор на попытку изменить константу (внешнюю, автоматическую, статическую; арифметических типов, строковую).
8. Исследовать особенности выполнения операции % с отрицательными операндами.
9. Проверьте, действительно ли операции отношения == и != имеют более низкий приоритет, чем все другие операции отношения.
10. Проверьте, выполняется ли правило "ленивых вычислений" выражений в Си, т.е. прекращается ли вычисление выражений с логическими операциями, если возможно "досрочно" установить значение результата.
11. Проверьте, все ли виды операнда операции sizeof, определяемые стандартом для арифметических типов, допускаются компилятором; действительно ли аргумент-выражение не вычисляется.
12. Определите, каким образом "малое" целое расширяется до int (старшие разряды int заполняются нулями или знаковым разрядом "малого" целого ).
13. Определите, каким образом расширяются unsigned- варианты "малых" целых ( до unsigned int как в "классическом" Си или сначала делается попытка расширить до int, и только в случае неудачи - до unsigned int ).
14. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование знаковых целых (M-битовое представление ) к знаковым целым (N-битовое представление ) при M > N, M = N, M < N.
15. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование беззнаковых целых (M-битовое представление ) к знаковым целым (N-битовое представление ) при M > N, M = N, M < N.
16. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование вещественных чисел ( X ) к знаковым целым ( N-битовое представление ) при | X | < 2N-1, | X | >= 2N-1.
17. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование знаковых целых X (M-битовое представление ) к беззнаковым целым ( N-битовое представление ) при M > N, M = N, M < N; X >= 0, X < 0.
18. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование беззнаковых целых (M-битовое представление ) к беззнаковым целым ( N-битовое представление ) при M > N, M = N, M < N.
19. Определите, каким образом при выполнении операции присваивания и явном приведении происходит преобразование вещественных чисел ( X ) к беззнаковым целым (N-битовое представление ) при 0<=X< 2N, X < 0, X >= 2N.
