168 Глава 2
2.26. (Проблема обособленного else) Определите напечатанный выходной результат для каждого из нижеприведенных фрагментов кода при x = 9 и у = 11, и x = 11 и у = 9. Отметим, что компилятор С++ игнорирует отступы в программе. Отметим также, что компилятор С++ всегда ассоциирует else с предшествующим if, пока ему не скажут об ином скобками { }. Поскольку на первый взгляд про граммист может быть не уверен, какие if соответствуют каким else, это известно как проблема «обособленного else*. Мы выбросили от ступы из нижеследующих кодов, чтобы показать проблему более наглядно. (Совет: примените соглашение об отступах, которое вы изучили.)
a) if (x < 10) if (у > 10)
cout « "*****" « endl;
else
cout « "#####" « endl;
cout « "$$$$$" « endl;
b) if (x < 10) { if (у > 10)
cout « "*****" « endl;
}
else {
cout « "#t###" « endl;
cout « "$$$$$" « endl;
2.27. Щругая проблема обособленного else) Модифицируйте следующие фрагменты кода, чтобы получить указанный вывод на экран. Ис пользуйте соответствующую технику отступов. Вы можете не де лать каких-либо других изменений, кроме вставки фигурных ско бок. Компилятор С++ игнорирует отступы в программе. Мы выбросили отступы из нижеследующих кодов, чтобы показать проблему более наглядно. Примечание: возможно, что модифика ция не требуется.
if (у == 8)
if (x == 5)
cout « "@@@Э@" « endl;
else
cout « "#####" « endl;
cout « "$$$$$" « endl;
cout « "&&&&&" « endl;
a) При x = 5 и у = 8 получите следующий результат
@@@@
$$$$$
&&&&&
b) При x = 5 и у = 8 получите следующий результат
ее@е
c) При x = 5 и у = 8 получите следующий результат
е@@@ &&&&&
Управляющие структуры 169
d) При x = 5 и у = 7 получите следующий результат. Подсказка: три последние оператора вывода после else являются частью составного оператора.
##### $$$$$ ss&s&
2.28. Напишите программу, которая читает размер стороны квадрата и затем печатает звездочками и пробелами пустой квадрат заданного размера. Ваша программа должна работать для любых размеров, заданных в интервале 1—20. Например, если программа прочла размер 5, она должна напечатать:
*****
*
*
* *****
Палиндром — число или текст, который одинаково читается слева направо и справа налево. Например, каждое из следующих пяти значных целых чисел является палиндромом: 12321, 55555, 45554 и 11611. Напишите программу, которая читает пятизначные целые и определяет, являются ли они палиндромами. (Подсказка: исполь зуйте операции деление и вычисления остатка, чтобы выделить из числа отдельные разряды.)
Введите целые данные, содержащие только нули и единицы (т.е. «двоичные» целые), и напечатайте их десятичный эквивалент. (Под сказка. Используйте операции деление и вычисления остатка, чтобы «отрывать» разряды «двоичного» числа по одному справа налево. В десятичной системе самая правая цифра имеет позиционное зна чение 1, следующая цифра слева имеет позиционное значение 10, затем 100, затем 1000 и т.д.; в двоичной системе чисел самая правая цифра имеет позиционное значение 1, следующая цифра слева имеет позиционное значение 2, затем 4, затем 8 и т.д. Таким образом, десятичное число 234 может быть представлено как 4*1 + 3*10 + 2*100. Десятичным эквивалентом двоичного 1101 является 1*1 + 0*2 + 1*4 + 1*8 или 1 + 0 + 4 + 8 или 13.)
Напишите программу, которая выводит на экран следующий шаблон шахматной доски:
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
Ваша программа может использовать только три оператора вывода: один вида
cout « "* ";
- 116 Глава 2
- 2.13. Основы повторения, управляемого счетчиком
- 2.14. Структура повторения for (цикл)
- 120 Глава 2
- 122 Глава 2
- 2.15. Пример использования структуры for
- 124 Глава 2
- 126 Глава 2
- 2.16. Структура множественного выбора switch
- Глава 2
- 130 Глава 2
- 132 Глава 2
- 2.17. Структура повторения do/while
- 134 Глава 2
- 2.18. Операторы break и continue
- Глава 2
- 2.19. Логические операции
- 138 Глава 2
- Глава 2
- 2.21. Заключение по структурному программированию
- IfcrpyKTypa (единственный выбор)
- Глава 2
- Глава 2
- 148 Глава 2
- Глава 2
- Глава 2
- Глава 2
- 156 Глава 2
- 158 Глава 2
- 160 Глава 2
- 2.1. А) следование, выбор и повторение, b) if/else. С) управляемым счет чиком или определенным заранее, d) Метку, сигнал, флаг или лож ный сигнал.
- 162 Глава 2
- 164 Глава 2
- 166 Глава 2
- 168 Глава 2
- 170 Глава 2
- 172 Глава 2
- 174 Глава 2
- 176 Глава 2
- 178 Глава 3
- Глава 3
- 3.3. Математические библиотечные функции
- 3.4. Функции
- Глава 3
- 3.5 Определения функций
- 184 Глава 3
- 186 ГлаваЗ
- 3.6. Прототипы функций
- 188 Глава 3
- 3.7. Заголовочные файлы
- 3.8. Генерация случайных чисел
- Глава 3
- 192 Глава 3
- 194 Глава 3
- 3.9. Пример: азартная игра
- Глава 3
- 198 Глава 3
- 3.10. Классы памяти
- 200 Глава 3
- 3.11. Правила, определяющие область действия
- 202 Глава 3
- 204 Глава 3
- 3.12 Рекурсия
- Глава 3
- 6) Значения, возвращаемые после каждого рекурсивного вызова
- 3.13. Пример использования рекурсии: последовательность чисел Фибоначчи
- Глава 3
- 3.14. Рекурсии или итерации
- 212 Глава 3
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- 3.15. Функции с пустыми списками параметров
- 214 Глава 3
- 3.16. Встраиваемые функции