Member 12624805 Ответов: 2

Вопрос о выполнении массива, который меня смутил


Предположим, что нам дан следующий код:

int[] myArray = {4, 5, 6, 1, 2, 3, 21, 20};
for (int i = 0; i < 5; i++) {
myArray[i] = myArray[длина -1-i];
}

Что будет содержать массив myArray после его выполнения?

Что я уже пробовал:

Я не уверен, что означает длина в этом вопросе. Если длина означает 5, я думаю, что ответ таков{0, -1, -2, 3, 2, 1, -17, -16}. Если длина означает, сколько значений в этом массиве, то она должна быть 8, ответ должен быть {3, 2, 1, 6, 5, 4, -14, -13}

Matt T Heffron

Вы правы, вопрос плохо сформулирован.
Вы мог ответьте, что код не будет компилироваться, потому что length не было объявлено.
Кажется вероятнее всего тот length означает длину myArray (то есть 8)
Использование ответа, который вы дали выше, вероятно, было бы лучшей стратегией.
Это показывает критическое мышление.

2 Ответов

Рейтинг:
0

OriginalGriff

Запустите его через отладчик, и все станет ясно.
i изменяется с каждым проходом через петлю: 0, 1, 2, 3, 4
Таким образом, элемент, в который вы помещаете значение, начинается с первого и переходит ко второму, и так далее.
Значение также меняется, но оно начинается с:

myArray[length -1 - 0]

А потом использует
myArray[length -1 - 1]
И так далее.
Таким образом, если длина равна 5 (что неверно для myArray - она должна быть 8) , то индексы, которые вы загружаете, равны 4, 3, 2, 1, 0
Таким образом, элемент 0 становится элементом 4: 2
Элемент 1 становится элементом 3: 1
Элемент 2 становится элементом 2: 6
Элемент 3 становится элементом 1 (который изменился): 1
Элемент 4 становится элементом 0 (который изменился): 2

Серьезно: используйте отладчик, и вы поймете, что я имею в виду!


Рейтинг:
0

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Выполняйте программу построчно и проверяйте переменные по мере выполнения программы

int tmp;
int[] myArray = {4, 5, 6, 1, 2, 3, 21, 20};
for (int i = 0; i < 5; i++) {
    tmp= length -1 - i;
    myArray[i] = myArray[length -1 - i];
}

Tmp просто покажет вам, где он получает значение в следующей строке.