Операторы break и continue
Часто при
вознекновении некоторого события удобно иметь
возможность досрочно завершить цикл.
Используемый для этой цели оператор break (разрыв)
вызывает немедленный выход из циклов,
организуемых с помощью операторов for, while,
do-while, а также прекращение оператора switch.
Приведенная ниже программа обеспечивает поиск в
заданном иассиве элемента, равного g (пример
4.9). В случае обнаружения такого элемента
оператор break прекращает дальнейшее
выполнение цикла. Так как параметр i сохраняет
значение после выхода из цикла, то дальнейший
анализ его значения (if(i==n)) позволяет
судить об удачном (i<=n) илинеудачном
(i==n) поиске. В случае вложенных циклов
оператор break немедленно прекращает
выполнение самого внутреннего из объемлющих его
циклов.
Пример 4.9
/*линейный поиск*/
#include <stdio.h>
int a[]={1,2,3,33,5,6,0,8};
int n=8;
main()
{
int i,g=33;
for(i=0;i<n;i++)
if(a[i]==g)
break;
if(i==n)
printf("%d не найден\n",g);
else
printf("%d на %d месте \n"g,i);
} |
На примере 5.0 приведена программа, которая
ведет подсчет числа различных элементов в
массиве. Каждый очередной элемент a[i] сравнивается
с последующими элементами массива. Если он не
совпадает ни с одним из этих элементов, в счетчик k
добавляется еденица. В противном случае
внутренний цикл прерывается оператором break и
начинается новая итерация внешнего цикла.
Пример 5.0
/*число разных элементов*/
#include <stdio.h>
main()
{
static a[]={7,3,7,4,3,6};
int i,j,m,k=1;m=6;
for(i=0;i<m-1;i++)
{
for(j=i+1;j<m;j++)
if(a[i]==a[j])
break;
if(j==m)
k++;
}
printf("%d разных элем. \n", k);
} |
Оператор continue тоже
предназначен для прерывания циклического
процесса, организуемого операторами for, while,
do-while. Но в отличае от оператора break,
он не прекращает дальнейшее выполнение цикла, а
только немедленно переходит к следующей
интерации того цикла, в теле которого он
оказался. Он как бы имитирует безусловный
переход на конечный оператор цикла, но не за ее
пределы самого цикла. Программа на примере 5.1
использует оператор continue для пропуска
отрицательных элементов массива, суммируя
только положительные.
Пример 5.1
#include <stdio.h>
main()
{
static int a[]={1,2,-3,4,-5,6};
int i,n,s;
n=6; s=0;
for(i=0; i<n; i++)
{
if(a[i]<=0)
continue; /*пропуск 0*/
s+=a[i];
}
printf("сумма = %d \n",s);
}
|
< Дальше >
|