可能输出以下程序片段?

时间:2014-10-30 12:54:39

标签: c++ c getchar putchar

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

答案是:mi

有人可以解释这段代码吗?(MCQ问题)

2 个答案:

答案 0 :(得分:4)

这个问题可以通过消除错误答案来解决。如果字符是x,则此片段打印字符并退出循环。因此程序不会输出x

任何不包含x的输出字符串都是可能的。在您的MCQ中,可能mix的唯一选项,所有其他选项在字符串中的某处包含x,使得答案不正确。

如果输入是“mix ....”,则输出为“mi”。下面是你展开的循环。

getchar() -> m -> else -> print m  /* First getchar */
getchar() -> i -> else -> print i  /* Second getchar */
getchar() -> x -> if -> break      /* Second getchar */

答案 1 :(得分:0)

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

您的代码将继续运行,直至遇到“x'所以无论你给出什么输入,它都将逐字逐句地读取,因为你使用了getchar()函数..

  • 如果角色是' x'然后打破循环。
  • 其他打印字符。

喜欢,如果输入是

  

SPARX

输出

  

晶石

for循环

 for(i=getchar();; i=getchar())

和for循环的语法和结构是

for ( variable initialization; condition; variable update )

因为i = getchar()会读取char' i'没关系。接下来没有条件,最后更新你再次阅读一个角色,所以它是一个无限循环。

Loop仅在遇到'x'作为语句

时才会终止
if(i=='x')
break;

否则它将继续打印角色。

else putchar(i);

这是Demo

希望它有所帮助!!