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. Но во втором случае срабатывает исключение и программа не сработает

[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.