Теоретический материал (Д.Кириенко, С++)
Цикл for
Очень часто возникает необходимость выполнить одну и ту же последовательность
действий несколько раз: например, для вычисления выражения an
необходимо выполнить умножение на величину a n-1 раз. Для этого используются
циклы. В данном листочке речь пойдет о цикле for
.
Рассмотрим задачу вычисления суммы всех натуральных чисел от 1 до n.
Для этого заведем переменную s
, и к ней будем прибавлять значение
переменной
i
, где i
будет принимать все значения от 1 до n.
На языке C++ это можно сделать при помощи цикла for
следующим
образом:
int n, s=0, i;
cin>>n;
for (i=1; i<=n; ++i)
{
s=s+i;
}
cout<<s<<endl;
В этом примере последовательность инструкций в блоке, то есть инструкция
s=s+i
будет выполнена многократно для всех значений переменной i
от 1 до
n
,
то есть в результате переменная s
будет равна сумме всех натуральных
чисел
от 1
до n
.
При использовании цикла for
необходимо задать три параметра (в
круглых скобках
через точку с запятой).
Первый параметр – начальное значение переменной,
задается в виде
присваивания переменной значения, в нашем случае –
i=1
.
Второй параметр – конечное значение переменной,
задается в виде условия на значение
переменной. Цикл будет исполняться, пока условие истинно, в нашем случае условие
i<=n
означает,
что переменная i
будет принимать значения до n
включительно.
Третий параметр – шаг изменения переменной. Запись
++i
означает, что переменная i
будет увеличиваться на 1
с каждым новым исполнением цикла, запись
--i
– уменьшаться.
В нашем примере мы могли бы сделать цикл, в котором переменная
i
принимала бы все значения от n
до 1
, уменьшаясь при этом:
for(i=n; i>0; --i)
.
Если хочется, чтобы значение переменной в цикле менялось не на 1, а на
большую величину, то это можно сделать, например, так:
i=i+2
.
Упражнения
- (A) По данному натуральному n вычислите сумму 12+22+...+n2.
- (B) По данному натуральном n вычислите сумму 13+23+...+n3.
- (C) По данному натуральном n вычислите сумму 1×2+2×3+...+(n-1)×n.
- (D) По данным числам a и b выведите на экран все четные числа от a до b
включительно.
Например, при вводе
1
и10
программа должна вывести2 4 6 8 10
. - (E) По данному числу n вычислите значение n!.
- (F) По данным натуральным n и k вычислите значение Cnk=n!/(k!(n-k)!) (число сочетаний из n элементов по k).
- (G) По данному действительному числу a и натуральному n вычислите величину an. Программа считывает значение a и n и выводит an.
- (H) По данному натуральному n вычислите сумму 1+(1+2)+(1+2+3)+...+(1+2+...+n).
- (I) По данному числу n вычислите сумму 1+1/22+1/32+...+1/n2. Как вы думаете, к чему приближается эта сумма с увеличением n?
- (J) По данному числу n вычислите сумму 4(1-1/3+1/5-1/7+...+(-1)n/(2n+1)). Как вы думаете, к чему будет приближаться эта сумма с увеличением n?
- (K) По данному действительному числу a и натуральному n вычислите сумму 1+a+a2+...+an не используя формулу суммы геометрической прогрессии. Время работы программы должно быть пропорционально n. Затем решите эту задачу по формуле суммы геометрической прогрессии и сдайте ее в тестирующую систему.
- (L)
Дано 10 целых чисел. Вычислите их сумму. Например, при вводе чисел
1 2 3 4 5 6 7 8 9 10
программа должна вывести55
. - (M)
Дано несколько чисел. Вычислите их сумму.
Сначала вводится количество чисел N. Затем вводится N целых чисел, программа должна вывести их сумму.
Например, при вводе
3 1 20 300
программа должна вывести321
. - (без тестирующей системы) Найдите все двузначные числа, которые равны
удвоенному произведению своих цифр. Указание: организуйте цикл, в котором
переменная
i
принимает значения от 10 до 99, проверьте, равна лиi
удвоенному произведению своих цифр. - (без тестирующей системы) Квадрат трехзначного числа оканчивается тремя цифрами, равными этому числу. Найдите все такие числа.