Задачи по языку С

       

Пояснения:


Управление 1.1

вначале y=1
if ( y!=0 ) x=5; (y!=0) (1!=0) На первом шаге вычисляется условие.
TRUE Так как условие - ИСТИНА, то выполняется первая часть условного оператора.
x=5

Управление 1.2



вначале y=1 if (y==0) x=3; else x=5;
(y==0) FALSE Вычисляем условие.
x=5 Выполняем вторую (ложную) часть условного оператора.

Управление 1.3

вначале y=1 x=1; if (y0) x=3; else x=5;
x=1; if (y0) x=3; else x=5; } Вначале x присваивается 1.

Фигурные скобки показывают вложенность операторов.

(y Условие первого условного оператора - ЛОЖЬ, так что часть оператора, соответствующая истинному значению условия, пропускается. Оператор, следующий за else, находится в первой части первого условного оператора, так как он относится ко второму условному оператору. В языке С действует правило: оператор, следующий за else, относится к ближайшему if.

Управление 1.4

вначале y=1 if ( z=y
(z=(y Начинаем с вычисления первого условия. Как и прежде, мы будем использовать скобки для обозначения соответствия операций и операндов.
(z=(1
(y==0) FALSE Так как условие первого if - ЛОЖЬ, выполняется вторая часть этого оператора, которая опять оказывается условным оператором; знакчит вычисляется его условие.
x=7 Условие - ЛОЖЬ, поэтому выполняется вторая часть второго условного оператора.

Управление 1.5

вначале y=1 if (z=(y==0)) x=5; x=3;
if (z=(y==0)) { x=5; } x=3; Первая часть условного оператора может быть одиночным оператором или блоком и следует сразу за условием.
(z=(y==0)) (z=FALSE) FALSE и z=0 Вычисляем условие.
x=3 Так как условный оператор не имеет второй части, то управление переходит к следующему оператору.

Управление 1.6

вначале y=1 if (x=z=y); x=3;
if (x=z=y) { ; } x=3; Первая часть условного оператора есть пустой оператор.
( x = ( z = y ) ) ( x = ( z = 1) ) (x=1) и z=1 TRUE и x=1 Вычисляем условие.
x=3 Условие - ИСТИНА, поэтому выполняется первая часть оператора, но поскольку там пустой оператор, то выполняется оператор, следующий за условным.


Управление 2.1

вначале x=0, y=0 while( y<10 ) ++y; x += y;
while( y<10 ) ++y; Начнем с изучения факторов, управляющих выполнением оператора while.
( y<10 ) Условие продолжения цикла. Тело цикла будет выполняться до тех пор, пока условие продолжения цикла - ИСТИНА.
( y>=10 ) Условие выхода их цикла. Это отрицание условия продолжения цикла, и в случае нормального окончания цикла оно имеет значение ИСТИНА.
y=0 Начальное значение управляющей переменной - это значение, которое имеет такая переменная при первом выполнении тела цикла.
++y Изменение управляющей переменной при выполнении тела цикла.
y=0 до 9 в цикле При первом выполнении цикла y=0. Каждый раз в теле цикла значение y увеличивается на 1.
y=10 на выходе Когда y=10, условие продолжения цикла становится ложным и выполнение цикла прекращается.
x+=y x=0+10 x=10 Управление передается оператору, следующему за телом цикла.

Управление 2.2

вначале x=0, y=0 while( y<10 ) x += ++y;
(y<10) Условие продолжения цикла.
(y>=10) Условие выхода их цикла.
y=0 Начальное значение управляющей переменной.
++y Изменение в цикле управляющей переменной.
y=0 до 9 в цикле Так же, как и в предыдущей задаче.
x+=++y К x в цикле после его увеличения на 1 прибавляется значение y.
x=55 y=10 на выходе Сумма всех целых от 1 до 10.

Управление 2.3

вначале y=1 while( y<10 ) { x = y++; z = ++y; }
(y<10) Условие продолжения цикла.
(y>=10) Условие выхода их цикла.
y=1 Начальное значение управляющей переменной.
y++, ++y Изменение в цикле управляющей переменной.
y=1,3,5,7,9 в цикле В первый момент в цикле y=1, и при каждом выполнении цикла оно увеличивается на 2.
x=1,3,5,7,9 В цикле до того, как y увеличивается на 1, его значение присваивается x.
z=3,5,7,9,11 В цикле после того, как y увеличивается на 2, его значение присваивается z.
y=11 на выходе

Управление 2.4

for ( y=1; y<10; y++ ) x=y; В операторе for собраны все выражения, определяющие выполнение цикла.
y<10 Условие продолжения цикла.
y>=10 Условие выхода их цикла.
y=1 Начальное значение.
y++ Изменение.
y=1 до 9 в цикле x=1 до 9 y=10 на выходе В теле цикла x принимает значение y.
<


Управление 2.5

for ( y=1; (x=y)<10; y++ );
y<10 Условие продолжения цикла.
y>=10 Условие выхода их цикла.
y=1 Начальное значение.
y++ Изменение.
y=1 до 9 в цикле x=1 до 9 y=10 на выходе Как раз перед вычислением условия продолжения цикла x принимает значение y. Заметим, что условие продолжения цикла вычисляется на один раз больше, чем выполняется тело.
Управление 2.6

for ( x=0, y=1000; y>1; x++, y/=10 ) PRINT2(d,x,y);
y>1 Условие продолжения цикла.
y<=1 Условие выхода их цикла.
y=1000 Начальное значение.
y/=10 Изменение.
y=1000,100 в цикле x=0,1,2 в цикле Перед началом цикла x=0. После выполнения тела цикла, но перед вычислением условия продолжения цикла x увеличивается. (Оператор PRINT2 находится в теле цикла.)
y=1 на выходе x=1 на выходе





Содержание раздела