|
Программирование >> Структурное программирование
16.5.а) с = toupper(с); b) cout \ с \ (isdigit(с) ? является : не является цифрой endl; c) cout atol( 1234567 ) endl; d) cout \ с \ << (iscntrl(c) ? является : не является управляющим символом endl; e) ptr = strrchr(sl, с); f) cout atof( 1234567 ) endl; g) cout \ с \ << (isalpha(c) ? является : не является буквой endl; h) ptr = strstr(sl, s2); i) cout \ с \ << (isprint(c) ? является : не является печатным символом << endl; j) ptr = strpbrlc (si, s2); k) ptr = strchr(sl, c); 1) cout atoi ( -21 ) endl; Упражнения 16.6. Напишите определения следующих структур и объединений: a) Структура Inventory, содержащая массив символов partName[30], целое partNumber, элемент с плавающей запятой price, целое stock и целое reorder. b) Структура Address (адрес), содержащая массивы символов streetAddress[25] (улица), city[20] (город), state[3] (штат) и zip-Code[6] (почтовый код). c) Структура Student, содержащая массивы firstName[15], last-Name[15] и переменную homeAddress типа struct Address из пункта (Ъ). d) Структура Test, содержащая 16 битовых полей шириной в 1 бит каждое. Именами этих полей являются буквы от а до р. 16.7. Имея следующие описания структур и объявления переменных struct Customer { char lastName[15]; char firstName[15]; int customerNumber; struct { char phoneNumber[11]; char address[50]; char city[15]; char state[3]; char zipCode[6]; } personal; ) customerRecord, *customerPtr; customerPtr = ScustomerRecord; напишите отдельные выражения, которые можно использовать для доступа к следуюш;им элементам структур. a) Элемент lastName структуры customerRecord. b) Элемент lastName структуры, на которую указывает customerPtr. c) Элемент структуры customerRecord. d) Элемент firstName структуры, на которую указывает customerPtr. e) Элемент customerNumber структуры customerRecord. f) Элемент customerNumber структуры, на которую указывает customerPtr. g) Элемент phoneNumber элемента personal структуры customer-Record. h) Элемент phoneNumber элемента personal структуры, на которую указывает customerPtr. i) Элемент address элемента personal структуры customerRecord. j) Элемент address элемента personal структуры, на которую указывает customerPtr. к) Элемент city элемента personal структуры customerRecord. 1) Элемент city элемента personal структуры, на которую указывает customerPtr. m) Элемент state элемента personal структуры customerRecord. n) Элемент state элемента personal структуры, на которую указывает customerPtr. о) Элемент zipCode элемента personal структуры customerRecord. р) Элемент zipCode элемента personal структуры, на которую указывает customerPtr. 16.8. Модифицируйте программу на рис. 16.14, введя в нее эффективное тасование карт (как показано на рис. 16.2). Напечатайте результирующее состояние колоды в две колонки, как на рис. 16.3. Перед каждой картой напечатайте ее цвет. 16.9. Напишите программу, сдвигающую на 4 бита вправо значение целого числа. Программа должна печатать двоичное представление целого до и после операции сдвига. Ваша система заполняет освободившиеся биты нулями, или единицами? 16.10. Если ваш компьютер использует 4-х байтовые целые, модифицируйте программу на рис. 16.5, чтобы она работала с 4-х байтовыми целыми. 16.11. Сдвиг влево целого без знака на 1 бит эквивалентен умножению значения на 2. Напишите функцию power2, которая принимает два целых, параметра nximber и pow и вычис.тяет Используйте д.тя расчета операцию сдвига. Программа должна печатать .(иачепня 1сак целые н в двоично!.) представлении. 16.12. Оиерадия сдвига в.иево может использов.ггься для упаковки двух значений симво.иов в одной двухбайтовой целой переменной без знака. Наттште программу, которая }1водит два символа с клавиатуры И lieijeA.ier их функции packCliuracters. Для упаковки двух г11.ч1,о iOB в де.тую переменную ти[1а unsigned присвойте пере-мениоп iiepBbiit гимво.п, сдвин!>те ее на 8 ио.*иций влево и примените к Ней и второму символу опсрацию поразрядное ИЛИ. Про-ijiaMMa до.гг1{иа ui,iводить символы в двоичном представлении до и после их улаковки в переменную типа xin.signed, чтобы убедиться, что упаког.ка проведена корректно. 16.1:. Hv:ii()..ii..>y3i oiiepaniiK) сдвига вправо, 110[,1К1рядное И н маску, на-miiuine <>у1и;1шю unpackCharacters, которая принимает целую церемс-ниую типа uubigned из упражнения 16.12 и распаковывает 11,3 нее ,чва (символа. Чтобы распаковать два симБ0.11а из двухбайтовой iiepihvieHiioii типа unsigned, скомбинпруй-е a-iy переменную с маской 65280 (11111111 00000000) и сдвиньте резу.пьтат вправо lia 8 б)!Гов. Присвойте результат переменной типа char. Затем ском-бинируше переменную типа unsigned ( маской 255 (00000000 1 1J1111 1 ). llpiu BoiiTe результат другой исре.чеиной типа char. Программа до.1жна лочатать переменную типа unsigned до распаковки, а [SiiVvM печататг. снмво.яы в двоичном 111)едставлении, чтобы убедиться, что распаковка проведена корректно. 1().14. Kc.rjii fumia ctn-KMa нспотьзует 4х байто.чые целые, перепишите ГIpoгI)a,Iтy >Г1ра>кнения 16.12, чтобы она упаковывала 4 символа. 16.15. Ксли ваи:а система исио.тьзует 4-х байтовые целые, перепишите фушлдию unpackCharacters из упражнения 16.14, чтобы она рас-па коврлвала 4 символа. Создавайте маски, необходимые для распаковки 4-х символов, применяя сдвиг влево на 8 битов значения 255 переменной маски О, 1, 2 и 3 раза (в зависимости от того, какой опт В1,1 хотите распаковать). 16.16. Напишите программу, которая изменяет на обратную последова-1ельность битов в целом значении без знака. Программа должна запрашивать ввод значения у пользовате.ця и вызывать функцию reverseBits для печати битов в обратной посдедовательности. Пе-чата11те двоичное представ.11ение значения до и после измене.ния последовате.аьностя битов, чтобы убедиться, что преобразование ироизвегиН npaBii.itbHO. 10.17. Модпфпци]>уйте (1ункцию displayBits, приведенную на рис. 16.5, чтобы она бь.ло переносима между системами, используюш;ими для хранения целых 2 н 4 байта. Подсказка: используйте операцию .sizeof дня определения размера целого на конкретном компьютере.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |