logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

172 Глава 2

int x, у;

cout « "Введите два целых числа в диапазоне 1-20:"; cin » x » у;

for (int i = 1; i <= у; i++) { for (int j = 1; j <= x; j++)

cout « endl; }

return 0; }

  1. Напишите программу, которая находит наименьшее из нескольких целых. Полагайте, что первое прочитанное число задает количество последующих вводимых чисел.

  2. Напишите программу, которая считает и печатает произведение не­ четных целых от 1 до 15.

  3. В теории вероятностей часто изпользуется функция факториал. Факториал положительного целого n (n!) равен произведению по­ ложительных целых от 1 до n. Напишите программу вычисления факториалов целых чисел от 1 до 5. Напечатайте разультаты в фор­ мате с табуляцией. Какие трудности могут препятствовать вам по­ считать факториал 20?

  4. Модифицируйте программу расчета сложного процента в разделе 2.13 (рис. 2.21) так, чтобы расчет повторялся для ставок 5%, 6%, 7% , 8% , 9% и 10% . Используйте цикл for для варьирования ставки.

  5. Напишите программу, которая печатает следующие трафареты один под другим. Используйте цикл for для генерации трафаретов. Все звездочки (*) должны печататься одним оператором вида cout « '*'; (в результате звездочки будут печататься рядами). Подсказка: два последних трафарета требуют, чтобы каждая строка начиналась с соответствующего числа пробелов. Задача повышенной сложности: объедините ваши коды для решения четырех отдельных задач в единую программу, которая печатала бы все четыре трафарета рядом с помощью вложенных циклов for.

(А) (В) (С) (D)

* ********** ********** *

** ********* ********* **

*** ******** ******** ***

**** ******* ******* ****

***** ****** ****** *****

****** ***** ***** ******

******* **** **** *******

******** *** *** ********

********* ** ** *********

********** * * **********

2.48. Одно из интересных приложений компьютеров — рисование диа­ грамм и гистограмм. Напишите программу, которая читает пять чисел (каждое между 1 и 30). Для каждого просчитанного числа ваша программа должна напечатать строку, содержащую соответ-

Управляющие структуры 173

ствующее число смежных звездочек. Например, если ваша програм­ма прочла число 7, она должна напечатать *******.

2.49. Торговый дом продает пять различных продуктов, розничная цена которых: продукт 1 — $2.98, продукт 2 — $4.50, продукт 3 — $9.98, продукт 4 — $4.49 и продукт 5 — $6.87. Напишите про­ грамму, которая читает последовательность пар чисел, означающих:

  1. номер продукта;

  2. количество, проданное за день.

Ваша программа должна использовать оператор switch, который по­могает определить розничную цену каждого продукта. Программа должна рассчитать и вывести на экран общую розничную стоимость всех проданных за неделю продуктов.

  1. Модифицируйте программу на рис. 2.22 так, чтобы она рассчиты­ вала среднюю для класса оценку. Считайте, что вес оценки 'A' — 4 пункта, оценки 'B' — 3 пункта и т.д.

  2. Модифицируйте программу рис. 2.21 так, чтобы она использовала только целые для расчета сложного процента. (Подсказка: выразите все денежные суммы как целое число центов. Затем «разбейте» ре­ зультат на две составляющие — доллары и центы, используя опе­ рации деления и вычисления остатка. Вставьте точку между дол­ ларами и центами.)

2.52.Положим, что i = 1, j = 2, k = 3 и m = 2. Что напечатает каждый из приведенных операторов? Необходимы ли скобки в каждом слу­чае?

  1. cout « (i == 1) « endl;

  2. cout « (j == 3) « endl;

  3. cout « (i >= 1 && j < 4) « endl;

  4. cout « (m <= 99 && k < m} « endl;

  5. cout « (j >= i || k == m) « endl;

  6. cout « (k + m < j || 3 - j >= k) « endl;

  7. cout « (!m) « endl;

h) cout « ( ! (j - m) ) « endl; i) cout « ( !(r > m) ) « endl;

  1. Напишите программу, которая печатает таблицу двоичных, восьме­ ричных и шестнадцатиричных эквивалентов десятичных чисел в диапазоне от 1 до 256. Если вы плохо знакомы с этими системами счисления, прочтите сначала приложение Г.

  1. Рассчитайте значение n на основании бесконечного ряда

. 4 4 4 4 4 Л = 4-3 + 5-7 + 9-^+-

Напечатайте таблицу, которая покажет, как значение n аппрокси­мируется одним членом этого ряда, двумя членами, тремя и т.д. Сколько членов ряда потребовалось для получения значения 3.14? 3.141? 3.1415? 3.14159?