for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);
答案是:mi
有人可以解释这段代码吗?(MCQ 问题)
这个问题可以通过排除不正确的答案来解决。如果字符是 ,则此片段打印字符并退出循环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() 函数一样逐个字符地读取..
比如,如果输入是
斯帕克斯
输出将是
晶石
for 循环
for(i=getchar();; i=getchar())
for 循环的语法和结构是
for ( variable initialization; condition; variable update )
因为 i = getchar() 将读取 char 'i' 没关系。接下来没有条件,最后更新你再次读取一个字符,所以它是一个无限循环。
'x'
循环只会在遇到as 语句时才会终止
if(i=='x')
break;
否则它将继续打印字符。
else putchar(i);
这是演示。
希望能帮助到你!!