Переменная a до выполнения условного оператора имеет значение 20. Чтобы из 20 получить 15, нужно вычесть 5, т.е. должен выполниться оператор присваивания, указанный после then, что возможно при истинности логического выражения if (a<1) ... (a>b). Отношение a<1 при a=20 ложно, отношение a>b при a=20 и b=5 истинно. Логическая операция, результатом которой является "истинно" в случае, когда один операнд имеет значение "ложно", а второй "истинно" - это операция дизъюнкции ("логическое ИЛИ"). В языке Паскаль она записывается как "or" ответ: or
В языке С/С++ любое ненулевое значение считается истинным. Цикл с заголовком while (a(x)) выполнятся до тех пор. пока a(x) ненулевое, следовательно, при выходе из цикла a(x)=0. Первоначально х=1 и если a(1) окажется равным нулю, то тело цикла не выполнится ни разу. В этом случае у будет равен начальному значению, т.е. у=1. Если же а(1) не равняется нулю, то будет выполняться тело цикла. При у<0 переменная х получает значение 2, у получает значение 10. Мы должны полагать что а(2) ложно и тогда произойдет выход из цикла. Если же это не так, то тело цикла будет выполняться повторно. Ветка при y>=0 дает присваивание х=1, а мы рассматриваем вариант, когда такое значение не приводит к выходу из цикла, следовательно у=20 никогда не будет последним присваиванием значения у. Тогда возможен только вариант ответа 1 (у=1 или 10) ответ: Вариант 1
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку