Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С++ Страуструп.doc
Скачиваний:
4
Добавлен:
18.04.2019
Размер:
2.72 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. Какой

вызов является законным? При каком вызове транслятору придется

завести временную переменную?

* ГЛАВА 3. ВЫРАЖЕНИЯ И ОПЕРАТОРЫ

"Но с другой стороны не следует

забывать про эффективность"

(Джон Бентли)

С++ имеет сравнительно небольшой набор операторов, который позволяет

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

работы с данными. Основные их возможности показаны в этой главе на одном

завершенном примере. Затем приводится сводка выражений, и подробно

обсуждаются операции преобразования типа и размещение в свободной памяти.

Далее дана сводка операторов, а в конце главы обсуждается выделение

текста пробелами и использование комментариев.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]