Счёт в обратную сторону и с шагом
Шаг цикла for не обязан быть i++. Цикл может считать в обратную сторону, по двойкам или по пятёркам, а может начинаться с нуля. Для этого меняются только три его части.
Счёт в обратную сторону. Начните с наибольшего числа, продолжайте, пока переменная не меньше наименьшего, и уменьшайте её с помощью i--:
for (int i = 3; i >= 1; i--) {
printf("%d\n", i);
}
printf("Поехали!\n");3
2
1
Поехали!Следите за условием: здесь оно i >= 1, «больше или равно». Если скопировать i <= 1 из цикла, который считает вверх, то условие ложно с самого начала (3 <= 1), и цикл не выполнится ни разу. Для компилятора это не ошибка: цикл просто ничего не выводит.
Счёт с шагом. Чтобы считать не по одному, используйте в шаге += или -=. Этот цикл считает по пять:
for (int i = 0; i <= 20; i += 5) {
printf("%d\n", i);
}0
5
10
15
20Переменная не обязана точно попадать на предел. С условием i <= 22 цикл выведет те же пять чисел: после 20 идёт 25, а 25 <= 22 ложно.
Счёт с нуля. Программисты часто начинают считать с 0. Этот цикл выполняется 3 раза, для i, равного 0, 1 и 2:
for (int i = 0; i < 3; i++) {
printf("Раунд %d\n", i);
}Раунд 0
Раунд 1
Раунд 2Цикл for (int i = 0; i < n; i++) выполняется ровно n раз. Вы будете видеть его очень часто, ведь в следующем уроке, о массивах, счёт тоже начинается с 0.
Самая частая ошибка с for — ошибка на единицу (off by one): цикл выполняется на один раз больше или на один раз меньше, чем нужно. При i < 3 цикл останавливается на 2, при i <= 3 — на 3. Если начать с 0 и написать i <= 3, цикл выполнится 4 раза: для 0, 1, 2 и 3. Когда вы не уверены, сколько раз выполняется цикл, выпишите значения его переменной и посчитайте их.
Задание
- 1
Цикл в редакторе должен прокричать три раза, но кричит четыре. Исправьте его условие, чтобы программа вывела
Гип-гип-ура!ровно три раза. - 2
Ниже этого цикла напишите цикл
for, который считает от 10 до 1, каждое число на отдельной строке. После цикла выведитеС Новым годом!. - 3
В конце напишите цикл, который выводит високосные годы с 2004 по 2024:
2004,2008,2012,2016,2020и2024, каждый на отдельной строке. В промежутке между 2004 и 2024 високосным является каждый четвёртый год, поэтому в качестве шага используйте+= 4.