Как инвертировать число в C, все еще включая нули? - PullRequest
0 голосов
/ 16 октября 2018

Я хочу изменить int, поэтому порядок меняется с «первого на последний» на «последний на первый» (например, 123 становится 321, 100 становится 001, 0003 становится3000 и т.д ..)

У меня есть следующий код, но в зависимости от того, как он работает, любые начальные или конечные нули до или после процесса полностью пропускаются.(0003 становится 3)

int reverseNumber(int number);

main()
{
 int s = 123000000;
 printf("%d\n", reverseNumber(s));
}

int reverseNumber(int number) {
  int reversedNumber = 0, remainder;
  while(number != 0)
      {
          remainder = number%10;
          reversedNumber = reversedNumber*10 + remainder;
          number /= 10;
      }
  return reversedNumber;
}

Как я могу изменить код, чтобы он работал, не пропуская нули?

1 Ответ

0 голосов
/ 16 октября 2018

Поскольку начальные нули не имеют значения, вам нужно сообщить своей функции количество цифр или количество начальных нулей, предоставляемые значения имеют.

Количество начальных нулей проще:

unsigned int reverseNumber(unsigned int number, unsigned int leadingzeroes)
{
    unsigned int reversedNumber = 0;

    while (number) {
        reversednumber = 10*reversednumber + number%10;
        number /= 10;
    }

    while (leadingzeroes-->0) {
        reversednumber = 10*reversednumber;
    }

    return reversedNumber;
}
...