Отображение целых чисел на Языке Си

Пытаюсь написать программу на Си, которая в диапазоне чисел от 1 до 999, отображает только целые числа в которых содержится 0. Текущий код отображает числа, но плюс еще отображает числа от 1 до 9 которые отображать не нужно.

int main()
{
    int a;

    for (a = 1; a <= 999; a++)
    {
        if (a % 10 == 0)
        {
            printf("%d\n", a);
        }
        else if ((a / 10) % 10 == 0)
        {
            printf("%d\n", a);
        }
        else
        {
        }
    }

    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Вы проверяете, есть ли 0 в конце или во втором разряде, и все. Но во втором разряде у числа, например, 0005 что стоит? Ноль... Вам надо либо ограничить цикл только числами, у которых есть этот самый второй разряд (for a = 10; ...), либо просто проверять наличие 0 везде, наподобие

for(int a = 1; a <= 999; a++)
{
    int n = a;
    while(n)
    {
        if (n%10 == 0)
        {
            printf("%d\n", a);
            break;
        }
        n /= 10;
    }
}

И еще — не пренебрегайте форматированием кода; ваш исходный код очень трудно читать. Тем более что с современными редакторами обычно о форматировании отдельно и заботиться не приходится; удивительно, как у вас такое получилось...

→ Ссылка