【问题标题】:Possible output of the following program fragment?以下程序片段的可能输出?
【发布时间】:2014-10-30 12:54:38
【问题描述】:
for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);

答案是:mi

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

【问题讨论】:

    标签: c++ c getchar putchar


    【解决方案1】:

    这个问题可以通过排除不正确的答案来解决。如果字符是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 */
    

    【讨论】:

    • 但是这个问题中没有提到输入?我已经照原样复制了这个问题。
    • @Abdul ,可以像 GyaptiJain 那样确定输入。
    【解决方案2】:
    for(i=getchar();; i=getchar())
    if(i=='x')
    break;
    else putchar(i);
    

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

    • 如果字符是“x”,则中断循环。
    • 其他打印字符。

    like, 如果输入是

    sparx

    输出将是

    晶石

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

    这里是Demo

    希望对你有帮助!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2023-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多