@Froman

Как ввести целое число и определить, верно ли, что все его цифры четные (язык Си)?

Добрый день.
Попалась задачка...Надо ввести целое число, а затем определить чётность и нечётность всех цифр.
Пробовал вот так:

int main(void)
{int a;
scanf("%d", &a);
while(a>0)
{
   if((a%10)%2==0)
    printf("YES ");
   else
    printf("NO ");
   a/=10;
}
return 0;
}


Увы, код показывает чётность и нечётность каждой цифры, однако мне необходимо, чтобы он выводил"NO" даже в том случае, если в числе есть хоть одна нечётная цифра (с выводом "YES" аналогичная история). Не могли вы подсказать, в чём ошибка? Чувствую, что я неправильно воспользовался операторами и где-то тут накосячил...
  • Вопрос задан
  • 2487 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
int isAllDigitsEven(int x) {
  while (x > 0) {
    if (x % 2) {
      return 0;
    }
    x /= 10;
  }
  return 1;
}

int main(void) {
  int a;
  scanf("%d", &a);
  if (isAllDigitsEven(a)) {
    printf("YES\n");
  } else {
    printf("NO\n");
  }
  return 0;
}
Ответ написан
@res2001
Developer, ex-admin
В цикле надо устанавливать флаг четности/нечетности, а сам вывод делать после цикла в зависимости от установленного флага. При этом можно проверять только на не четность. Например значение флага по умолчанию 1 (т.е. все числа четные), если хоть одно число не четное, то присваиваем флагу 0 и завершаем цикл (break), после цикла анализируем флаг и выводим YES или NO в зависимости от его значения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы