for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);
答案是:mi
有人可以解释这段代码吗?(MCQ问题)
答案 0 :(得分:4)
这个问题可以通过消除错误答案来解决。如果字符是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 */
答案 1 :(得分:0)
for(i=getchar();; i=getchar())
if(i=='x')
break;
else putchar(i);
您的代码将继续运行,直至遇到“x'所以无论你给出什么输入,它都将逐字逐句地读取,因为你使用了getchar()函数..
喜欢,如果输入是
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。
希望它有所帮助!!