Программирование >>  Структурное программирование 

1 ... 295 296 297 [ 298 ] 299 300 301 ... 342


d) Биты в результате вычисления выражения, использующего операцию , устанавливаются в 1, если по крайней мере в

одном операнде соответствующие биты установлены в 1. В противном случае биты устанавливаются в 0.

e) Объявление структуры начинается с ключевого слова .

f) Для создания синонима ранее определенного типа данных используется ключевое слово .

g) Биты в результате вычисления выражения, использующего операцию , устанавливаются в 1, если в одном и только в

одном операнде соответствующие биты установлены в 1. В противном случае биты устанавливаются в 0.

h) Операция поразрядное И (&) часто используется, чтобы биты, т.е. выделить определенные биты и сделать невидимыми остальные.

i) На имя типа структуры можно ссылаться как на ее .

j) Доступ к элементам структуры осуществляется записью

или записью .

к) Операции и используются для

сдвига значений битов соответственно влево или вправо.

16.2. Укажите, что из нижеследующего верно, а что неверно. Если неверно, то объясните, почему.

a) Структуры могут содержать данные только одного типа.

b) Элементы разных структур должны иметь уникальные имена.

c) Ключевое слово typedef используется для определения нового типа данных.

d) Структуры всегда передаются в функции вызовом по ссылке.

16.3. Напишите один или группу операторов, выполняющих следующее:

a) Опишите структуру с именем Part, содержащую переменную part-Number типа int и массив partName типа char, элементы которого могут содержать до 25 символов.

b) Определите PartPtr как синоним типа Part *.

c) Объявите переменную а типа Part, массив Ь[10] элементов типа Part и переменную ptr, являющуюся указателем на тип Part.

d) Прочтите с клавиатуры число и имя в соответствующие данные-элементы переменной а.

e) Присвойте значения данных-элементов переменной а элементу 3 массива Ь.

f) Присвойте адрес массива Ъ переменной указателю ptr.

g) Напечатайте значения данных-элементов элемента 3 массива Ь, используя переменную ptr и операцию доступа к элементу структуры.

с) Переменные, объявленные в описании структуры, называются ее



16.4. Найдите ошибку в каждом из следующих пунктов:

a) Предположите, что struct Card была определена как содержащая два указателя на тип char с именами face и suit. Была также объявлена переменная с типа Card и переменная cPtr как указатель на Card. Переменной cPtr присвоен в качестве начального значения адрес переменной Ь.

cout << *cPtr.face endl;

b) Предположите, что struct Card была опеределена как содержащая два указателя на тип char с именами face и suit. Был также объявлен массив hearts[13] типа Card. Следующий оператор должен печатать значение элемента face в элементе 10 этого массива.

cout << hearts.face << endl;

c) struct Person { char lastName[15]; char firstName[15]; int age;

d) Предположите, что объявлены переменная р типа Person и переменная с типа Card.

Р = с;

16.5. Напишите по одному оператору, выполняющему каждый из перечисленных ниже пунктов. Предполагайте, что переменные с (в ней хранится символ), х, у и z имеют тип int, переменные d, е и f имеют тип float, переменная ptr имеет тип char *, массивы sl[100] и s2[100] имеют тип char.

a) Преобразуйте символ, хранящийся в с, в символ верхнего регистра. Результат присвойте переменной с.

b) Определите, является ли значение переменной с цифрой. Используйте условную операцию, как это делалось в программах на рис. 16.17, 16.18 и 16.19, чтобы печатать является или не является при выдаче результатов на экран.

c) Преобразуйте строку 1234567 в значение типа long и напечатайте его.

d) Определите, является ли значение переменной с управляющим символом. Используйте условную операцию, чтобы печатать является или не является при выдаче результатов на экран.

e) Присвойте указателю ptr адрес последнего вхождения с в строку si.

f) Преобразуйте строку 8.63562 в значение типа double и напечатайте его.

g) Определите, является ли значение переменной с буквой. Используйте условную операцию, чтобы печатать ♦ является или не является при выдаче результатов на экран.

h) Присвойте указателю ptr адрес последнего вхождения строки s2 в строку si.



Ответы на упражнения для самопроверки

16.1. а) структура. Ь) поразрядное И (&). с) элементами (членами), d) поразрядное ИЛИ (). е) struct, f) typedef. g) поразрядное исключающее ИЛИ С), h) замаскировать, i) тэг (ярлык), j) элемент структуры (.), указатель на структуру (->). к) сдвига влево ( ), сдвига вправо ( ).

16.2. а) Неверно. Структуры могут содержать данные различных типов.

b) Неверно. Элементы разных структур могут иметь совпадающие имена, но элементы одной структуры должны иметь уникальные имена.

c) Неверно, typedef используется для определения псевдонима (синонима) ранее созданного типа данных.

d) Неверно. Структуры всегда передаются в функции вызовом по значению.

16.3. а) struct Part {

int partNumber; char partName[26]; };

b) typedef Part * PartPrt;

c) Part a, b[10], *ptr;

d) cin a.partNumber >> a.partName;

e) b[3] = a;

f) ptr = b;

g) cout (ptr + 3)->partNumber

(ptr + 3)->partName endl;

16.4. a) Ошибка: пропущены скобки, в которые должно быть заключено * cPtr и без которых последовательность вычислений выражения будет неверной.

b) Ошибка: пропущен индекс массива. Правильное выражение: hearts[10].face.

c) Ошибка: в конце описания структуры должна быть точка с запятой.

d) Ошибка: переменные разных типов структур нельзя присваивать друг другу.

i) Определите, является ли значение переменной с печатным символом. Используйте условную операцию, чтобы печатать является или не является при выдаче результатов на экран.

j) Присвойте указателю ptr адрес последнего вхождения в строку si любого символа из строки s2.

к) Присвойте указателю ptr адрес первого вхождения с в строку si.

1) Преобразуйте строку -21 в значение типа int и напечатайте его.



1 ... 295 296 297 [ 298 ] 299 300 301 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика