Инструкция continue
Инструкция continue — младшая сестра break. Она завершает не весь цикл, а только текущую итерацию: пропускает остаток блока, и цикл сразу переходит к следующей итерации.
Этот цикл выводит числа от 1 до 10, но пропускает числа, кратные 3:
for (int number = 1; number <= 10; number++) {
if (number % 3 == 0) {
continue;
}
printf("%d\n", number);
}Это выведет:
1
2
4
5
7
8
10Для 3, 6 и 9 условие истинно, и continue пропускает строку с выводом. Шаг number++ всё равно выполняется, и цикл как обычно продолжает со следующим числом.
Инструкция continue обычно стоит в начале блока и отсеивает значения, с которыми вы не хотите иметь дела: «это меня не интересует, переходим к следующему». Остальная часть блока обрабатывает только интересные значения, и вам не нужно оборачивать её целиком в if.
Будьте осторожны с continue в цикле while. Он сразу возвращается к условию, поэтому если строка, увеличивающая счётчик, стоит ниже continue, она тоже пропускается. Счётчик перестаёт меняться, и получается бесконечный цикл. В цикле for такого не случится: его шаг выполняется после каждой итерации, в том числе завершившейся через continue.
Задание
- 1
Цикл выводит первые 14 дней месяца, который начинается с понедельника, а вам нужны только рабочие дни. В начале блока цикла напишите
if, который пропускает день с помощьюcontinue, если это суббота или воскресенье. Субботы — это дни, для которыхday % 7 == 6, воскресенья — дни, для которыхday % 7 == 0. Тогда программа выведет сДень 1поДень 5и сДень 8поДень 12. - 2
Посчитайте рабочие дни. Перед циклом создайте переменную
working_daysсо значением0. В цикле, подifсcontinue, увеличивайте её на 1. После цикла выведитеРабочих дней: 10.