繁体   English   中英

以下程序片段的可能输出?

[英]Possible output of the following program fragment?

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

答案是:mi

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

这个问题可以通过消除错误答案来解决。 如果字符是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 */
for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);

您的代码将继续运行,直到遇到“x”,因此无论您提供什么输入,它都会在您使用 getchar() 函数时逐个字符地读取。

  • 如果字符是'x',则中断循环。
  • 否则打印字符。

比如,如果输入是

斯帕克斯

输出将是

晶石

for 循环

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

for 循环的语法和结构是

for ( variable initialization; condition; variable update )

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

只有当它遇到'x'作为语句时,循环才会终止

if(i=='x')
break;

否则它将继续打印字符。

else putchar(i);

这是演示

希望能帮助到你!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM