ВОРОТА | ВОРОТА КС 2021 | Набор 1 | Вопрос 47
Рассмотрим следующую программу ANSI C.
#includeint main() { int i, j, count; count=0; i=0; for (j=-3; j= 0) && (i++)) count = count + j; } count = count +i; printf(“%d”, count); return 0; }
Какой из следующих вариантов правильный?
(A) Программа не будет успешно скомпилирована
(B) Программа успешно скомпилируется и выведет 10 при выполнении
(C) Программа успешно скомпилируется и выведет 8 при выполнении
(D) Программа успешно скомпилируется и выведет 13 при выполнении
Ответ: (В)
Объяснение: Изначально i=0, count=0 и цикл for выполняется от j= -3 до j=3.
Если условие внутри цикла for будет выполняться, когда j>=0 и i не равно нулю,
Таким образом, для j = -3, -2, -1 он не войдет в условие if, так как j меньше 0.
Когда j = 0, начальное значение i также равно 0, поэтому, если условие не будет выполнено, но i++ увеличит значение i после проверки условия if. так что теперь я =1.
Когда j = 1, значение i равно 1, поэтому он войдет в условие if, а значение count будет 0 + 1 = 1, а i++ увеличит значение i после проверки условия if. так что теперь я = 2.
Когда j = 2, значение i равно 2, поэтому он войдет в условие if, а значение count будет 1 + 2 = 3, а i++ увеличит значение i после проверки условия if. так что теперь я =3.
Когда j=3, значение i равно 3, поэтому он войдет в условие if, а значение count будет 3+3 =6, а i++ увеличит значение i после проверки условия if. так что теперь я =4.
После запуска цикла for значение переменной count равно 6, а значение i равно 4.
Таким образом, count=count+i будет 6+4=10.
Следовательно, программа будет успешно скомпилирована и выдаст 10 при выполнении: https://ide.geeksforgeeks.org/lyJ79mDqil.
Викторина этого вопроса