回车本身也是一个字符,你对ASCII码不熟呀!getchar得到的是键盘流字符,你须要清除一下键盘缓冲区:如用fflush(stdin); rewind(stdin);等
你输入了第一个字符‘e’符合while的条件 ch>'c'&&ch!='q'所以程序输出"^^&&&\n"第二个换行符‘\n'被getchar( )吃掉程序有输出一次"^^&&&\n"如果你输入'a'~'c'程序会返回输入值