我要反转int,以便顺序从“第一个到最后一个”更改为“最后一个到第一个”(例如,123变为321100变为0010003变为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;
}


如何更改代码,使其在不省略零的情况下起作用?

最佳答案

由于前导零没有值,因此您需要告诉函数提供的值具有的位数或前导零的数目。

前导零的数目更容易:

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;
}

关于c - 如何在C中仍然包含零的情况下反转数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52825076/

10-09 05:31