Возможен ли вывод следующего фрагмента программы?

for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);

Ответ: ми

Может кто-нибудь объяснить этот кусок кода?(MCQ Вопрос)

2 ответа

Этот вопрос можно решить, исключив неправильный ответ. Этот фрагмент печатает символ и выходит из цикла, если символ 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);

Вот демо.

Надеюсь, поможет!!

Другие вопросы по тегам