输入12345#后,写出下列程序的输出结果。
void main()
{ char c;
for(c=getchar(); getchar()!=’#’; c=getchar())
putchar(c);
}
for(c=getchar(); getchar()!=’#’; c=getchar())
输入12345#后,首先进入for循环要执行第一个c=getchar()给c赋初始值,即为第一个字符'1',c=‘1’,而后进行第二个表达式getchar()!='#'的判断,此时getchar()得到的字符是'2'满足条件但没给c赋值,c还是等于'1',后执行putchar(c),后执行下一次循环,先执行第三个表达式c=getchar(),给c赋值,此时c='3',然后再进行第二个表达式getchar()!='#'的判断,此时getchar()得到的是'4',满足循环执行条件执行putchar(c),后再执行第三个表达式c=getchar(),此时c='5', 再执行第二个表达式getchar()!='#',这时的getchar()已经为'#'号,所以不满足循环执行条件了,不再执行putchar(c),尽管此时c中的值是'5'也不会输出了
大神太感谢了。。我觉得你的答案是对的,但为撒老师给的答案是1,3
追答不好意思,发现我的思路有问题。请误采纳。
追问额。。。那答案是神马。。。。
追答不好意思,发现我的思路有问题。
13
getchar每次只接收一个字符,放在缓存中。如果再用getchar接收一次,原来的就会被覆盖掉。
for(c=getchar(); getchar()!=’#’; c=getchar())我们把第一个c=getchar()称为1getchar,第二个c=getchar()称为2getchar。
第一次进入循环,1getchar接收1,然后判断,执行getchar()!=’#’此时这里的getchar()又接收了第二个第符2,也就是‘2’!=‘#’成立;然后进入循环,输出c;然后再进行2getchar,接收3,然后再执行getchar()!=’#’此时这里的getchar()又接收了字符4,也就是‘4’!=‘#’成立;然后输出c,注意,因为在执行getchar()!=’#’;时并没有付值给c所以c中的内容仍然为3,所以输出c为3,然后2getchar再接执行,接收5,然后执行getchar()!=’#’此时这里的getchar()又接收了字符#,也就是‘#’!=‘#’不成立,所以循环绍束,不输出5
答案是1,3.不会做。。。。