Бьерн Страуструп - Язык программирования С++. Главы 2-4 - Упражнения

ОГЛАВЛЕНИЕ


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. Какой
   вызов является законным? При каком вызове транслятору придется
   завести временную переменную?