c - 在C中的最后一个位置反转一个带有0的数字

标签 c visual-studio-2017

我有这段简单的整数反转代码。但是我现在需要为另一个项目反转前导 0 的数字。例如,这个程序可以将 32 转换为 23,但它也可以将 3200 转换为 23。我需要 0 才能保持领先地位。但是我已经看到可以完成这项工作的位级别的二进制操作,我正在寻找一种方法(如果有的话)来完成它而不使用按位操作并保持简单。

#include <stdio.h>

int main()
{
    int a, mod = 0, reverse = 0;
    printf("Enter a number:");
    scanf_s("%d", &a);
    while(a!=0)
    {
       mod=a%10;
       reverse = reverse * 10 + mod;
       a=a/10;
    }
       printf("%d", reverse);
       return 0;
}

最佳答案

读取整数时用"%n"记录扫描偏移量。

使用数字的文字宽度来控制反转打印

int main() {
  int a, mod = 0, reverse = 0;
  printf("Enter a number:");
  int n1, n2;
  scanf(" %n%d%n", &n1, &a, &n2);
  int width = n2 - n1;
  while (width-- > 0) {
    mod = a % 10;
    reverse = reverse * 10 + mod;
    a = a / 10;
  }
  printf("%0*d", n2-n1, reverse);
  return 0;
}

例子

Enter a number:00123
32100

Enter a number:12300
00321

其他未处理的注意事项。

  • 符号字符 '+''-'

  • 输入超出int范围

  • int 范围外的反转数字。

  • 非数字输入。

关于c - 在C中的最后一个位置反转一个带有0的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53099915/

相关文章:

c - 为什么返回指针不能赋值给指针,数组其实不是指针?

c - 如何解压使用fusecompress/lzo 压缩的文件?

azure - 无法从同一计算机上的 docker 容器连接到 Azure 存储模拟器

c++ - Utf-8 编码 visual studios 十进制值

.net - 如何在 VS 2017.3 中引用 .NET 4.6 NuGet 包时隐藏 .NET Core 兼容性警告

添加到 ASP.NET Core 元素中的 site.css 文件时,CSS 不起作用。但在添加为内联时有效

C、getc/fgetc - 终端 null

c - 操作控制寄存器

c - 如何使用变量设置以 fprintf '%s' 格式输出的字符数?

python - 如何将 Python 添加到 Visual Studio 2017