Программа делает лишний вывод строки на экран - C (СИ)

Формулировка задачи:

Непонятно почему при вводе символа q, выводится Step 3 дважды? Вот пример кода:
#include <stdio.h>
#include <locale.h>
#include <ctype.h>
#include <stdbool.h>
 
int main(void)
{
    setlocale(LC_ALL, "rus");
    setlocale(LC_NUMERIC, "C");
    char ch;
    while ((ch = getchar()) != '#')
    {
        if (ch != '\n')
            printf("Step 1\n");
 
        if (ch == 'q')
            printf("Step 2\n");
 
        if (ch == 'b')
            break;
 
        if (ch != 'c')
            printf("Step 3\n");
    }
    printf("Done!\n");
 
    return 0;
}
Скрин:

Код к задаче: «Программа делает лишний вывод строки на экран - C (СИ)»

textual
if (ch != 'c' && ch != '\n')
            printf("Step 3\n");

9   голосов, оценка 4.222 из 5


СОХРАНИТЬ ССЫЛКУ