估计是前面用scanf输入,这是键盘缓冲区中还有上次输入剩下的 回车符。第一个getchar();吃掉这个多余的回车符,第二个 ch=getchar();才是获取输入的字符。把第一个 getchar() 换成 rewind(stdin) ; 程序逻辑更清晰。rewind 重置流文件指针到开始位置. rewind(stdin)是作用是重置标准输入, 不管缓冲区里有没有内容,这条语句不会引起逻辑错误。