if else 多重选择问题

#include
int main(void) {
char ch;
while ((ch=getchar()) != '#')
{
if (ch != '\n')
printf("step1\n");

    if (ch != 'c')
    {
     if (ch == 'b')
        break;

    else if (ch != '\n' && ch!='h')
        printf("step2\n");

    else if (ch == 'h')
         printf("step3\n");

    else if (ch != '\n' && ch!='h')  //此处加上else后,输入非 h 字符不显示printf的内容
                                                   //去掉后就可以打印 step3  
        printf("step3\n");

    }

}
printf("Done!");
return 0;

}
萌新求教 感激不尽!!!

第二个else-if 和第四个是不是重复了?