
- •Операторы циклов
- •Оператор 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 m=4, k=5;
for( ; ; k––) //опущены 1-е и 2-е выражения цикла, цикл бесконечный.
{if(k==0) break;
m++;
printf(“%d”, m);} // На экране получим: 5 6 7 8 9
}
Пример 2.27 . К начальному значению переменной m добавляется 1.
#include <stdio.h>
Void main()
{int m;
for(m=0; m<3;) // опущено 3-е выражение цикла
{m++; // 1 2 3
printf(“%d ”, m);
}
}
На экране получим: 1 2 3
Пример 2.28 . . Вводим с клавиатуры символы и выводим на экран коды этих символов до тех пор, пока не введется символ ’q’.
#include <stdio.h>
#include <conio.h>
Void main()
{char ch;
for( ; ;) // цикл бесконечный
{if((ch=getch())==’q’) break; //пусть будем вводить a b q
printf(“Символ %c код %d\n”,ch,ch); }
}
На экране получим: Символ a код 97
Символ b код 98
Легко заметить, что все операторы цикла взаимозаменяемы.
Пример 2.29 . К переменной i добавляется 1, на экран выводятся только четные значения i до тех пор, пока i<10 (с использованием оператора while ).
#include <stdio.h>
Void main()
{int i=0;
while(i<10)
{if(++i%2) continue;
printf(“%d ”, i);
}
}
На экране получим: 2 4 6 8 10
Пример 2.30 . . Пример 2.29, только с использованием оператора do while .
#include <stdio.h>
Void main()
{int i=0;
do{if (++i%2) continue;
printf(“%d ”, i);
} while(i<10);
}
На экране получим: 2 4 6 8 10
Разрешено и широко используется вложение любых циклов в любые циклы на любую глубину
Пример 2.31 . Пример с тремя вложенными циклами.
#include <stdio.h>
Void main()
{int i, j, k,sum=0;
for(i=0;i<2; i++)
for(j=0;j<3; j++) // 2*3=6 раз по 3 посчитается сумма
{for(k=0;k<2;k++) printf(“k=%d ”,k); //12 раз выполнится внутренний цикл
printf(“\ni=%d j=%d k=%d ”,i,j,k);
sum+=i+j+k; printf(“sum=%d \n”,sum);
}
}
На экране получим: k=0 k=1
k=0 k=1
i=0 j=0 k=2 sum=2 0+(0+0+2)
k=0 k=1
i=0 j=1 k=2 sum=5 2+(0+1+2)
k=0 k=1
i=0 j=2 k=2 sum=9 5+(0+2+2)
k=0 k=1
i=1 j=0 k=2 sum=12 9+(1+0+2)
k=0 k=1
i=1 j=1 k=2 sum=16 12+(1+1+2)
k=0 k=1
i=1 j=2 k=2 sum=21 16+(1+2+2)
При инициализации цикла можно объявить переменную, которая будет действовать только в пределах цикла. Например:
for(int i=0;i<3;i++) printf(“i1=%d\n”,i); // i1=0 i1=1 i1=2
for(;i>0;i––) printf(“i2=%d\n”, i); // i2=3 i2=2 i2=1
Если во второй цикл поместить еще одно определение той же переменной, то получим сообщение об ошибке.
for(int i=0;i<3; i++) printf(“i1=%d\n”, i);
for(int i=3;i>0; i––) printf(“i2=%d\n”, i); // Ошибка!!
При вложенных циклах в инициализации внутреннего цикла может быть определена переменная с тем же именем, что переменная во внешнем цикле. Например:
for(int i=0;i<2;i++)
{printf(“\n1_i=%d\n”, i);
for(int i=6;i>3;i––) printf(“2_i=%d ”, i);
printf(“\n\t3_i=%d”, i);
}
Результат несколько неожиданный:
1_i=0
2_i=6 2_i=5 2_i=4
3_i=3
1_i=1
2_i=6 2_i=5 2_i=4
3_i=3
До внутреннего цикла действует определение переменной i в инициализации внешнего цикла for . Инициализация внутреннего цикла определяет другую переменную с тем же именем, и это определение остается действительным до конца внешнего цикла.