Цикл while


Циклы while похожи на циклы for, но имеют меньшую функциональность. Цикл while продолжает выполнение блока while, пока условие в while остается истинным. Например, следующий код будет выполняться ровно десять раз:

int n = 0;
while (n < 10) {
    n++;
}

Циклы while также могут выполняться бесконечно, если задано условие, которое всегда оценивается как истинное (ненулевое):

while (1) {
   /* do something */
}

Директивы цикла

Есть два важных директивы цикла, которые используются в сочетании со всеми типами циклов в C - breakи continueдирективы.

В breakдирективе привалов петли , после десяти циклов, даже несмотря на то, в то время как цикл никогда не заканчивается:

int n = 0;
while (1) {
    n++;
    if (n == 10) {
        break;
    }
}

В следующем коде continueдиректива заставляет printfпропускать команду, поэтому печатаются только четные числа:

int n = 0;
while (n < 10) {
    n++;

    /* check that n is odd */
    if (n % 2 == 1) {
        /* go back to the start of the while block */
        continue;
    }

    /* we reach this code only if n is even */
    printf("The number %d is even.\n", n);
}

Упражнение

arrayПеременный состоит из последовательности десяти чисел. Внутри цикла while вы должны написать два ifусловия, которые изменяют поток цикла следующим образом (без изменения printfкоманды):

  • Если текущее число, которое будет напечатано, меньше 5, не печатайте его.
  • Если текущее число, которое будет напечатано, больше 10, не печатайте его и останавливайте цикл.

Обратите внимание, что если вы не продвинете переменную итератора iи не используете continueпроизводную, вы застрянете в бесконечном цикле.