这是因为scanf()和getchar()函数是从输入流缓冲区中读取值的,而并非从键盘(也就是终端)缓冲区读取。
而读取时遇到回车(\n)而结束的,这个\n会一起读入输入流缓冲区的,所以第一次scanf接受输入时取走字符后会留下字符\n,这样第二次的读入函数getchar()直接从缓冲区中把\n取走了.
否则,其后的getchar就会读入这个回车符。
可以注释掉这个getchar()看看执行效果,加深理解。
详细的说明还可以参考这里:http://blog.csdn.net/hao5743/article/details/6939661
请采纳
scanf()输入完不是要回车吗,如果没有这句话,回车符就会被下面的getchar()接收,显然这是不应该的,所以就多写一个getchar()接收这个回车符。