为什么我输入 a、c、d时,else语句为什么每次都输出,而输入b时,直接退出循环呢

#include <stdio.h>
int main(void)
{
char ch;

while ((ch=getchar()) != '#')
{
    if (ch == 'a')
        printf("step a\n");
    else if (ch == 'b')
        break;
    else if (ch == 'c')
        printf("step c\n");
    else if (ch == 'd')
        printf("step d\n");
    else 
    {
        printf("step 1\n");
        printf("step 2\n");
    }
}
printf("Done!\n");

return 0;

}

题主输入a,c,d的时候有换行吧,getchar()是会把换行也读入的哦,而换行不等于a,c,d这几个字符,只能在else那里输出了
代码中有一句就是输入的字符是b就退出循环

else if (ch == 'b')
        break;