Упражнения

  1. (*1) Заставьте работать программу с "Hello, world" (1.1.1).
  2. (*1) Для каждого описания в #2.1 сделайте следующее: Если описание не является определением, напишите для него определение. Если описание является определением, напишите для него описание, которое при этом не является определением.
  3. (*1) Напишите описания для: указателя на символ; вектора из 10 целых; ссылки на вектор из 10 целых; указателя на вектор из символьных строк; указателя на указатель на символ; константного целого; указателя на константное целое; и константного указателя на целое. Каждый из них инициализируйте.
  4. (*1.5) Напишите программу, которая печатает размеры основных и указательных типов. Используйте операцию sizeof.
  5. (*1.5) Напишите программу, которая печатает буквы 'a'...'z' и цифры '0'...'9' и их числовые значения. Сделайте то же для остальных печатаемых символов. Сделайте то же, но используя шестнадцатиричную запись.
  6. (*1) Напечатайте набор битов, которым представляется указатель 0 на вашей системе. Подсказка: #2.5.2.
  7. (*1.5) Напишите функцию, печатающую порядок и мантиссу параметра типа double.
  8. (*2) Каковы наибольшие и наименьшие значения, на вашей системе, следующих типов: char, short, int, long, float, double, unsigned, char*, int* и void*? Имеются ли дополнительные ограничения на принимаемые ими значения? Может ли, например, int* принимать нечетное значение? Как выравниваются в памяти объекты этих типов? Может ли, например, int иметь нечетный адрес?
  9. (*1) Какое самое длинное локальное имя можно использовать в C++ программе в вашей системе? Какое самое длинное внешнее имя можно использовать в C++ программе в вашей системе? Есть ли какие-нибудь ограничения на символы, которые можно употреблять в имени?
  10. (*2) Определите one следующим образом:
11. const one = 1;

Попытайтесь поменять значение one на 2. Определите num следующим образом:

const num[] = { 1, 2 };

Попытайтесь поменять значение num[1] на 2.

  1. (*1) Напишите функцию, переставляющую два целых (меняющую значения). Используйте в качесте типа параметра int*. Напишите другую переставляющую функцию, использующую в качесте типа параметра int&.
  2. (*1) Каков размер вектора str в следующем примере:
14. char str[] = "a short string";

Какова длина строки "a short string"?

  1. (*1.5) Определите таблицу названий месяцев года и числа дней в них. Выведите ее. Сделайте это два раза: один раз используя вектор для названий и вектор для числа дней, и один раз используя вектор структур, в каждой из которых хранится название месяца и число дней в нем.
  2. (*1) С помощью typedef определите типы: беззнаковый char; константный беззнаковый char; указатель на целое; указатель на указатель на char; указатель на вектора символов; вектор из 7 целых указателей; указатель на вектор из 7 целых указателей; и вектор из 8 векторов из 7 целых указателей.

*1 Команда #include была выброшена из примеров в этой главе для экономии места. Она необходима в примерах, производящих ввывод, чтобы они были полными. (прим. автора)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: