Отображение целых чисел на Языке Си
Пытаюсь написать программу на Си, которая в диапазоне чисел от 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 шт):
Вы проверяете, есть ли 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;
}
}
И еще — не пренебрегайте форматированием кода; ваш исходный код очень трудно читать. Тем более что с современными редакторами обычно о форматировании отдельно и заботиться не приходится; удивительно, как у вас такое получилось...