这个程序的过程是这样的,输入的是abcde#
先对c进行赋值,运行了一次getchar(),得到c=a的结果,之后,运行一次getchar(),因为判断循环条件那里还有一个getchar(),这时读的是b,判断是不是等于#,b不等于#,于是运行putchar(c),因为for(c=getchar();getchar()!=' #';c=getchar())这个语句后面的一个c=getchar()会又运行一次(想想for(i=0;i<n;I++),一样的道理,循环条件成立的话,i++要运行的,所以这里,后面一个c=getchar()又要运行一遍),这时,c=getchar(),c的值读下一个,是c=c,
再进行循环条件判断,所以又运行了一下getchar(),顺着往下读取了d,d不等于#,所以输出c的值,输出c,执行c=getchar(),c=e,
再进行循环条件判断,执行getchar()函数,读入了#,因为#=#,所以退出循环。
所以总的输出是ac,没有e。这是没有空格的情况。
在有空格的情况下,是这样的,首先,那个#两边应该是""而不是',因为空格加#是两个字符,不能用'来括。之后,每次作比较的是#这个字符,因为没有任何一个字符可以和“空格#“相等,所以这个循环将一直运行下去,不信你按我说的做,你改成有空格的,然后呢,输入abcde#fhi,它会输出acefh,你输入的越多,它输出的越多,不会有停止的。
明白了没?
追问嗯,我去试了,终于明白了!!哈哈,谢谢了。分已经给人家了不好意思。