为啥default输出两次? default不是无匹配内容才默认输出吗?为啥还跟着其他字符输出一遍?
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
//请今后要用
char c;
scanf("%c",&c);
//时,都改为
char s[2];
char c;
scanf("%1s",s);
c=s[0];
//自动跳过一个或多个空格或Tab字符或回车换行,读取下一个字符。
因为你的while每次都执行了两遍,第一遍a是你输入的那个值,第二遍a是你按下的那个回车键