你的第二个输入b其实没有被读取
参见以下解释,来自 http://bbs.csdn.net/topics/380055507
scanf()和getchar()函数是从输入流缓冲区 中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(\n)而结束的,这个\n会一起读入输入流缓冲区的,所以第一次接受输入时取走字 符后会留下字符\n,这样第二次的读入函数直接从缓冲区中把\n取走了,显然读取成功了,所以不会再从终端读取!因此后面只要加上fflush(stdin)函数释放缓冲区数据就可以了.
解决办法:可以在scanf()函数之 后加个fflush(stdin);,还有加getch(); getchar();也可以
把scanf("%c\n",&b);改成scanf(" %c",&b);——注意在%前加一个空格。scanf("%c",&a);也改成scanf(" %c",&a);。
当成int类型了,强制转换一下
~~~~~~~~