вернуться
Информатика

Вопрос 19

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 4, 7, 3, 8, 5, 0, 1, 2, 9, 6 соответственно, т.е. A[0] = 4, A[1] = 7 и т.д. Определите значение переменной c после выполнения следующего фрагмента этой программы (записанного ниже на пяти языках программирования).

 

 

Решение №1

Рассмотрим внимательно, что происходит в программе. Вначале создаётся переменная c, равная 0. Затем мы задаём цикл по i от 1 до 9. То есть, будет 9 итераций, при этом переменная i будет меняться от i=1, затем будет i=2, затем i=3, ..., i=9.

Давайте запишем исходный массив в виде таблицы:

iA[i]
04
17
23
38
45
50
61
72
89
96

Посмотрим внимательно, что происходит в цикле.

  • Условие if A[i] < A[0]: означает, что i-ый элемент массива меньше нулевого. Так как i меняется от 1 до 10, то, фактически, с A[0] будет последовательно сравниваться каждый элемент.
  • Если условие не выполнено, то мы просто переходим к следующей итерации. К примеру, при i=1:
    • A[1]=7, A[0]=4. Условие A[i]=A[1]=7<A[0]=4 не выполняется.
    • Значит, мы просто переходим к следующей итерации i=2.
  • Если же условие выполняется, то происходят следующие действия:
    • Переменная c увеличивается на 1: c=c+1. То есть, при первом выполнении условия переменная c станет равной 1. При втором — 2. И так далее.
    • То есть, фактически в переменной c будет количество раз, когда условие было выполнено.
    • Дальше, происходит какая-то магия:
      • В переменную t мы записываем значение A[i].
      • В переменную A[i] мы записываем значение A[0].
      • В переменную A[0] мы записываем значение t, то есть, фактически A[i] на момент начала итерации.
      • То есть, фактически, в переменной A[i] оказывается A[0], а в переменной A[0] — A[i].
      • То есть, они просто меняются местами.
    • То есть, резюмируя: если условие выполняется и пробегаемое число меньше A[0], то в A[0] мы записываем это число.
  • Давайте внимательно посмотрим, что будет происходить по шагам:
    • A[1]=7 не меньше A[0]=4.
    • A[2]=3 меньше A[0]=4. Значит, c станет: c=1, а A[0] станет 3.
    • A[3]=8 не меньше A[0]=3.
    • A[4]=5 не меньше A[0]=3.
    • A[5]=0 меньше A[0]=3. Значит, с станет равным 2.
    • Дальше смотреть бессмысленно: все последующие элементы явно больше нуля.

Ответ: c=2 в конце программы.

 

Евгений Смирнов
Эксперт в IT, учитель информатики