【问题标题】:How do invert a number in C while still including zeroes?如何在 C 中反转数字同时仍然包含零?
【发布时间】:2018-10-15 21:35:19
【问题描述】:

我想反转 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;
}

如何更改代码以使其在不遗漏零的情况下正常工作?

【问题讨论】:

  • 您需要除int 之外的其他类型来表示前导零,最明显的是char *
  • 我已尝试回答链接问题,这是我从中派生代码的地方。我想在保持零的同时反转一个数字。
  • @Sneftel,您链接的问题没有解决前导零。
  • 你想要的都是不可能的。数字前面的零或任何其他数量的零不会改变其值。 000001 等于 1。

标签: c int reverse


【解决方案1】:

因为前导零没有值,您需要告诉函数位数或前导零的数量,提供的值有。

前导零的数量更容易:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2012-05-15
    • 2012-09-07
    • 2011-07-14
    • 1970-01-01
    • 2011-01-25
    • 2016-02-07
    相关资源
    最近更新 更多