Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КРАТКИЙ ОБЗОР С.doc
Скачиваний:
1
Добавлен:
26.10.2018
Размер:
2.11 Mб
Скачать

2.7 Упражнения

1. (*1) Запустить программу "Hello, world" (см. $$1.3.1). 2. (*1) Для каждого описания из $$2.1 сделать следующее: если описание       не является определением, то написать соответствующее определение;       если же описание является определением, написать для него описание,       которое не являлось бы одновременно и определением. 3. (*1) Напишите описания следующих объектов: указателя на символ;       массива из 10 целых; ссылки на массив из 10 целых; указателя       на массив символьных строк; указателя на указатель на символ;       целого-константы; указателя на целое-константу; константного       указателя на целое. Описания снабдить инициализацией. 4. (*1.5) Напишите программу, которая печатает размеры основных типов       и типа указателя. Используйте операцию sizeof. 5. (*1.5) Напишите программу, которая печатает буквы от 'a' до 'z' и цифры       от '0' до '9' и их целые значения. Проделайте то же самое для других       видимых символов. Проделайте это, используя шестнадцатеричную       запись. 6. (*1) Напечатайте последовательность разрядов представления указателя       0 на вашей машине. Подсказка: см.$$2.6.2. 7. (*1.5) Напишите функцию, печатающую порядок и мантиссу параметра типа       double. 8. (*2) Каковы на используемой вами машине наибольшие и наименьшие       значения следующих типов: char, short,int,long, float, double,       long double, unsigned, char*, int* и void*? Есть ли какие-то       особые ограничения на эти значения? Например, может ли int* быть       нечетным целым? Как выравниваются в памяти объекты этих типов?       Например, может ли целое иметь нечетный адрес? 9. (*1) Какова максимальная длина локального имени, которое       можно использовать в вашей реализации С++ ? Какова максимальная       длина внешнего имени? Есть ли какие-нибудь ограничения на символы,       которые можно использовать в имени?       10. (*1) Напишите функцию, которая меняет местами значения двух целых.       В качестве типа параметров используйте int*. Напишите другую функцию       с тем же назначением, используя в качестве типа параметров int&.       11. (*1) Каков размер массива str в следующем примере:       char str[] = "a short string";       Какова длина строки "a short string"?       12. (*1.5) Составьте таблицу из названий месяцев года и числа дней       в каждом из них. Напишите программу, печатающую ее. Проделайте       это дважды: один раз - используя массивы для названий месяцев       и количества дней, а другой раз - используя массив структур,       каждая из которых содержит название месяца и количество дней в нем.       13. (*1) С помощью typedef определите типы: unsigned char, константный       unsigned char, указатель на целое, указатель на указатель на       символ, указатель на массив символов, массив из 7 указателей       на целое, указатель на массив из 7 указателей на целое и массив из       8 массивов из 7 указателей на целое.       14. (*1) Определить функции f(char), g(char&) и h(const char&) и       вызвать их, используя в качестве параметров 'a', 49, 3300, c, uc, и       sc, где c - char, uc - unsigned char и sc - signed char. Какой       вызов является законным? При каком вызове транслятору придется       завести временную переменную?