Бесконечный цикл можно создать преднамеренно, но тогда необходимо организовать в теле цикла прерывание цикла по условию выхода из цикла, используя операторы передачи управления break, goto, continue.
Оператор break (прерывать) вызывает завершение самого внутреннего включающего его оператора цикла по схеме:
while(1) /* бесконечный цикл */
{...; if (условие выхода)
break; /* прерывание цикла */
}
следующий оператор;
Оператор goto позволяет выйти за пределы операторов циклов любой глубины вложения в любое место программы.
Оператор continue (продолжить) позволяет пропустить оставшуюся часть тела цикла до закрывающей скобки (}) и начать новый цикл, то есть он не передает управление за пределы оператора цикла, в котором он находится, согласно схеме:
while (выражение)
{...; if (условие прерывания)
continue; /*прерывание текущего цикла */
операторы;
}
Во многих задачах количество повторений цикла задано или может быть вычислено до выполнения программы.
Пример. Организовать вывод четных чисел не больше 100.
|
|
Программа:
void main ()
{ int num = -1; /* начальное значение */
while (num < 100) /* условие цикла */
{ num ++; /* очередное число */
if (num % 2) /* нечетное число, если num%2!= 0 */
continue; /* переход к новому циклу */
printf(“%d ”, num); /* вывод четного числа */
}
}
Пример. Ввести натуральное число (N) и определить количество (K) и сумму его цифр (sum), например, для N = 215, K = 3, sum = 2+1+5=8. Идея алгоритма: в цикле, пока N не уменьшится до N = 0, для получения цифры младшего разряда используется операция деления по модулю 10 (M = N %10), а для уменьшения используется операция деления числа на 10 нацело (N = N / 10).
Программа:
# include<stdio.h>
# include<conio.h>
void main ()
{ long N; int K, sum, m; /* описание переменных */
clrscr (); /* очистка экрана */
printf (“Введите натуральное число: “);
scanf (‘‘%Ld’’, &N); /* ввод числа */
K = sum = 0; /* обнуление K и sum */
while (N) /* цикл, пока N!= 0 */
{ K++; /* подсчет количества цифр */
m = N % 10; /* получение цифры младшего разряда */
sum += m; /* подсчет суммы цифр */
N /= 10; /* деление N на 10 */
}
printf (“ Количество цифр = %d Сумма цифр = %d/n’’, K, sum);
puts (“ Нажмите любую клавишу.”);
getch (); /* задержка экрана результатов */
}
Результаты программы:
Введите натуральное число: 215
Количество цифр = 3 Cумма цифр = 8
Нажмите любую клавишу.