For(инициализация_цикла; условие; список выражений)
Тело_цикла
Все операторы цикла содержат тело_цикла и условие.
Тело_цикла – это отдельный оператор (в т.ч. и пустой), который заканчивается точкой с запятой, либо составной оператор, который заключается в фигурные скобки.
Условие – это скалярное выражение (чаще всего отношение или арифметическое выражение), определяющее условие продолжения выполнения итераций (если его значение не равно нулю). Условие может быть достаточно сложным, состоять из нескольких выражений, разделенных запятой (в этом случае принимается решение по последнему выражению).
4.3.1 Оператор цикла while
Операторwhile –это оператор с предусловием(повторять тело цикла до тех пор, пока условие истинно). При входе в цикл вычисляется выражение-условие. Если его значение отлично от нуля, то выполняется тело цикла. Затем снова вычисляется условие, и выполнение цикла повторяется до тех пор, пока значение условия не станет равным нулю. Блок-схема работы оператора с предусловием:
Пример. Вычисляем сумму чисел, кратных 5.
int i=0, S5=0;
while(i<5)
{i++; printf("%d ",i); //1 2 3 4 5
S5 +=5*i; //5 15 30 50 75 (5+10+15+20+25)
}
printf(“i=%d S5=%d\n”,i,S5); } //i=5 S5=75
Внутри цикла могут стоять операторы continue, break, return.
Оператор continueзаставляет пропустить остаток тела цикла и перейти к следующей итерации (повторению).
Пример. Находим сумму первых четырех нечетных чисел, которые вводятся с клавиатуры, а также число четных и нечетных вводимых чисел.
int n1=0,n2=0,a,sum=0;
while(n1<4)
{scanf("%d",&a); //пусть будем вводить 1 2 3 4 5 6 7
if(a%2==0) //при четном числе
{n2++; // 1 2 3 (числа 2, 4, 6)
continue;}
n1++; // 1 2 3 4
sum+=a; } // 1 4 9 16 (1+3+5+7)
printf("n1=%d n2=%d sum=%d\n", n1, n2, sum);}
// n1=4 n2=3 sum=16
Оператор break завершит выполнение цикла.
Пример. Находим произведение чисел, которые вводятся с клавиатуры, при вводе 0 цикл завершается.
int i=0, n=0, a, Pr=1;
while(i<4)
{scanf("%d",&a); //пусть будем вводить 2 3 4 5 или 2 3 0
if(a==0) {n=1; break;}
i++; // 1 2 3 4 или 1 2
Pr*=a; } // 2 6 24 120 (2*3*4*5) или 2 6 (2*3)
printf("n=%d i=%d Pr=%d\n",n,i,Pr); }// n=0 i=4 Pr=120
//илиn=1 i=2 Pr=6
Оператор returnзавершит выполнение всей программы.
Пример. Находим частное от деления 1.0 на числа, которые вводятся с клавиатуры, при вводе 0 программа завершается.
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;}
i++; // 1 2 3 4или1 2
div/=b; } // 0.5 0.25 0.0625 0.0125 (1/2/2/4/5) или 0.5 0.25
printf("%d %f\n",i,div); // 4 0.0125 или Деление на 0
}
4.3.2 Оператор цикла do…while
Оператор do…whileможет обеспечить хотя бы одно выполнение тела цикла, т.к. сначала выполняется тело цикла, затем вычисляется выражение-условие, и если оно истинно, то тело цикла выполняется вновь, до тех пор, пока условие не станет равным нулю.
Блок-схема работы оператора с постусловием
Пример. К начальному значению m добавляется 1, пока mменьше4.
int m=1;
do{printf("m=%d ",m);.// m=1 m=2 m=3
m+=1; //2 3 4
}while (m<4); //цикл выполнится три раза
Пример. К начальному значению m добавляется 1, пока mменьше4.
int m=10;
do{printf("m=%d",m); // m=10
m++; // 11
}while (m<4); //цикл выполнится один раз
В этом операторе также можно использовать операторы break, continue, return.
4.3.3 Оператор цикла for
Конструкция оператора итерационного цикла следующая:
Дата добавления: 2016-04-11; просмотров: 1192;