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

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

Ответ: ми

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

-5

Решение

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

Другие решения

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);

Здесь демонстрация.

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

0

По вопросам рекламы [email protected]