2011-gre-cs-practice-book.pdf/Q27
Материал из DISCOPAL
Вопрос: Q27-08c765
Рассмотрим два фрагмента программы на языке Java:
Фрагмент 1:
public void P1 (int x, int y, int z) { if ((x != 0) && ((y / x) == z)) z = z + 1; System.out.println("x = " + x + " y = " + y + " z = " + z); }
Фрагмент 2:
public void P2 (int x, int y, int z) { if (((y / x) == z) && (x != 0)) z = z + 1; System.out.println("x = " + x + " y = " + y + " z = " + z); }
Что из следующего верно?
Ответы
- Для всех x, y и z P1(x, y, z) и P2(x, y, z) ведут себя одинаково.
- Для всех x и y существует z такой, что P1(x, y, z) и P2(x, y, z) ведут себя по-разному.
- Для всех x и z существует y такой, что P1(x, y, z) и P2(x, y, z) ведут себя по-разному.
- Правильный ответ: Для всех y и z существует x такой, что P1(x, y, z) и P2(x, y, z) ведут себя по-разному.
- Для всех x, y и z P1(x, y, z) и P2(x, y, z) ведут себя по-разному.
Объяснение
Исходники — вопрос 27 на 28 странице книги «2011-gre-cs-practice-book.pdf»
Приведём такой x: x = 0. Тогда в первом случае условие if не выполнится, но программа продолжит работать, пропустив блок if. Но во втором случае срабатывает исключение и программа не сработает
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.