for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);
Ответ: ми
Может кто-нибудь объяснить этот кусок кода? (MCQ Вопрос)
Этот вопрос можно решить, исключив неправильный ответ. Этот фрагмент печатает символ и выходит из цикла, если символ x
, Таким образом, программа не будет выводить x
,
Любая выходная строка, которая не содержит x
возможно. Возможно, в вашем MCQ mi
это единственный вариант с x
и все остальные параметры содержат x
где-то в строке делает их неправильный ответ.
Если ввод «mix ….», вывод будет «mi». Ниже ваша петля развернута.
getchar() -> m -> else -> print m /* First getchar */
getchar() -> i -> else -> print i /* Second getchar */
getchar() -> x -> if -> break /* Second getchar */
for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);
ваш код будет продолжать работать до тех пор, пока не встретит ‘x’, поэтому независимо от того, что вы вводите, он будет читать символ за символом, как вы использовали функцию getchar ().
как, если вход
Sparx
выход будет
лонжерон
Цикл для
for(i=getchar();; i=getchar())
и синтаксис и структура цикла for
for ( variable initialization; condition; variable update )
так как i = getchar () будет читать char ‘i’, то все в порядке. Далее нет условия и окончательного обновления вы снова читаете символ, так что это бесконечный цикл.
Цикл прекратится только тогда, когда он столкнется 'x'
как утверждение
if(i=='x')
break;
В противном случае он будет продолжать печатать символ.
else putchar(i);
Здесь демонстрация.
Надеюсь, поможет!!