Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mL_6_oper.doc
Скачиваний:
1
Добавлен:
29.04.2019
Размер:
219.65 Кб
Скачать

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 . Инициализация внутреннего цикла определяет другую переменную с тем же именем, и это определение остается действительным до конца внешнего цикла.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]