Решение: Обработка массива обменами
В программе используется одномерный целочисленный массив $A$ с индексами от 0 до 9. Значения элементов равны 5, 6, 4, 7, 3, 2, 0, 1, 9, 8 соответственно, то есть $A[0]=5$, $A[1]=6$ и так далее. Определите значение переменной $c$ после выполнения следующего фрагмента программы:
$c := 0$
для $i$ от 0 до 8
если $A[i] < A[9]$, то
$c := c + 1$
$t := A[i]$
$A[i] := A[9]$
$A[9] := t$
всё
Решение по шагам
5 шаговВ начале $A[9]=8$ и $c=0$. При $i=0$: $5<8$, поэтому выполняется обмен, а $c$ становится равным 1. Теперь $A[9]=5$.
$$c=1$$При $i=1$: $6<5$ — неверно. При $i=2$: $4<5$ — верно, выполняется обмен, и $c=2$. Теперь $A[9]=4$.
$$c=2$$При $i=3$: $7<4$ — неверно. При $i=4$: $3<4$ — верно, поэтому $c=3$ и $A[9]=3$.
$$c=3$$При $i=5$: $2<3$ — верно, поэтому $c=4$ и $A[9]=2$. При $i=6$: $0<2$ — верно, поэтому $c=5$ и $A[9]=0$.
$$c=5$$При $i=7$: $1<0$ — неверно. При $i=8$: $9<0$ — неверно. Больше значение $c$ не изменяется.
$$c=5$$Где здесь ошибаются
Сравнивать элементы с первоначальным значением $A[9]=8$, хотя после каждого обмена значение $A[9]$ изменяется.
Учитывать только количество исходных элементов, меньших 8.
Забыть, что цикл выполняется для индексов от 0 до 8 включительно.