Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lection2.doc
Скачиваний:
10
Добавлен:
17.12.2018
Размер:
186.88 Кб
Скачать

Упражнения

  1. Напечатайте все точные квадраты натуральных чисел, не превосходящие данного числа n (например, при вводе n=50 программа должна вывести 1 4 9 16 25 36 49).

  2. Спортсмен пробежал в первый день 10 километров, а далее каждый день он увеличивал ежедневный пробег на 10%. Определите:

а) Какой путь пробежит спортсмен на 7-й день ?

б) Какое суммарное расстояние пробежит спортсмен за 7 дней ?

в) В какой день ежедневный пробег превысит 25 километров ?

г) В какой день суммарный пробег превысит 100 километров ?

  1. Дано натуральное число n. Напишите функцию int SumOfDigits (int n), вычисляющую сумму цифр числа n.

  2. Дано натуральное число n. Напишите функцию int NumberOfZeroes (int n), определяющую количество нулей среди всех цифр числа n.

  3. Дано натуральное число n. Напишите функцию int MaxDigit (int n) и int MinDigit (int n), определяющую наибольшую и наименьшую цифры данного числа.

  4. По данному натуральному числу n найдите сумму чисел 1+1/1!+1/2!+1/3!+...+1/n! Количество действий должно быть пропорционально n.

3.4 Бесконечные циклы

Как уже известно, в С++ операторы цикла for, while и do while позволяют повторное выполнение одного или более операторов до тех пор, пока выполняется некоторое условие. В зависимости от особенностей используемого алгоритма, могут быть случаи, когда требуется, чтобы программа выполняла бесконечный цикл. Например программа, контролирующая утечку радиации ядерного реактора, должна выполняться постоянно. Для организации бесконечного цикла следует просто задать ненулевую константу в качестве условия:

while (1)

Для повышения наглядности программы можно также определить константу. Например, можно использовать константу FOREVER следующим образом:

const int FOREVER=1;// Всегда

while (FOREVER)

В примере с ядерным реактором вы можете использовать следующее:

const int MELT_DOWM=0;

while (! MELT_DOWN)

3.5 Оператор for - бесконечный цикл

Как известно, цикл for позволяет программе повторять выполнение одного или более операторов заданное число раз. Когда условие, заданное в операторе for, становится ложным, выполнение программы продолжается с оператора, непосредственно следующего за телом цикла. Таким образом, при использовании for-цикла следует гарантировать наступление условия, прекращающего цикл. В противном случае цикл будет продолжать свое выполнение бесконечно. Поэтому такие циклы и называются бесконечными. В большинстве случаев причиной появления бесконечного цикла является ошибка программы. Например, рассмотрим следующий цикл:

for (i = 0; i < 100; i++)

{

cout<<i<<endl;

--i // Вызывает бесконечный цикл

}

Как можно видеть, при выполнении второго оператора тела цикла выполняется уменьшение значения управляющей переменной. Значение i уменьшается в цикле до -1, а позже вновь увеличивается до 0.

В результате значение управляющей переменной никогда не достигнет 100 и цикл никогда не завершится. Когда программа «зацикливается», ее выполнение можно закончить путем ввода комбинации Ctrl-C.

После компиляции и запуска программы последует повторяющийся вывод значения 0 на экран. Для прекращения выполнения программы следует ввести с клавиатуры Ctrl-C.

Итак, цикл for - позволяет программе выполнять повторно один или более операторов заданное число раз. Для обеспечения такой возможности в цикле for используется управляющая переменная, работающая обычно как счетчик. Как правило, не следует изменять значение управляющей переменной в теле цикла. Значение управляющей переменной должно изменяться только в полях инициализации и увеличения переменной цикла оператора for.

Необоснованные изменения значения управляющей переменной могут привести к получению бесконечного цикла, а также усложняют понимание исходного текста программы. Однако могут быть случаи, когда при достижении управляющей переменной определенного значения требуется завершить цикл или проигнорировать текущую итерацию. В таких случаях следует использовать оператор языка C++ break, который обсуждается далее.

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