Цикл for

advertisement
Цикл for
Очень часто возникает необходимость
выполнить одну и ту же последовательность
действий несколько раз: например, для
вычисления выражения an необходимо выполнить
n-1 раз умножение на величину a. Для этого
используются циклы. В данном листочке речь
пойдет о цикле for, который, как правило,
используется для повторения определенной
последовательности действий заданное
количество раз.
Рассмотрим задачу вычисления суммы всех
натуральных чисел от 1 до n. Для этого заведем
переменную Sum и к ней будем прибавлять
значение переменной i, где i будет принимать
все значения от 1 до n. На языке C++ это можно
сделать при помощи цикла for следующим
образом:
int n, Sum, i;
cin >> n;
Sum = 0;
for(i = 1; i <= n; ++i)
{
Sum = Sum + i;
}
cout << Sum << endl;
В этом примере последовательность
инструкций в блоке, то есть инструкция s = s + i
будет выполнена многократно для всех
значений переменной i от 1 до n, то есть в
результате переменная s будет равна сумме
всех натуральных чисел от 1 до n.
При использовании цикла for необходимо
задать три выражения-параметра (в круглых
скобках через точку с запятой).
Первый параметр – начальное значение
переменной, задается в виде присваивания
переменной значения, в нашем случае – i = 1.
Более формально — первый параметр содержит
произвольное выражение, которое
вычисляется один до выполнения тела цикла, и
как правило первый параметр используется
для инициализации переменной цикла. Первый
параметр может отсутствовать, тогда вместо
него ничего не пишется, а просто ставится
точка с запятой.
Второй параметр – конечное значение
переменной, задается в виде условия на
значение переменной, в нашем случае условие
i <= n означает, что переменная i будет
принимать значения до n включительно. Более
формально — второй параметр содержит
произвольное выражение. Цикл будет
исполняться, пока значение второго
параметра истинно (или ненулевое, если это —
целочисленное выражение).
Третий параметр – шаг изменения переменной.
Запись ++i равнозначна записи i = i + 1 и
означает, что переменная i будет
увеличиваться на 1 с каждым новым
исполнением цикла, запись --i равнозначна
записи i = i - 1 и означает, что переменная i
будет уменьшатся на 1. Более формально, третий
параметр — это произвольное выражение,
которые вычисляется после выполнения тела
цикла, но до проверки условия его окончания.
Как правило, в третьем параметре изменяется
значение переменной, записанной в первых
двух параметрах. Если хочется, чтобы значение
переменной в цикле менялось не на 1, а на
большую величину, то это можно сделать,
например, так: i = i + 2 или i = i - 3.
В нашем примере мы могли бы сделать цикл, в
котором переменная i принимала бы все
значения от n до 1, уменьшаясь при этом:
for(i = n; i > 0; --i).
Упражнения
A: Ряд чисел
Даны два целых числа A и B (при этом A≤B). Выведите
все числа от A до B включительно.
B: Обратный ряд чисел
Даны два целых числа A и B (при этом A≤B). Выведите
все числа от B до A включительно.
C: Сумма квадратов
По данному натуральном n вычислите сумму
12+22+...+n2.
D: Факториал
По данному целому неотрицательному n
вычислите значение n!.
E: Число сочетаний
По данным целым неотрицательным n и k
вычислите значение числа сочетаний из n
элементов по k, то есть n!/(k!(n-k)!).
F: Степень двойки
По данному целому неотрицательному n
вычислите значение 2n.
G: Пингвины
Напишите программу, которая по данному числу
n от 1 до 9 выводит на экран n пингвинов.
Изображение одного пингвина имеет размер 5×9
символов, между двумя соседними пингвинами
также имеется пустой (из пробелов) столбец.
Разрешается вывести пустой столбец после
последнего пингвина. Для упрощения
рисования скопируйте пингвина из примера в
среду разработки.
Учтите, что вывод данных на экран
производится построчно, а не попингвинно.
Символ обратного слэша “\” в текстовых
строках имеет специальное значение. Чтобы
включить в состав текстовой строки такой
символ, его нужно повторить дважды. Например,
для вывода на экран одного такого символа
можно использовать такой код: cout << "\\";.
Пример
Вв
од
Вывод
3
_~_
_~_
_~_
(o o)
(o o)
(o o)
/ V \
/ V \
/ V \
/( _ )\ /( _ )\ /( _ )\
^^ ^^
^^ ^^
^^ ^^
1
_~_
(o o)
/ V \
/( _ )\
^^ ^^
H: Флаги
Напишите программу, которая по данному числу
n от 1 до 9 выводит на экран n флагов.
Изображение одного флага имеет размер 4×4
символов, между двумя соседними флагами
также имеется пустой (из пробелов) столбец.
Разрешается вывести пустой столбец после
последнего флага. Внутри каждого флага
должен быть записан его номер — число от 1 до n.
Пример
Вв
од
Вывод
3
+___
|1 /
|__\
|
1
+___
|1 /
|__\
|
+___
|2 /
|__\
|
+___
|3 /
|__\
|
I: Сумма произведений соседних
чисел
По данному натуральному n≥2 вычислите сумму
1×2+2×3+...+(n-1)×n. Ответ выведите в виде
вычисленного выражение и его значения в
точности, как показано в примере.
Пример
Вв
од
Вывод
4
1*2+2*3+3*4=20
2
1*2=2
J: Четные числа
По данным двум натуральным числам A и B
выведите все чётные числа на отрезке от A до B.
В этой задаче нельзя использовать
инструкцию if, переменная в цикле должна
увеличиваться с шагом 2.
Пример
Вв
Вывод
од
1 10 2 4 6 8 10
K: Сумма десяти чисел
Дано 10 целых чисел. Вычислите их сумму. Какое
наименьшее число переменных нужно для
решения этой задачи?
Пример
Ввод
Выв
од
0 1 2 3 4 5 6 7 8 9 45
L: Сумма N чисел
Дано несколько чисел. Вычислите их сумму.
Сначала вводите количество чисел N, затем
вводится ровно N целых чисел. Какое
наименьшее число переменных нужно для
решения этой задачи?
Пример
Ввод
Выв
од
3
321
1 20 300
M: Количество нулей
Дано N чисел: сначала вводится число N, затем
вводится ровно N целых чисел. Подсчитайте
количество нулей среди введенных чисел и
выведите это количество.
Пример
Ввод
Выв
од
5
2
0 7 0 2 2
N: Диофантово уравнение - 1
Даны числа a, b, c, d. Выведите в порядке
возрастания все целые числа от 0 до 1000,
которые являются корнями уравнения ax3+bx2+cx+d=0.
Пример
Ввод
Выв
од
-1 1 -1 1 1
1 1 1 1
O: Диофантово уравнение - 2
Даны числа a, b, c, d, e. Подсчитайте количество
таких целых чисел от 0 до 1000, которые являются
корнями уравнения (ax3+bx2+cx+d)/(x-e)=0, и выведите их
количество.
Пример
Ввод
Выв
од
1 -2 1 0 1 1
1 1 1 1 1
0
P: Замечательные числа - 1
Найдите и выведите все двузначные числа,
которые равны удвоенному произведению
своих цифр.
Программа не требует ввода данных с
клавиатуры, просто выводит список искомых
чисел.
Q: Замечательные числа - 2
Квадрат трехзначного числа оканчивается
тремя цифрами, равными этому числу. Найдите и
выведите все такие числа.
Программа не требует ввода данных с
клавиатуры, просто выводит список искомых
чисел.
R: Замечательные числа - 3
Дано натуральное число n. Выведите в порядке
возрастания все трехзначные числа, сумма
цифр которых равна n.
Пример
Вв Выв
од од
3
102
111
120
201
210
300
S: Лесенка
По данному n выведите изображение лесенки,
содержащей n ступенек.
Пример
Вв Выв
од од
3
*
**
***
T: Волейбольная сетка
По данным числам n и m выведите изображение
волейбольной сетки, содержащей n ячеек по
вертикали и m ячеек по горизонтали.
В узлах сетки стоят знаки “+”, по вертикали они
соединены одним знаком “|”, а по горизонтали —
двумя знаками “-”.
Пример
Вв
Вывод
од
2 3
+--+--+--+
| | | |
+--+--+--+
| | | |
+--+--+--+
1 1
+--+
| |
+--+
U: Замечательные числа - 4
Даны два четырёхзначных числа A и B. Выведите
все четырёхзначные числа в интервале от A до B,
запись которых является палиндромом.
Пример
Вв Выв
од од
1600 1661
2100 1771
1881
1991
2002
V: Замечательные числа - 5
Даны два четырёхзначных числа A и B. Выведите в
порядке возрастания все четырёхзначные
числа в интервале от A до B, запись которых
содержит ровно три одинаковые цифры.
Пример
Вв Выв
од од
1900 1911
2100 1999
2000
2022
W: Остатки
Даны целые неотрицательные числа a, b, c, d, при
этом 0≤c<d. Выведите в порядке возрастания все
числа от a до b, которые дают остаток c при
делении на d.
В этой задаче нельзя использовать
инструкцию if.
Пример
Вво Выв
д
од
1 4 1 2 1 3
1 5 0 4 4
X: Сумма факториалов
По данному натуральном n вычислите сумму
1!+2!+3!+...+n!. В решении этой задачи можно
использовать только один цикл.
Y: Треугольная
последовательность
Дана монотонная последовательность, в
которой каждое натуральное число k
встречается ровно k раз: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, ...
По данному натуральному n выведите первые n
членов этой последовательности. Попробуйте
обойтись только одним циклом for.
Пример
Вв Вывод
од
2
1 2
5
1 2 2 3 3
Z: Потерянная карточка
Для настольной игры используются карточки с
номерами от 1 до N. Одна карточка потерялась.
Найдите ее, зная номера оставшихся карточек.
Дано число N, далее N-1 номер оставшихся
карточек (различные числа от 1 до N). Программа
должна вывести номер потерянной карточки.
Для самых умных – массивами и аналогичными
структурами данных пользоваться нельзя.
Пример
Вво Выв
д
од
5
5
1 2 3 4
4
3 2 4
1
Download