- •Операторы циклов
- •Оператор while
- •Void main()
- •Void main( )
- •If(!(a%2)) // !01 при четном числе
- •Void main()
- •Void main()
- •Void main()
- •Оператор do…while
- •Оператор цикла for
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Операторы перехода Оператор безусловного перехода
- •Оператор возврата из функции return
- •Оператор выхода из цикла или переключателя break
- •Оператор выхода из текущей итерации continue
Void main( )
{int n1=0,n2=0,a,sum=0;
while (n1<4)
{scanf(“%d”,&a); //пусть будем вводить 1 2 3 4 5 6 7
If(!(a%2)) // !01 при четном числе
{n2++; // 1 2 3 (1+1+1=3 для чисел 2,4,6)
continue;}
n1++; // 1 2 3 4(1+1+1+1=4 для чисел 1,3,5,7)
sum+=a; // 1 4 9 16 (1+3+5+7=16)
}
printf(“%d %d %d\n”,n1,n2,sum);
}
На экране получим: 4 3 16
Пример 2.14 . Находим произведение чисел, которые вводятся с клавиатуры, при вводе 0 цикл завершается и произведение становится равным 0 .
#include <stdio.h>
Void main()
{int i=0,n=1,a,Pr=1;
while (i<4)
{scanf(“%d”,&a); //будем вводить 2 3 4 5 или 2 3 0 5
if (a==0) {n=0; break;}
i++; // 1 2 3 4 или 1 2
Pr*=a; } // 2 6 24 120 (2*3*4*5=120) или 2 6 (2*3=6)
printf(“%d %d\n”,i,Pr*n); }
На экране получим: 4 120 или получим: 2 0
Пример 2.15 . В этом примере находится частное от деления 1 на числа, которые вводятся с клавиатуры, при вводе 0 программа завершается.
#include <stdio.h>
Void main()
{int i=0; float b, div=1.0;
while (i<4)
{scanf(“%f”,&b); //пусть будем вводить 2 2 4 5 или 2 2 0
if (b==0.0) {puts (“Ошибка! Деление на 0”); return;}
div/=b; // 0.5 0.25 0.0625 0.0125(1/2/2/4/5)или 0.5 0.25
i++; } // 1 2 3 4 или 1 2
printf(“%d %f\n”,i-1,div); }
На экране получим: 4 0.0125 или ничего не выведется
Пример 2.16 . Найти все делители целого числа, значение которого вводится с клавиатуры.
#include <stdio.h>
Void main()
{int num,div,half=0;
puts (“введите число”);
scanf(“%d”,&num); //21
div=2; half=num/2; // half=10
printf(“делители числа %d: 1 ”,num);
// делители числа 21: 1
while(div<=half) // div<=10
{
if ((num%div)==0)
// (21%div)==0
printf(“%d ”,div); // 3 7
div++;
}
} На экране получим: делители числа 21: 1 3 7
Рис.7 – Блок-схема примера 2.16
Оператор do…while
Оператор do…while – это оператор с постусловием (выполнить тело цикла, пока условие истинно).
do тело_цикла
while (выражение_условие);
В операторе do…while сначала выполняется тело_цикла , затем вычисляется выражение_условие , и если оно истинно (не равно 0 ), то тело цикла выполняется вновь, до тех пор, пока условие не станет равным 0 .
Рис.8 – Блок-схема работы оператора с постусловием
Пример 2.17 . К начальному значению переменной m добавляется 1, пока m меньше 4.
#include <stdio.h>
void main()
{int m=1;
do{printf(“m=%d ”,m); // m=1 m=2 m=3
m++; // 2 3 4
} while (m<4); } // цикл выполнится три раза
На экране получим: m=1 m=2 m=3
Пример 2.18 . К начальному значению переменной m добавляется 1, пока m меньше 4.
#include <stdio.h>
void main()
{int m=10;
do{printf(“m=%d”,m); // m=10
m++; // m=11
}while (m<4);} // цикл выполнится один раз
На экране получим: m=10
Пример 2.19 .. От начального значения переменной m отнимается 1, пока m не равно 0.
#include <stdio.h>
void main()
{int m=4;
do;
while(m––); // цикл с пустым телом, выполнится пять раз (4,3,2,1,0)
printf(“m=%d”,m);}
На экране получим: m=-1
Осторожно пользоваться условным выражением тождественно равно(==) или неравно (!=).
Пример 2.20 .. От вещественного числа g отнимается 0.1, пока g больше 0.
#include <stdio.h>
void main()
{float g=1.0;
do {printf(“g=%.1f”,g);
g–=0.1; // 0.9 0.8 0.7 … 0.1 0.0
}
while(g>0); // цикл выполнится 10 раз
}
На экране получим: g=1.0 g=0.9 g=0.8 g=0.7 g=0.6 g=0.5 g=0.4 g=0.3 g=0.2 g=0.1
Пример 2.20а .. От вещественного числа g отнимается 0.1, пока g не равно 0.
#include <stdio.h>
void main()
{float g=1.0;
do {printf(“g=%.1f”,g);
g–=0.1; // 0.9 0.8 0.7 … 0.1 0.0
}
// получим бесконечный цикл
}
В этом операторе также можно пользоваться операторами break , continue , return .
